Yazar | Genius Programı YUAN
Sorumlu Editör | Yu Yan
Baş resmi | Oriental IC'den indirilen CSDN
Üretildi | CSDN (ID: CSDNnews)
Önsöz
Kız arkadaş, "Yüksek bir sayı elde etmek çok zor. Son zamanlarda çok çalıştığımı görünce, beni mutlu etmek için bana bir hediye verebilirsin. Tahmin et ne istiyorum" dedi.
Kitaplardan ayakkabılara, elektronik ürünlere ve nihayet günlük ihtiyaçlara kadar uzun bir süre düşündüm, her şeyde eksiklik olmadığını hissettim ve sonra ona: "Ne vermek istiyorsan onu vereceğim" dedim.
Tahmin etmemde ısrar etti: "Hayır, bir hediye söylemelisin ve bu hediyeyi kendin yapmalısın."
Bu yüzden ciddileştim, telefonumu aldım ve birkaç dakikalığına Taobao'da alışverişe gittim, ama yine de eksiklikleri anlayamadım. Sonunda gerçekten bir yol kalmadı: "Pekala, gerçekten bir şey göndermemi istiyorsan, o zaman sana yardım ederim. Hesap makinesi yazın "
Makalenin başlığı sadece bir hile ... İletişim teknolojisini seven öğrenciler olarak ayaklarımızı yere basmalıyız, böylece makalenin içeriğinin kuru olmasını sağlayacağım!
Tasarım prensibi
Girdi infix aritmetik ifadesine göre, yığın çerçeve yapısı sonek ifade çıktısına dönüştürmeyi gerçekleştirmek için kullanılır ve ardından sonek ifadesi çıktı sonucunu hesaplamak için değerlendirilir. Son olarak bir hesap makinesi tasarlandı.
Uygulanabilir kapsam: + - * /% tamsayı ondalık negatif sayı
Tasarım fikirleri
Mantıksal tasarım
1. İki yığın, yığın yığını ve yığın Düğümü oluşturun
Yığın yığını, bir karakter dizisini depolamak ve infix ifadesinin öğelerini karakterler biçiminde depolamak için kullanılır.
Düğüm yığını, infix ifadesinin öğe değerini ve her öğe işleminden sonraki değeri depolamak için kullanılan çift duyarlıklı kayan nokta dizilerini depolamak için kullanılır.
2. Aşağıdaki iki işlevi ve ilgili yığın ve pop işlemlerini tasarlayın.
(Yığın yığın)
(1) Bir işlenenle karşılaşılırsa, doğrudan çıktı alın.
(2) Bir operatörle karşılaşırsak, onu yığına koyarız ve bir açılış parantezi ile karşılaştığımızda onu yığına koyarız.
(3) Sağ parantezle karşılaşılırsa, yığın öğesini açın ve sol parantezle karşılaşılıncaya kadar atılan operatörü çıktı olarak alın. Açılış parantezinin yalnızca açıldığını ve çıktı vermediğini unutmayın.
(4) ("+", "*", "(") vb. Gibi başka operatörlerle karşılaşırsanız, daha düşük öncelikli bir öğe bulana kadar (veya yığın boş) öğeyi yığından çıkarın. . Bu öğeleri patlattıktan sonra, karşılaşılan operatörler yığına itilecektir. Unutulmaması gereken bir şey, yalnızca ")" "(", diğer durumlarda ortaya çıkmayacağız " (".
(5) Girişin sonu okunursa, yığındaki tüm öğeler sırayla açılır.
Caculate fonksiyon tasarımı
(Yığın, Düğüm yığınıdır)
1) İfadeyi çaprazlayın, karşılaşılan sayılar önce yığına konur
2) Sonra "+" gibi işlem operatörünü okuyun, yığındaki üst ve sonraki öğeyi açın, ilgili işlemi gerçekleştirin ve hesaplama sonucunu yığına itin.
3) Sonraki öğeyi okuyun ve doğrudan yığının üzerine koyun.
4) "" gibi bir sonraki öğeyi okuyun, yığındaki üst öğeyi ve sonraki öğeyi açın, 85'i çalıştırın, karşılık gelen işlemi gerçekleştirin ve hesaplama sonucunu yığının üzerine itin ... vb. Nihai değer, yığının en üstünde saklanır.
Ondalık nokta için işleme algoritması
İlke: İlk olarak, ondalık bir tam sayıya dönüştürülür ve ardından karşılık gelen ağırlığa 10'a bölünür. Ondalık toplamın değerini karşılık gelen ağırlık j = 00,10 ile başlatmak için bir döngü oluşturun ve ondalık noktadan sonraki karakter dizisi öğesinin 0-9 arasında olup olmadığını belirleyin, öyleyse, ondalık noktayı geri taşıyın, toplam = toplam * 10 + karşılık gelen öğe Değer, 10 artı bir olan karşılık gelen ağırlık j, sonraki eleman 0-9'a ait olmayana kadar.
Spesifik algoritma aşağıdaki gibidir
Negatif işaretlerin ele alınması
Negatif işaretin konumu, karakter dizisinin ilk öğesi veya sol parantezden sonraki öğedir. Eksi işareti "-" ile karışıklığı önlemek için, karakter dizisinin ilk öğesinin veya sol parantezden sonraki öğenin "-" olup olmadığına karar vererek eksi işaretini bulun ve "M" ile değiştirin. Sonekten son eke dönüştürülürken öğe "M" ise, "-" çıktı. Son ekin değeri hesaplanırken, eleman "M" ise, sonraki eleman değeri (ondalıklar dahil) işlemden önce zıt sayıya dönüştürülecektir.
Ana program akış şeması ve her modülün çağrı ilişkisi
Fiziksel tasarım
1. Hafızadaki sürekli depolama alanı dizisinin gerçekleştirilmesine bağlı olarak, C ifadesi, sonek ifadesine son ek için kullanılan karakter dizisi dahil olmak üzere karakter yığını çerçeve yapısını tanımlar
2. İlgili düğümün anlamı
3. Yığın işlemi
4. C bildirimi, sonek ifadesinin değerlendirmesini hesaplamak için kullanılan tamsayı dizisi dahil olmak üzere tamsayı yığın çerçeve yapısını tanımlar.
5. İlgili düğümün anlamı
6. Yığın içi ve dışı işlemler
Ölçek
1. Test durumları
2. Test sonuçları
Kaynak kodu (yorumlarla birlikte)
Kod C dili sürümünde yazılmıştır ve java sürümü ileride eklenecektir.
github kod bağlantısı: https://github.com/1170300826
Orijinal bağlantı:
https://blog.csdn.net/JAck_chen0309/java/article/details/104841005
"Bir milyon insan yapay zekayı öğreniyor" un önemli bir parçası olarak, 2020 AIProCon Geliştirici Konferansı Olacak 26 Haziran Çevrimiçi canlı yayın aracılığıyla geliştiriciler, mevcut AI'nın en son teknoloji araştırması, temel teknolojisi ve uygulaması ve iş vakalarının pratik deneyimi hakkında tek durakta bilgi edinebilir ve ayrıca harika ve çeşitli geliştirici salonlarına ve programlama projelerine çevrimiçi olarak katılabilir. Bir dizi ileriye dönük aktiviteye ve çevrimiçi canlı yayın etkileşimlerine katılın. Yalnızca on binlerce geliştiriciyle iletişim kurmakla kalmaz, aynı zamanda özel canlı yayın hediyeleri kazanma ve teknik uzmanlarla bağlantı kurma fırsatına da sahip olursunuz.
Yorum alanında seçilirseniz, 299 yuan değerinde "2020 AI Geliştiriciler Konferansı" için çevrimiçi canlı bir bilet alacaksınız. Parmaklarınızı hareket ettirin ve söylemek istediklerinizi yazın
Huawei, AI Dragon Ball'u topladı, "Summon Dragon" çok uzakta değil
Çin insansız hava aracı "Old Paoer" ın anıları
Jingdong Mall'un arkasındaki yapay zeka teknolojisinin sırrı - anahtar kelimelere dayalı otomatik özet oluşturma
İnternetin babası yeni tacı teşhis etti, bir efsane: Google'ın başkan yardımcısı ve NASA'da misafir bilim insanı olarak görev yaptı
Hiç bu kadar kolay olmamıştı: Kafka'ya karşı saldırmanız için sizi 10 dakika alacak!
Programcılar kodun olmadığı bir çağda işlerini nasıl koruyabilirler?