Şimdi Ara

C/C++/C# Sorularınız Buraya. . .(GÜNCEL) (10. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4.172
Cevap
118
Favori
167.378
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
3 oy
Öne Çıkar
Sayfa: önceki 89101112
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • quote:

    Orijinalden alıntı: £XE

    quote:

    Orijinalden alıntı: strahd_von_zarovich

    quote:

    Orijinalden alıntı: £XE

    Up

    Hocam while döngüsü , döngünün başında nasıl durdurulur . Yani durduracak değer alındıktan sonra döngünün geri kalanı yürütülmeyecek.

    Bunun içni break komutunu kullanabilirsin. Basit şekilde gösterirsek

     
    #include <iostream>
    using namespace std;

    main()
    {
    int sayi;

    cout << "Bir sayi girin : ";

    while(sayi<5)
    break;

    cout << sayi << "dan buyuk bir sayi girin";
    }


    İkimiz kaldık heralde hocam bir tek . Neyse ben tek başıma baya soru sorucam zaten . Girilen 10 sayi içerisinden en büyük 2 sayiyi buldurmaya calistim. Daha kısa yazılabilir mi , uzattım ben biraz.

    #include <stdio.h> 
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
    int sayi,sayac=2,atama1,atama2;
    printf("1.ci sayiyi giriniz");
    scanf("%d",&sayi);
    atama1=sayi;

    while(sayac!=11)
    {

    printf("%d ci sayiyi giriniz",sayac);
    scanf("%d",&sayi);
    if(sayi>atama1)
    {
    atama2=atama1;
    atama1=sayi;
    }
    else if(sayi<atama1&&sayi>atama2)
    {
    atama2=sayi;
    }

    sayac++;
    }

    printf("en buyuk sayi %d ondan sonraki en buyuk sayi %d",atama1,atama2);

    system("PAUSE");
    return 0;
    }




  • quote:

    Orijinalden alıntı: strahd_von_zarovich

    İkimiz kaldık heralde hocam bir tek . Neyse ben tek başıma baya soru sorucam zaten . Girilen 10 sayi içerisinden en büyük 2 sayiyi buldurmaya calistim. Daha kısa yazılabilir mi , uzattım ben biraz.

    Kısayı boşver temiz yazmaya bak. Senin kod kirli olmuş. Sistematik düşün, böylece kısa da olur zaten.

    main deki argc, argv leri sil önce, gerekmedikçe yazma onları. system("pause") gibi sistem bağımlı gereksiz şeylerden de uzak dur, programı komut satırından çalıştır (cmd). Bunlar taçizane tavsiyelerim.
     
    #include <stdio.h>
    #include <limits.h>

    int main()
    {
    int sayi, i = 1, buyuk1 = INT_MIN, buyuk2 = INT_MIN;

    for(; i <= 10; ++i) {
    printf("%d. sayiyi giriniz: ", i);
    scanf("%d", &sayi);

    if(sayi > buyuk1) {
    buyuk2 = buyuk1;
    buyuk1 = sayi;
    }
    }
    printf("En buyuk sayi %d, 2. en buyuk sayi %d\n", buyuk1, buyuk2);

    return 0;
    }




  • quote:

    Orijinalden alıntı: elektro_gadget

    quote:

    Orijinalden alıntı: strahd_von_zarovich

    İkimiz kaldık heralde hocam bir tek . Neyse ben tek başıma baya soru sorucam zaten . Girilen 10 sayi içerisinden en büyük 2 sayiyi buldurmaya calistim. Daha kısa yazılabilir mi , uzattım ben biraz.

    Kısayı boşver temiz yazmaya bak. Senin kod kirli olmuş. Sistematik düşün, böylece kısa da olur zaten.

    main deki argc, argv leri sil önce, gerekmedikçe yazma onları. system("pause") gibi sistem bağımlı gereksiz şeylerden de uzak dur, programı komut satırından çalıştır (cmd). Bunlar taçizane tavsiyelerim.
     
    #include <stdio.h>
    #include <limits.h>

    int main()
    {
    int sayi, i = 1, buyuk1 = INT_MIN, buyuk2 = INT_MIN;

    for(; i <= 10; ++i) {
    printf("%d. sayiyi giriniz: ", i);
    scanf("%d", &sayi);

    if(sayi > buyuk1) {
    buyuk2 = buyuk1;
    buyuk1 = sayi;
    }
    }
    printf("En buyuk sayi %d, 2. en buyuk sayi %d\n", buyuk1, buyuk2);

    return 0;
    }


    Hocam programı açtığımda direk onları koyduğu için silmiyorum , argc,argv ne işe işe yarıyor bilmiyorum zaten. Pause olmadan ekranı nasıl göreceğiz , bir de int min in işlevi tam olarak ne ? Kitaptan gittiğimden farklı şeyler kullanmıyorum konu dışında . Teşekkür ederim tavsiyeleriniz için




  • quote:

    Orijinalden alıntı: strahd_von_zarovich

    quote:

    Orijinalden alıntı: elektro_gadget

    quote:

    Orijinalden alıntı: strahd_von_zarovich

    İkimiz kaldık heralde hocam bir tek . Neyse ben tek başıma baya soru sorucam zaten . Girilen 10 sayi içerisinden en büyük 2 sayiyi buldurmaya calistim. Daha kısa yazılabilir mi , uzattım ben biraz.

    Kısayı boşver temiz yazmaya bak. Senin kod kirli olmuş. Sistematik düşün, böylece kısa da olur zaten.

    main deki argc, argv leri sil önce, gerekmedikçe yazma onları. system("pause") gibi sistem bağımlı gereksiz şeylerden de uzak dur, programı komut satırından çalıştır (cmd). Bunlar taçizane tavsiyelerim.
     
    #include <stdio.h>
    #include <limits.h>

    int main()
    {
    int sayi, i = 1, buyuk1 = INT_MIN, buyuk2 = INT_MIN;

    for(; i <= 10; ++i) {
    printf("%d. sayiyi giriniz: ", i);
    scanf("%d", &sayi);

    if(sayi > buyuk1) {
    buyuk2 = buyuk1;
    buyuk1 = sayi;
    }
    }
    printf("En buyuk sayi %d, 2. en buyuk sayi %d\n", buyuk1, buyuk2);

    return 0;
    }


    Hocam programı açtığımda direk onları koyduğu için silmiyorum , argc,argv ne işe işe yarıyor bilmiyorum zaten. Pause olmadan ekranı nasıl göreceğiz , bir de int min in işlevi tam olarak ne ? Kitaptan gittiğimden farklı şeyler kullanmıyorum konu dışında . Teşekkür ederim tavsiyeleriniz için

    Elektro_gadget hocamız gene bizden önce davrandı. Hocam sizleri burada görmek çok güzel

    #include <limits.h> -> INT_MIN leri bunun sayesinde yazdırdık. öncelikle bu kütüphanemiz.
    INT_MIN dediğimiz ise mesela buyuk1 değişkenine verilecek en küçük değeri veriyor. internetten bakabilirsin bu değerlere..

    argc,argv'a gelince, büyük ihtimalle "Kaynak Kodu Dosyası" açmıyorsunuz. "Kaynak Kodu Dosyası" açarsanız bembeyaz bir ekran gelecektir önünüze.

    system("pause"); yerine, #include <conio.h> ekleyerek, system("pause"); yerine getch(); yazarakta programı ekranda tutabilirsiniz.




  • INT_MIN int değişkene atanabilecek en küçük sayı (benim sistemde -2147483648). Bunun max olanları var, diğer türde olanları var, hepsi limits.h içinde sembolik sabit olarak tanımlı. Peki niye direkt o sayıyı yazmadık ta (hard coding) semboliğini yazdık? Sebebi hem hatadan korunmak hem de programı taşınabilir (her ortamda derlenip çalışabilen) bir hale getirmek. C/C++ ta char haricinde hiçbir değişken türünün standart bir uzunluğu yoktur, limits.h gibi başlık dosyaları ile uyumluluk sağlanır.

    Birde stdint.h var. Diyelimki bir değişkene ihtiyacınız var ve "kesinlikle" 32 bit olmalı. Eğer siz bunu int olarak tanımlarsanız hata edersiniz. Sizin sisteminizde int 32 bit olabilir ama başka bir ortamda 16, 32 veya 64 olabilir. Bu değişkeni int yerine stdint.h dosyasında tanımlanan "int32_t" yaparsanız işiniz garanti olur. Aynı şekilde mutlaka 64 bit gerekiyorsa int64_t var ve bunların başında "u" olan unsigned olanları var. uint16_t gibi.

    Konuya dönelim.
    buyuk2 ye atanan INT_MIN gereksiz olmuş, sonradan farkettim. buyuk1 e atanan ise algoritmanın bir parçası. Eğer bunu yapmamış olsaydık ilk aldığımız sayıyı en büyük varsayıp buyuk1 e atmamız gerekecekti. Bu da döngü yapısını bozacaktı (strahd_von_zarovich in örneğindeki gibi.).

    Yukarıda taşınabilirlikten bahsetmiştik. system("pause"); satırı, programı windows tan başka bir ortama "taşınamaz" hale getirir. Mesela ben şu an linux tayım. O kodu aynen kopyalasam derlenir ama çalışmaz çünkü linux ta pause komutu yok. getch() ise standart değil, bende getch yok mesela. İlla ki durdurucu bir kod ekleyecek iseniz getchar() koyun, bu standarttır.
    http://www.cplusplus.com/reference/clibrary/cstdio/getchar/

    Ama dediğim gibi en iyisi onların hepsini silip konsol penceresi açarak çalıştırmak. Çalıştığınız IDE kendisi çalıştır penceresi açıyorsa onu da kullanabilirsiniz.




  • Teşekkürler ederim , çok iyi anladım . Not ala ala gidicem artık okullar açılasıya kadar baya bir sorum olur .

    Burada ekrana ne yazdirir demiş ama , printf de ne yapılıyor anlamadım .

    #include <stdio.h> 


    int main()
    {
    int sayac=1;

    while(sayac<=10){

    printf("%s\n",sayac%2?"****":"++++++++");
    ++sayac;
    }


    return 0;
    }
  • Bir de buradaki işleyiş tam olarak nasıl , x=9 ve y=11 dedik diyelim. X in doğruluğuna bakıyor doğru olduğu için y nin doğruluğuna bakıyor o da doğru olduğundan * lı satırı oynatıyor, $ satır ne olursa olsun zaten yazılacak dimi ? x=11, y=9 dediğimizde ise sadece $ lı satır yazılacak, yani kısaca # lı satırı yazdırmak için x e doğru değeri , y ye ise yanlış değeri vermek gerekiyor ?

    if(x<10)
    if(y>10)
    printf("*****\n");
    else
    printf("#####\n");
    printf("$$$$$\n");



    < Bu mesaj bu kişi tarafından değiştirildi strahd_von_zarovich -- 29 Ağustos 2012; 20:34:35 >
  • parantezleri nerde bu kodun ya. öğrenmenin kolay yolu var kodu çalıştır öğren buraya yazmanın manası yok ki?



    < Bu mesaj bu kişi tarafından değiştirildi TeaTone -- 29 Ağustos 2012; 22:15:51 >
  • quote:

    Orijinalden alıntı: strahd_von_zarovich

    Bir de buradaki işleyiş tam olarak nasıl , x=9 ve y=11 dedik diyelim. X in doğruluğuna bakıyor doğru olduğu için y nin doğruluğuna bakıyor o da doğru olduğundan * lı satırı oynatıyor, $ satır ne olursa olsun zaten yazılacak dimi ? x=11, y=9 dediğimizde ise sadece $ lı satır yazılacak, yani kısaca # lı satırı yazdırmak için x e doğru değeri , y ye ise yanlış değeri vermek gerekiyor ?

    if(x<10)
    if(y>10)
    printf("*****\n");
    else
    printf("#####\n");
    printf("$$$$$\n");

    x'e doğru y'ye yanlış değer verirsen, yani mesela x=9, y=11 verirsen, çıktı olarak hem ##### hemde $$$$ elde edersin..

    Eğer x=11,y=9; yaparsan $$$$$ elde edersin. vs kendin deneyerekte görebilirsin.
  • quote:

    Orijinalden alıntı: TeaTone

    parantezleri nerde bu kodun ya. öğrenmenin kolay yolu var kodu çalıştır öğren buraya yazmanın manası yok ki?

    Parantezleri nerede bu kodun Paul J Deitel ? Alıştırma soruları hocam parantezsiz işleyişi anlamak için. Kodu çalıştırıp teyit ettim zaten , işleyişi tam olarak anlamak için sordum.
  • quote:

    Orijinalden alıntı: £XE

    quote:

    Orijinalden alıntı: strahd_von_zarovich

    Bir de buradaki işleyiş tam olarak nasıl , x=9 ve y=11 dedik diyelim. X in doğruluğuna bakıyor doğru olduğu için y nin doğruluğuna bakıyor o da doğru olduğundan * lı satırı oynatıyor, $ satır ne olursa olsun zaten yazılacak dimi ? x=11, y=9 dediğimizde ise sadece $ lı satır yazılacak, yani kısaca # lı satırı yazdırmak için x e doğru değeri , y ye ise yanlış değeri vermek gerekiyor ?

    if(x<10)
    if(y>10)
    printf("*****\n");
    else
    printf("#####\n");
    printf("$$$$$\n");

    x'e doğru y'ye yanlış değer verirsen, yani mesela x=9, y=11 verirsen, çıktı olarak hem ##### hemde $$$$ elde edersin..

    Eğer x=11,y=9; yaparsan $$$$$ elde edersin. vs kendin deneyerekte görebilirsin.

    Hepsini denedim hocam zaten de genede yanlış bir şeyler öğrenmemek için sordum teşekkür ederim .

    printf("%s\n",sayac%2?"****":"++++++++"); Burada tam olarak ne yapılıyor ?




  • Hocam bir tavsiyede bulunmak istiyorum. Ben visual studio kullanıyorum ve debug modu çok işime yarıyor hiç birşey anlamadığım bir koddan bile adım adım çalıştırarak nasıl işlediğini anlayabiliyorum. Bu tarz problemlerinide o şekilde kullanımla çok rahat anlayabilirsin.
  • quote:

    Orijinalden alıntı: strahd_von_zarovich

    Teşekkürler ederim , çok iyi anladım . Not ala ala gidicem artık okullar açılasıya kadar baya bir sorum olur .

    Burada ekrana ne yazdirir demiş ama , printf de ne yapılıyor anlamadım .

    #include <stdio.h> 


    int main()
    {
    int sayac=1;

    while(sayac<=10){

    printf("%s\n",sayac%2?"****":"++++++++");
    ++sayac;
    }


    return 0;
    }



    Dediğim gibi C'a tam hakim değilim..
    Şu linki inceleyerek öğrenebilirsin.
    http://www.cplusplus.com/reference/clibrary/cstdio/printf/



    < Bu mesaj bu kişi tarafından değiştirildi £XE -- 30 Ağustos 2012; 14:18:24 >




  • quote:

    Orijinalden alıntı: TeaTone

    Hocam bir tavsiyede bulunmak istiyorum. Ben visual studio kullanıyorum ve debug modu çok işime yarıyor hiç birşey anlamadığım bir koddan bile adım adım çalıştırarak nasıl işlediğini anlayabiliyorum. Bu tarz problemlerinide o şekilde kullanımla çok rahat anlayabilirsin.

    Visual stdio yu nasıl kullanıyoruz hocam gerçekten öyle bir şey çok işe yarar .
  • printf ile alakası yok.
    printf("%s\n", sayac % 2 ? "****" : "++++++++");

    Koşul operatörü ?:
  • quote:

    Orijinalden alıntı: strahd_von_zarovich

    quote:

    Orijinalden alıntı: TeaTone

    Hocam bir tavsiyede bulunmak istiyorum. Ben visual studio kullanıyorum ve debug modu çok işime yarıyor hiç birşey anlamadığım bir koddan bile adım adım çalıştırarak nasıl işlediğini anlayabiliyorum. Bu tarz problemlerinide o şekilde kullanımla çok rahat anlayabilirsin.

    Visual stdio yu nasıl kullanıyoruz hocam gerçekten öyle bir şey çok işe yarar .

    Sadece visual studio da değil çoğunda var o. Senin kullandığın IDE ne?
  • arkadaşlar şöyle bir hata alıyorum .Yazmaya başlaıktan sonra hep bu hata alıyor ve hep kapanıyor .


    http://oi45.tinypic.com/33pbo1k.jpg
  • quote:

    Orijinalden alıntı: elektro_gadget

    printf ile alakası yok.
    printf("%s\n", sayac % 2 ? "****" : "++++++++");

    Koşul operatörü ?:


    Elektro gadget hocamın demesiyle wikipedia araştırdım , heralde kitapta ilerlerken gözümden kaçtı ya da önemsemedim , neyse sayacın 2 ye bölümünden kalan 0 ise koşulu yanlış olarak algılıyor ve : nin sağındaki yeri oynatıyor , sayac%2 0 dan farklıysa : nin solunu oynatıyor . Tabi bu koşullar içinde geçerli yani 5>3 olsaydı doğru olarak kabul edip gene : nin sol tarafını oynatacaktı .


    Hocam bu arada DevC++ ı kullanıyorum.




  • quote:

    Orijinalden alıntı: PLinux

    arkadaşlar şöyle bir hata alıyorum .Yazmaya başlaıktan sonra hep bu hata alıyor ve hep kapanıyor .


    http://oi45.tinypic.com/33pbo1k.jpg

    İnternete biraz baktım fakat pek birşey bulamadım. Sorunun nasıl çözüleceğiyle ilgili net fikrim yok.. Sizin bilgisayarınızdanda kaynaklanıyor olabilir. Visual Studio'yu kaldırıp tekrar kurun eğer sorun çözülmesse express yerine başka versiyonlarında deneyin.. Bu kadar yardımcı olabiliyorum...




  • Up
  • 
Sayfa: önceki 89101112
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.