Yeniden Merhaba bu Fibonacci series numbers C/c++'da for while döngüsünde olmadan nasıl yazabiliriz. Zannederim ki for/while ile bir sıkıntı oluşuyor. döngü fazlalaştı mı? Birde bulduğum Scheme bir yanlışlık yok değil mi? içeriğinde ben onu google'da bulamamıştım farklı bir arama motoru kullandım.@revivo72 |
C++'da aynen Scheme 'de old gibi rekürsif yazabilirsin. Scheme 'de deneyip çalıştırdığın kodu C++ a cevireceksin. Bir tek "int" tipi yerine C++'ın STL kütüphanesinde atıyorum kafadan big_int gibi bir tip varsa onu kullan ki örneğin fib 200 yazdığında bile sonuç versin. Rekürsif yapıyı vurgulamak amaçlı kodları bloğa ayırdım. scheme'de begin ( kod bloğu ) ile kodları bloklara ayırabiliyorsun. < Resime gitmek için tıklayın > bulduğun scheme kitqabı epub formatında gayet iyi. bende onun 2.baskısı ve PS'den dönüştürülmüş PDF formatı vardı iyiydi ama biraz eskiydi, senin bulduğun 4. son baskı ve formatı gayet iyi. Hangi arama motorunu kullandın ? |
ben kitabı bulmak içinwww.duckduckgo.com kullandım. google ve diğerleri gibi seni takip etmediği için sonuçları gizlemiyor. rekürsif detaylı bilgi veren c++ kaynağı var mı? mantığını verilenler ölçüsünde kaptım |
(fib (-n 1) b (+a b) (cons a acc)) (-n 1) sıfır dönünceye kadar n'den 1 çıkar b nedir? (+a b) döngü sıfır olasıya kadar a+b yap /yada doğrusu nasıl (cons a acc) cons sabit keyword mu? const gibi |
C++ rekürsif fonksiyon yapsan da büyük sayıları desteklemediği için cok anlamlı olmayacaktır, fib 70 hesapladığında rekürsif fonk hızlı çalışsa da rakamlar yine negatif veya eksik olacak. O yüzden tavsiyem bir C/C++ kütüphanesi olan gmp'yi kullanman. gmp'yi kullanmaktan cok kurmak zordur (Linux harici OS'lerde) ancak benim Windows 7 'de MSYS2 old için kolaylıkla kurdum ve C++ 'daki fibonacci kodunu gmp'ye güncelledim sonuç gayet iyi, gördüğün gibi yüksek rakamları da tam uzunlukta ve doğru gösteriyor: < Resime gitmek için tıklayın > fib cpp gmp gmp nasıl kurulur ve kullanılır ufak bir tutorial https://www.cs.colorado.edu/~srirams/courses/csci2824-spr14/gmpTutorial.html Scheme'de ise b nedir? b, fibonacci döngüsünde 2. rakam yani ilk baştaki rakamlar 0 ve 1 ise orada b = 1 b olmazsa fibonacci döngüsünü kuramazdık cünkü 2.rakamı tutacak değişkenimiz olmazdı n 'den sonra 2. konumda olan b, rekürsif çağrıda (fib (- n 1) b (+ a b) (cons a acc)) a'nın yerine konuluyor ve b = a + b oluyor (cons a acc) cons sabit keyword mu? const gibi cons const 'a sadece isim benzerliği var. Scheme'daki cconst = construct ve onu açıklayan basit bir fonksiyon yazdım: < Resime gitmek için tıklayın >Scheme Cons açıklama Scheme Programming Language kitabında 25. sayfada (section 2.2 simple expressions) cons'u açıklıyor. |
Scheme gibi değişik programlama dilleri ve onların C Python ve Perl gibi dillerle karşılaştırmasını içeren ilginç örnekler içeren şöyle bir kitap var. İng orjinali True PDF ve epub olarak internette var. < Resime gitmek için tıklayın > Hackers and Painters 2007 türkçe |
tamam bu kitabı alırım. teşekkürler. ingilizcesini bulmaya çalışalım @revivo72 |
@revivo72 internetten C++ programming from problem analysis to program design kitabını buldum. Şimdilik c++ ile devam ediyorum. Programlama mantığını iyice otursun sonra Scheme bakarım. bu kitapta zor olan örneği çözdüm fakat bu 1-5 example average=sum/5 kısmında 5 tane test score eklemeyi anlamadım. Normalde bizden 10 tane öğrencinin notlarını girerek bir ortalama yapmayı istemiş onunda totalAverage olarak hesaplamamızı istemiş < Resime gitmek için tıklayın > < Resime gitmek için tıklayın > önerebileceğin bir kitap var mı? internette bir kaç tane var iyi mi bilmiyorum. |
C++ konusunda belki yüzlerce kitap vardır. Benim önerim Complete Reference C++ Herbert Schildt https://yadi.sk/i/lzBW2XY43ZKs6A |
There are 10 students in a class. Each student has taken five tests, and each test is worth 100 points. We want to design an algorithm to calculate the grade for each student, as well as the class average. The grade is assigned as follows: If the average test score is greater than or equal to 90, the grade is A; if the average test score is greater than or equal to 80 and less than 90, the grade is B; if the average test score is greater than or equal to 70 and less than 80, the grade is C; if the average test score is greater than or equal to 60 and less than 70, the grade is D; otherwise, the grade is F. Note that the data consists of students’ names and their test scores. This is a problem that can be divided into subproblems as follows: There are five tests, so you design an algorithm to find the average test score.Next,you design an algorithm to determine the grade. The two subproblems are to determine the average test score and to determine the grade. Let us first design an algorithm to determine the average test score. To find the average test score, add the five test scores and then divide the sum by 5. Therefore, the algorithm is the following: 1. Get the five test scores. 2. Add the five test scores. Suppose sum stands for the sum of the test scores. 3. Suppose average stands for the average test score. Then average = sum / 5; (bu kısmı bir türlü algoritmaya çeviremedim. bu kod hariç istenilenleri yaptım. bu beynim düşünmekten ağrıyor. O kadar tahribata uğramış beynim :/ ) Next, you design an algorithm to determine the grade. Suppose grade stands for the grade assigned to a student. The following algorithm determines the grade: if average is greater than or equal to 90 grade = A otherwise if average is greater than or equal to 80 and less than 90 grade = B otherwise if average is greater than or equal to 70 and less than 80 grade = C otherwise if average is greater than or equal to 60 and less than 70 grade = D otherwise grade = F You can use the solutions to these subproblems to design the main algorithm as follows: (Suppose totalAverage stands for the sum of the averages of each student’s test average.) 1. totalAverage = 0; 2. Repeat the following steps for each student in the class: a. Get student’s name. b. Use the algorithm as discussed above to find the average test score. c. Use the algorithm as discussed above to find the grade. d. Update totalAverage by adding the current student’s average test score. 3. Determine the class average as follows: classAverage = totalAverage / 10 A programming exercise in Chapter 8 asks you to write a C++ program to determine the average test score and grade for each student in a class. Yukardaki resmin yazı hali bu örnekteki average = sum / 5; nasıl yapacağız @revivo72 < Resime gitmek için tıklayın > |
Bu problemle maalesef ilgilenemem cunku sadece tanımı dahi cok uzun. Yardım istiyorsan tavsiyem soruyu yeni konu olarak açman. Öyle bir durumda burdaki soruyu sil, gereksiz yer kaplamasın. Bir de kodları forum butonları arasında yer alan 'quote' içinde gönderirsen daha okunaklı olur, ben kod gönderirken ya SS yapıyorum ya da quote. |
@revivo72 peki avarge=sum/5 kısmını söylesen yeterdi programın algoritmaya şöyle döktüm. < Resime gitmek için tıklayın > |
Yine de şu haliyle el atmam zor. dediğim gibi yeni konu açarsan daha iyi olur. Yeni konuda yorumlar gelip konu biraz açıklığa kavuşursa duruma göre belki ben de el atarım. |
https://cs.nyu.edu/~exact/core/gmp/index.html gmp nasıl kurulduğuna derleneceğini anlatan başka bir link fakat ben visualstudio kurduğumdan içersinde gmp library varmış bakalım Anaconda3 içersinde paylaşımlı olarak çalışacak mı bir görelim Peki bu gmp ile neler yapabiliyoruz. içersinde ön tanımlı işlevler-function olması lazım. Birde bende mingw-64 var msys2 ile aynı özellikli bir şey visualstudio'da mingw64 kullanıyor. Fark ne? |
< Resime gitmek için tıklayın >
Linklerdeki Scheme kitaplarından sondaki epub en iyisi. O kitabın 4. basımını daha cok Torrent ve Google'da direkt PDF olarak yapmıştım, bulamamıştım. ZippyShare 'de bulman iyi olmuş. İndirdikten sonra iPad'imde kitap kapağı yanlış çıktı, onu Calibre E-Book Management programındaki epub düzenleme aracı ile düzelttim. iPad'imdeki 2. basımı kaldırdım cunku eski olduğu gibi formatı da iyi değildi.
imzada sorun olabilir. benim imzadaki status.im e sadece fırsat ve zaman oldukça bakıyorum. Scheme daha cok araştırma ve deney amaçlı bir dil gibi. Fibonacci dizisi ile ilgili araştırma yapacak olsam örneğin Python C++ falan uğraşmaz Scheme ile devam ederdim. Araştırma amaçlı programlama yapanlar bir de Haskell dilini de kullanıyorlar fakat o beni biraz aşar.
< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesajda bahsedilenler: @berce