ilk önce c++ ile kendi algoritma fikir yapımda bir benzerlik kurmam gerek! Evet, öyle! c++ daha iyi bilmek lazım. standart komutlarda algoritmayı c++ anladığı algoritma ile istediğimi yaptırabiliyorum. ama bu yukarıda verdiğim örnekte fikir doğru olsa bile c++ anlayacağı şekilde değil! |
Önceki mesajımda önemli bir not vardı, onu hiçe saydın: C++ ile recursion kullanarak fibonacci dizisini yazdırmak için C++11 kullanman şart. C++11 bilmeden temel C++ ile olmaz o iş. Bu konu başlığı en az C++11+, Java 8+, Python 3.x gibi dilleri 100% bilip recursion problemlerini çözmek isteyenler için. Versiyon no'lara dikkat. Bu konuya yorum yapabilmek için bu kesin şart. Bu kesin şartı karşılamıyorsan temel C++ ile recursion öğrenmek istiyorsan başka bir konu açmalısın. |
bende post'u sileyimde gönlün olsun. bir kaç güne yaparisem koyarım. olmazsa yine bir vakit bulup yine recursive olanı koyarım. |
Bu işler gönül değil, çalışma deneme öğrenme işi. C++ ile recursion kullanarak Fibonacci dizisini bastırmak için C++11 kullanmalısın. Çalış ve dene. Uğraşıp bir kod yazdı isen ancak çalışmayan yerleri varsa "C++ ile recursion kullanarak Fibonacci dizisini bastırmak" gibi başlıkla konu aç. Ben dahil bircok kişi yardımcı olur. |
bu da function ile tekrarlanan bir code. bunu daha az variable ile yazmayı denerim. c++ anlayacağı hali bulduğumda gösteririm. #include <iostream> using namespace std; int formul1(int k, int l, int i, int a) { int toplam,carpim; if(i<k || l<=a) { carpim=1; //cout << "i:" << i << endl; toplam=(i*i)+a; carpim*=toplam; cout<<toplam<<(i ==(k-1) ? " = ":" * "); i++; a--; return ( carpim * formul1 (k,l,i,a)); } return 1; } int main() { int k,i=0,l=1,a; //burada a=k; yapılırsa program hata veriyor. cout<<"Bir sayi giriniz:"; cin>>k; a=k; cout<<formul1(k,l,i,a); return 0; } /* Bir sayi giriniz:4 4 * 4 * 6 * 10 = 960 Bir sayi giriniz:6 6 * 6 * 8 * 12 * 18 * 26 = 1617408 Bir sayi giriniz:5 5 * 5 * 7 * 11 * 17 = 32725 */ |
bunu fark etmedim. hem c++, hemde bir betik dili öğrenirim. şu anda programla dili olarak c++ ağırlık verdim. onda dikkatimi geliştirdikten sonra, tecrübe kazandıktan sonra diğerlerine bakacağım. senin tavsiyene ehemmiyet verip c++ v11 itibari ile eklenen özelliklere bakacağım. yukarıda verdiğim örnek, bir ihtimal eski versiyonlardaki gibi olabilir fakat yine dursun. aradaki farkı görürler. gönderdiğin resmin tam içeriği gönderebilir misin? yani (fib 4) klavye ne olarak giriyorsun? direkt rakam girişine benzemiyor.. bir hata var mı? tahminen öyle 7 rakamını girdiğinde 13 bitmesi lazım. 4 rakamını girdiğinde 3 bitmesi lazım. < Resime gitmek için tıklayın > https://store.donanimhaber.com/3d/f6/82/3df682acceee2cbf623806deccb97108.png https://store.donanimhaber.com/0a/cb/0c/0acb0cb06b57f2a4b11cab369c713515.png |
Videoyu izlemek için tıklayınız https://cppdepend.com/blog/?p=319 https://erip.gitbooks.io/modern-cpp/content/chapter4.html https://google.github.io/styleguide/cppguide.html bana initialization list std::vector<T> (vectorler olabilir); bahsettiğin özellikler bu verdiğim linkte yoksa rica etsem paylaşana.. |
Donald Knuth der ki: Programlar bilgisayarda çalıştırmak için değil, insanlar içindir. Şimdi senin programa bakıyoruz. Karışık bir kod. 6 değişken var ki m ve n olmak üzere sadece 2 değişkenli bir polinom faktöryel için bu aşırı yüksek. 4 değişkenin isimlendirmesinden ne yaptığı değil ve kod cok uzun ve çıktı formatı eksik (3 + 1^2) yerine 4 gösteriyor. Formatı düzgün olan ve sadece 3 değişken ile polinom faktöryeli özyinelemeli hesaplayan sadece 9 satırlık Scheme kodu ile yanyana koydum, karşılaştırma için. Hiç Scheme bilmeyen biri bile, oradaki Scheme kodunun polinom faktöryelini nasıl hesapladığını görebilir cunku formüldeki değişkenler m ve n kodun içinde aynı görevde. Fazladan bir k değişkeni var ki o da faktöryel çarpım işleminde yardımcı değişken olarak. C++ bile olsa okunaklı kod göndermelisin. Daha karışık bir işlem olsa, senin kod kriptolanmış gibi olacak :) < Resime gitmek için tıklayın > |
C++11 'deki 2011 seni yanıltmasın. C++11'deki özelliklerin %90'ından fazlası 1999'da çoktan C++'a dahil oldu, 2011'e kadar cok önemli olmayan birkaç özellik daha eklenerek C++11 adıyla yayınlandı. Yani, H.Schildt'in 2003 basımı C++ kitabında yeni özelliklerin %90+'ı var, böyle yeni video veya kitaplara gerek yok. Ben o 2003 kitabını bitirdim, bu yeni videolar vs olmadan c++11 kodlayabiliyorum :) Scheme'deki (fib 7) ye gelince: Scheme'de fonksiyon hesaplatma parantez ile oluyor. Dikkat edersen yukardaki kodlarda da hep parantez var. O sayede programın işlevlerini istediğin şekilde ayırabiliyorsun ki o da fonksiyonel programlamanın kendisi demek. Bilgisayarında Scheme kodları denemek istiyorsan,https://chocolatey.org/packages/chicken 'da Windows için Scheme derleyici paketi var. |
>Scheme'deki (fib 7) ye gelince: Scheme'de fonksiyon hesaplatma parantez ile oluyor. Dikkat edersen yukardaki kodlarda da hep parantez var. Aslında ben daha farklı bir konuya değinmiştim😄 Eğer formül tablosuna baktığın zaman f7 13 F4 3 rakamını vermesi lazımdı yani fibonacci için 7 rakamını girdiğinde ...8 13 diye son olması lazım 7, 8 tabanında öyle olmasa f7=13 demezdi Oradan n-1 yapan codu çıkardığında görebilirsin. Senin istediğin kadar kısalıkta kod yazdım fakat 8 ve sonraki rakamları sağlama yaptığımda gnu cmp yanlış hesaplıyor. Buda bit ile alakalı bir durum olabilir. Riota atayımda bakar mısın? Yoksa artık istemez misin? Yada başka bir şey mi var? Orada sana fibonnoci detaylarını paylaşırım. |
Fibonacci dizisindeki argümanı toplam fibonacci sayısı olarak hesaplattığım için öyle o. Resmi formüldeki gibi olması için yapılacak tek şey, recursion'ı bir tur daha döndürmek ki onun için de recursion sonlanma şartını 1 arttırdım, şekildeki gibi. Bu basit bir ayrıntı, bahsetmeye dahi gerek yok. < Resime gitmek için tıklayın > Riot esasen, forumda iletemediğim özel veya politik vs konular için kullandığım bir ortam. Teknik konular forumda iletilebilir o yüzden Riot 'a gerek yok. Bir de, Avrupa'dan iş aradığım için de cok fazla ortamlara girmiyorum; bir iş ayarlayayım sonra tekrar ortamlara akarım. Sözkonusu C++ çalışman için yeni konu açabilrsin, "C++ ile fibonacci, recursion, fonksiyonel programlama" gibi bir başlık ile, örneğin. Scheme ile ilgili de konu açabilirsin, "Scheme öğreniyorum" gibi bir başlık ile, örneğin. Scheme eğitim ve akademik amaçlı temel bir programlama dili fakat Türkiye'de ODTÜ falan dahi olsa bir Bilgisayar Mühendisi Scheme bilmiyor (bildiğim kadarıyla) Forumda hiç kullanan görmedim. Fakat özellikle fonksiyonel programlamayı anlamak acısından cok iyi bir dil. Tavsiye ederim. |
evet basit bir ayrıntı fakat ben dikkat ediyorum böyle şeylere. oha çüş bu kadarıda olur mu? ey derleyiciler benim kodumu neden adam gibi derlemezsiniz? online compiler sitelerinde kod düzgün çıkarken, cl.exe(visual studio bile hatalı çıkıyor). gnu mingw bile sjs bile yanlış derliyor. < Resime gitmek için tıklayın > https://store.donanimhaber.com/ca/1c/5f/ca1c5f7896ad1d57ee0a6979f1dff419.png //direk böyle url vermen daha iyi olur mobile görünümde resimleri açılmadı direkt url'yi buldup öyle açtım. (8+0^2) = 8 8(7+1^2) = 8 64(6+2^2) = 10 640(5+3^2) = 14 8960(4+4^2) = 20 179200(3+5^2) = 28 5017600(2+6^2) = 38 190668800(1+7^2) = 50 943505408 yanlış sonuç veriyor Fakat online derleyici ile çalıştırdığımda düzgün sonuç veriyor. hatta kodu internet kafedeki bilgisayarda denedim onda da aynı sonuç. bu ne arkadaş >Riot esasen, forumda iletemediğim özel veya politik vs konular için kullandığım bir ortam. Teknik konular forumda iletilebilir o yüzden Riot 'a gerek yok. riot'a zaten sana özel ve burada anlatamadığım teknik konular ve politikten bahsetmek için girmiştim. eğer dersen teknik konulardan hiç bahsetmedik, hep politik, hep gündelik hayattan, sana orada dediğim. Sana riot'da anlatıklarımdan büyük ölçüde kutuldum. bilgisayar başında başım ağrımdan ağrısada tahammül edilebilir bir hale geldi. yani çalışmaya elverişli bir zihnim var. Dersin ki senden sıkıldım onuda hallederiz! yeter ki muhabbetin devamını iste! Yazdığım kodu c#$ yazmayı halletdikten sonra sonucu söylerim. |
using System; //using System.IO; namespace HelloWorld { class Program { public static int Main() { int m,a=0; Console.WriteLine("bir sayi giriniz:"); m = Convert.ToInt32(Console.ReadLine()); fonk k=new fonk(); Console.WriteLine("Toplam sayi:{0}",k.formul(m,a)); return 0; } } class fonk { public long formul (long m, long i) { long toplam=1; if (m>=1) { toplam*=(m+(i*i)); Console.WriteLine(" ({0} +{1}^2) = {2})",m,i,toplam); return ( toplam * formul(--m,++i)); } return 1; } } } //c# ile yapılan bir kod malum c# daha uzun yazılıyor c++ göre ilk etapta uğraştırsada istediğin sonucu alabiliyorsun. https://www.onlinegdb.com/B1V2RcPQH // buradan bakabilirsin. ----------------- buda c++ ile yazılan https://www.onlinegdb.com/rJdNxoDXB peki neden internet cafe'de bile gnu gcc kurduğum bilgisayarda derleyipte aynı kod ile kendi bilgisayarımdaki yanlış sonuç alıyorum. g++ -o filename.exe filename.cpp komutunu kullanıyorum. |
Okey, 1000'in polinom faktöryelini hesaplayabilir misin? Adımların çıktısını vermeden sadece sonucu verecek şekilde. Bak ben hesapladım ![]() < Resime gitmek için tıklayın > ipucu: Özyineleme fonksiyonunda son satır fonksiyon çağırısı olmalı, o durumda derleyici son satır optimizasyonu yapıyor ve süper hızlı hesaplayabliyor. Ben öyle yaptım :) |
Okey; Lakin, öncelikle benim derleyici compiler problemini müşkilini halletmem gerek! visual studio bile yanlış derliyor. bu müşkili halledeyim ondan sonra sana guk guk derim ki meral, akın şenere posta çakar ve der ki Hukuk guguk guguk kuşu oldu :) bu online derleyiciler nasıl bir gcc kuruyor ki aynı kod onlarda derlediğimde problem oluşturmuyor. düzgün sonuç veriyor. Bu konuda bana yardım edebilir, bir fikir verebilirsin? ---------------------------- main.cpp:8:11: note: suggested alternative: In file included from /usr/include/c++/6/ext/new_allocator.h:33:0, from /usr/include/x86_64-linux-gnu/c++/6/bits/c++allocator.h:33, from /usr/include/c++/6/bits/allocator.h:46, from /usr/include/c++/6/string:41, from /usr/include/c++/6/bits/locale_classes.h:40, from /usr/include/c++/6/bits/ios_base.h:41, from /usr/include/c++/6/ios:42, from /usr/include/c++/6/ostream:38, from /usr/include/c++/6/iostream:39, from main.cpp:1: ---------------------------- böyle bir alternatif sunmuyor. bunlar gcc'i nasıl kurdular ki? |
Online derleyicilerin ayarları tam yapılmıştır senin derleyici ayarlarında eksik vardır. Onun için yeni konu açabilirsin. Bu konudan benim yardımcı olmam güç. |
zaten ben uğraşmadım setup kurulum dosyasından kurdum. ayarları yapılmıştır diye.. yada bana farklı dosya geliyor. |
bunlarin hepsini guclu bir laptop ve ddr2 bilgisayara fx islemci aladiktan sonra yapacagim en azindan serviste anakartin duzeltip yada guclu baska bir anakart elde etme sansini bulabilirsem eski bilgisayar programlamada islerimi goruyor lakin video editlemede ve yogun islemlerde sinifta kaliyor. |
< Bu mesaj bu kişi tarafından değiştirildi berce -- 1 Ağustos 2019; 12:58:4 >
< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesajda bahsedilenler: @vonderplanitz