Şimdi Ara

C'de sonsuza kadar tamsayı yazdırmak?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
28
Cevap
0
Favori
3.778
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • arkadaşlar merhaba C dilinin daha başlangıc seviyesindeki bir kullanıcısıyım,sorum şu: C'de for kullanarak 1 den itibaren +∞ a doğru tam sayıları yazdırıcak bir program yazmak.kurcaladığım bir kitapta gördüm,ufak bişeyler kurmaya çalıştım ancak başarısız yardımcı olursanız çok sevinirim



  • şimdi for döngüsünde bir şart var,o şart true ise döngünün içine girer, false olduğu anda döngüen çkılır,o halde sen de şart yerine direk true yazarsan sonsuz döngüyü elde edersin

    for(int i =0;true;i++)
    cout<<i;

    bu cpp kodu, c de de böyle bişeydir işte..

    kolay gelsin
  • for(int degisken = 0;;){
    int degisken++;
    cout << degisken;

    }

    de yapılabilir =)
  • kodunda hata var

    for(int degisken = 0;;){
    int degisken++;
    cout << degisken;

    }

    int degisken++;
    yerine sadece degisken++; olması gerek
  • int a=0; while(1) printf("%d\n", a++);
  • evet bu şekilde denediğimde olmuştu,ilk mesajıma eklemeyi unuttum sanırım while ile kurabildim diye,şimdi tekrar for ile kurmayı denedim ama olmadı yine
  • Buraya konu acmadan önce bir kaç kaynağa bak.

    int a=0; for(;1;) printf("%d\n", a++);
  • Yapay Zeka’dan İlgili Konular
    C# ve Php aynı anda gider mi ?
    12 yıl önce açıldı
    C/O ve B/O ne demek?
    13 yıl önce açıldı
    C'de Harf Piramiti
    14 yıl önce açıldı
    Daha Fazla Göster
  • İyide, hiç bir dilde, sonsuza kadar olan tüm sayıları yazdıramazsın.

    Bu örneklerde en fazla yazdırabileceğin, limits.h dosyasında tanımlı olan INT_MAX değeri kadar olabilir. Eğer sınav yapıyor olsaydık, sıfırcı hocaya çıkmıştı adım kısaca.. variable++ işlemi, variable değeri bu değere ulaştıktan sonra, en küçük tamsayıya dönecektir.

    Bu sorunun cevabı, biraz daha karmaşıktır. Bilgisayarın kaynağı sonsuz olmadığına göre, sonsuz büyüklükteki bir sayı bilgisayarda mevcut olamaz. Fakat aletin kapasitesinin alabileceği en büyük sayı derseniz, o zamanda bu çözümler işe yaramaz.
  • Int olarak tanımlanırsa, sonsuza kadar gitmez, int'in tanımlı olduğu aralığın üst sınırına kadar yazdırabilirsin sadece. O da yanlış hatırlamıyorsam (2^32)/2 idi.
  • Üstümdeki iki arkadasım, o muhtesem ve mükemmel bilgisayar bilgilerinizi bizimle paylastıgınız icin cok tesekkür ederiz. Siz olmasanız biz bu döngülerin sonsuza kadar gideceğini düşünüyorduk. Lütfen bizi o harikulade bilgilerinizle baska konularda da aydınlatın.

    Ne adamlar var ya, bi zeki bi bilgili sizsiniz. Biri de cürvüne bakmadan sıfır vermiş bize...

    Adam + sonsuza DOGRU demis yani 0 1 2 seklinde, eksi sonsuza deseydi 0 -1 -2 seklinde olacaktı. Önce bir okumayı ögrenin bize computer organization dersi vermeden önce.



    < Bu mesaj bu kişi tarafından değiştirildi OnurJAM -- 5 Şubat 2010; 0:09:00 >
  • int i;

    for( ; ; )
    {
    i++;
    printf(i, %d);
    }
  • quote:

    Orijinalden alıntı: OnurJAM

    Üstümdeki iki arkadasım, o muhtesem ve mükemmel bilgisayar bilgilerinizi bizimle paylastıgınız icin cok tesekkür ederiz. Siz olmasanız biz bu döngülerin sonsuza kadar gideceğini düşünüyorduk. Lütfen bizi o harikulade bilgilerinizle baska konularda da aydınlatın.

    Ne adamlar var ya, bi zeki bi bilgili sizsiniz. Biri de cürvüne bakmadan sıfır vermiş bize...

    Adam + sonsuza DOGRU demis yani 0 1 2 seklinde, eksi sonsuza deseydi 0 -1 -2 seklinde olacaktı. Önce bir okumayı ögrenin bize computer organization dersi vermeden önce.

    Başlıkta da "sonsuza kadar yazdırmak" yazıyor, boşuna kasmışsın teşekkür ederek, ben ilk mesajı çok da irdeleyerek okumadım, başlık gayet açık diye, burda bir şey ispatlamaya da çalışmıyorum zaten. Ben öyle kinayeli konuşmayacağım senin gibi, sorulan soruyu yanlış anlamışım kusura bakmayın.




  • quote:

    Orijinalden alıntı: OnurJAM

    Üstümdeki iki arkadasım, o muhtesem ve mükemmel bilgisayar bilgilerinizi bizimle paylastıgınız icin cok tesekkür ederiz. Siz olmasanız biz bu döngülerin sonsuza kadar gideceğini düşünüyorduk. Lütfen bizi o harikulade bilgilerinizle baska konularda da aydınlatın.

    Ne adamlar var ya, bi zeki bi bilgili sizsiniz. Biri de cürvüne bakmadan sıfır vermiş bize...

    Adam + sonsuza DOGRU demis yani 0 1 2 seklinde, eksi sonsuza deseydi 0 -1 -2 seklinde olacaktı. Önce bir okumayı ögrenin bize computer organization dersi vermeden önce.


    İyide onurjam, sen önce kod yazamyı, gerekleri doğru öğrenmeyi anlada, ondan sonra bir tartışalım senle.

    Adam + sonsuza doğru mu demiş, O halde bu eklediğin kodun:

    int a=0; for(;1;) printf("%d\n", a++);

    Bu kodun bir IA32 sistemde, gcc gibi derleyiciyle şöyle bir sonuç vereceği durumunu ne yapmamız gerekiyor:

    ...........
    2147483644
    2147483645
    2147483646
    2147483647
    -2147483648
    -2147483647
    -2147483646
    .........

    Mimari veya derleyici değişirse, sadece bu değer değişir, velakin bu bir noktada negatif sayılara dönmek hususu aynen kalır. Bu basit sorunu bile göremiyorsun. Millete okumayı öğrenmesini tavsiye edene kadar, gidip biraz veritipleri, C operatörleri vs. üzerine talim yapsan daha hayırlı olacak kendin için.



    < Bu mesaj bu kişi tarafından değiştirildi skoylu -- 5 Şubat 2010; 8:28:37 >




  • quote:

    Orijinalden alıntı: skoylu

    İyide onurjam, sen önce kod yazamyı, gerekleri doğru öğrenmeyi anlada, ondan sonra bir tartışalım senle.

    Adam + sonsuza doğru mu demiş, O halde bu eklediğin kodun:

    int a=0; for(;1;) printf("%d\n", a++);

    Bu kodun bir IA32 sistemde, gcc gibi derleyiciyle şöyle bir sonuç vereceği durumunu ne yapmamız gerekiyor:

    ...........
    2147483644
    2147483645
    2147483646
    2147483647
    -2147483648
    -2147483647
    -2147483646
    .........

    Mimari veya derleyici değişirse, sadece bu değer değişir, velakin bu bir noktada negatif sayılara dönmek hususu aynen kalır. Bu basit sorunu bile göremiyorsun. Millete okumayı öğrenmesini tavsiye edene kadar, gidip biraz veritipleri, C operatörleri vs. üzerine talim yapsan daha hayırlı olacak kendin için.



    Pardon ama sen benim bunları bilmediğimi nerden çıkardın? Adam belli ki ilk kod parcalarından birini yazacak sen gelmişsin cpu instruction setlerinden bahsediyosun. Senin gibi bilgi görgüsüzü olmayıp en ufak bir yerde hemen bir artistlik yapmadım diye beni nasıl bilgisiz ilan edebildin? Merak etme int overflowu da, 2's complement sistemi de, assembly'i de çok iyi biliyorum ama aramızda bir fark var, senin gibi GÖRGÜSÜZ değilim.




  • bence uzatmaya değmeyecek şeyler için tartışmaya girmeyin... ne gereği var ki bunun içn tartışmaya.. ikiniz de iyi biliyorsunuzdur biri kendini gösteriyor diğeri de göstermiyor, farkınız bu. Bence daha önemli işler için kafa yoralım lütfen.. ikinizi de tanımıyorum, tarafsız olarak bakıyorum olaya.. gerçekten gerek olmayan bir tartışma

    çalışmaya devam ülkemin dev programcıları :)


  • Ben senin bunları bilip bilmediğin bilemem. Eğer bunları bildiğini söylüyorsan, sana itimat etmekten başka bir yolumuz olamaz. Ama Türkçe okuma anlama sorunun olduğunu biliyorum, işte apaçık görünüyor çünkü:

    Arkadaş ne istemiş:

    C'de for kullanarak 1 den itibaren +∞ a doğru tam sayıları yazdırıcak bir program

    Şimdi sen C ve bu veritplerini v.s biliyor ve ona:

    int a=0; for(;1;) printf("%d\n", a++);

    Bu kodu veriyorsan.. Bu kodla ne yapmak istediğini, C'yi vs. çok iyi bildiğini kabul ettiğimiz, ama bu kodun istenen "sonsuza kadar sayan" işi yerien getirmiyor olması gerçeğide ayan olduğuna göre, geriye sadece senin Türkçe okuyup anlamakta zafiyetin olduğu bilgisi kalıyor. Eğer adamın "sonsuza kadar saymak" isteğine böyle bir cevap verebiliyorsan, bu adamın ne istediğini zerre kadar anlamadığını gösterir.




  • quote:

    Orijinalden alıntı: skoylu



    Ben senin bunları bilip bilmediğin bilemem. Eğer bunları bildiğini söylüyorsan, sana itimat etmekten başka bir yolumuz olamaz. Ama Türkçe okuma anlama sorunun olduğunu biliyorum, işte apaçık görünüyor çünkü:

    Arkadaş ne istemiş:

    C'de for kullanarak 1 den itibaren +∞ a doğru tam sayıları yazdırıcak bir program

    Şimdi sen C ve bu veritplerini v.s biliyor ve ona:

    int a=0; for(;1;) printf("%d\n", a++);

    Bu kodu veriyorsan.. Bu kodla ne yapmak istediğini, C'yi vs. çok iyi bildiğini kabul ettiğimiz, ama bu kodun istenen "sonsuza kadar sayan" işi yerien getirmiyor olması gerçeğide ayan olduğuna göre, geriye sadece senin Türkçe okuyup anlamakta zafiyetin olduğu bilgisi kalıyor. Eğer adamın "sonsuza kadar saymak" isteğine böyle bir cevap verebiliyorsan, bu adamın ne istediğini zerre kadar anlamadığını gösterir.




    Evet senin gibi "bunlar çalışmaz aga" deyip gitmek arkadaşa çok daha yardımcı olurdu.




  • Emin ol daha çok yardımcı olurdu. Zira, arkadaş bilgisayar denen meret için bir sınır olduğunu öğrenirdi.

    Hiç bir şey yapamıyorsan, mesela, bilgisayarın limitlerine mümkün olan en büyük sayıya kadar sayabilen bir kod yazabilirdin. Bence bu sadece "Amanda bakın ne kod yazarım, matematik cambazıyım" tribi olurdu, yazacağımız kodu da bu arkadaş anlamazdı, hiç bir kele de merhem olmazdı.

    Programcılığın, hele ki C programcılığının %99.9'u bu gibi mevzuları bilmemekten kaynaklanır. Senin -zannımca- önemsemediğin bu mevzu, pek çok programın -ki içlerine MS Explorer ucubesi de dahil- patlamasının sebebi olmuştur.
  • Seninle daha fazla tartışmıycam, for döngüsünü öğrenmeye çalışan adama int overflow biliom ben ya ya tarzı mesajlar atarsan yediğin küfürle kalırsın.
  • OnurJAM, kendinle beni karıştırdın sanırım.. Birini karalamaya çıkmadan önce en azından kim olduğunu filan öğrenmeye çalış derim. Böyle çirkin laflar vs. ederek kendini kötü duruma düşürme, yazıktır, günahtır.
  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.