Paskal Üçgeni Algoritması(Yardım)
-
#include
int main()
{
int i,j,n=1453,A[10000][10000];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(j==1||i==j)
A[i][j]=1;
else
A[i][j]=A[i-1][j-1]+A[i-1][j];
}
for(j=1;j<=n;j++)
printf("A[%d][%d]: %d",n,j,A[n][j]);
}---------------------------------------
Şu şekilde yazdım kodu,derlerken falan hata yok ancak çalışmaya başladığı anda hata verip kapanıyo. C#tada denedim aynı mantığı onda çalıştı ama satırı tamamen yazdırmadı,yazdırdığı değerlerde de taşma sorunu vardı sanırım.
Benden istenen şey paskal üçgenini oluşturmam ve 1453. satırını bulmam.
Akış diyagramı istiyo hoca millet kodlama bilmediği için,ben de ödevi daha istekli yapabilmek için koddan başlamayı seçtim :) matematiksel olarak kurduğum mantık doğrumudur? Yani kodlamada hata alınca acaba kurduğum mantıktamı sorun var diye düşündüğüm için açtım bu konuyu.
EDİT: verdiği hata stack overflow. Bu taşmayı nasıl önleyebilirim?
-
Vallahi gecenin şu saatinde pascal ucgeni neymis ne değilmiş bilmem. lakin gordugumu soyleyim: "#include" NE? neyi include ediyorsun hangi libraryi? "#include stdio.h" mi conio.h mi... son değer nereye gidecek? "getche();" yada "return 0;" ile programi kapatmanın gerek.
-
Burda çıkmamış ama stdio.h include ettim. Geri bi değer döndürmesi gerekmediği için void olarak tanımlamayıda denedim main fonksiyonunu,int olarak tanımladığımda return 0la durdurmayıda denedim ama hata aldım.
-
integer yerine double kullan muhtemelen tasmayi orda yapiyor
-
Doublela alakası olacağını sanmıyorum,kodun yaptığı şey matrisin ilk sütununu ve köşegenini 1 değeriyle doldurmak,ara kısımlarıda bir üstündeki ve bir üstündeki elemanın solundaki elemanın toplamı olarak doldurmak. Yani matris
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
şeklinde 1453 satırdan oluşacak ve 1453. satırı ekrana yazdıracak. Double değişken bişeyi değiştirmez,kodlar zaten sadece tamsayılar üzerinde toplama yapıyor.
-
wasd ben hallettim galiba şimdi düşa girecem sonra cafeye atlayacam sana kodları yazdıktan sonra pm atarım bakarsın biraz kasıntı gibi ama oldu gibi..
-
1.Önce ya bir akış diyagramı ya da algoritma oluştur ki programın tasarımnda mı hata yaptın kodlamasında mı onu gör..
2. matris yerine diz kullansan daha iyi olmaz mıydı?
-
ltcelik bunu yazdı:
-----------------------------
1.Önce ya bir akış diyagramı ya da algoritma oluştur ki programın tasarımnda mı hata yaptın kodlamasında mı onu gör..
2. matris yerine diz kullansan daha iyi olmaz mıydı?
-----------------------------1) Zaten hoca akış diyagramı istiyo bizden ama kodlama daha zevkli olduğu için ben önce kodu yazıp sonra akış diyagramını çıkartayım dedim :)
2) pascal üçgeni yukarıdan aşağıya doğru genişleyen ve elemanları birbirleriyle bağlantılı bişey olduğu için haliyle 1453. satır elemanlarını bulabilmek için ilk elemandan başlayıp aşağıya doğru gitmem gerekiyor. Şöyle bi düşündümde matematiksel formül uymaz sanırım diziye,matriste her A[i][j] elemanı A[i-1][j-1] ve A[i-1][j] elemanlarının toplamından oluşuyo,dizide bunu yapmak zor hatta imkansız olabilir.
@sarı: Derleyip denedinmi la kodları?
-
wasd bunu yazdı:
-----------------------------ltcelik bunu yazdı:
-----------------------------
1.Önce ya bir akış diyagramı ya da algoritma oluştur ki programın tasarımnda mı hata yaptın kodlamasında mı onu gör..
2. matris yerine diz kullansan daha iyi olmaz mıydı?
-----------------------------1) Zaten hoca akış diyagramı istiyo bizden ama kodlama daha zevkli olduğu için ben önce kodu yazıp sonra akış diyagramını çıkartayım dedim :)
2) pascal üçgeni yukarıdan aşağıya doğru genişleyen ve elemanları birbirleriyle bağlantılı bişey olduğu için haliyle 1453. satır elemanlarını bulabilmek için ilk elemandan başlayıp aşağıya doğru gitmem gerekiyor. Şöyle bi düşündümde matematiksel formül uymaz sanırım diziye,matriste her A[i][j] elemanı A[i-1][j-1] ve A[i-1][j] elemanlarının toplamından oluşuyo,dizide bunu yapmak zor hatta imkansız olabilir.
@sarı: Derleyip denedinmi la kodları?
-----------------------------
evet diz ile biraz zor olur sanırım.. :)) üçgeni inceledikten sonra anladım :))) -
Hocam bu soru projecteuler de vardı sanırım
Akşam bakayım tekrar şimdi işten çıkıyorum bulabilirsem atarım orada çok orjinal çözümler oluyor
-
aslında dizi ile de basitçe olur da
iki dizi tanımlanır birisi kaynak dizi , ikincisi hesaplanan dizi diye.. kaynak dizi sayesinde hesaplanan dizi tamamen oluşturulduktan sonra, hesaplanan dizi kaynak diziye atanır.. böyleleikle hafızadan tasarruf edilir... son iki dizi hafızada kalır sadece..
