Şimdi Ara

C++ If Döngüsü Hatası

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
22
Cevap
0
Favori
2.853
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Arkadaşlar aşağıdaki programda if döngüsünü bir türlü çalıştıramadım, nerede hata yapıyorum;

    quote:

    /*If Döngüsü*/
    #include <stdio.h>

    int main()
    {
    int sayi1, sayi2;

    printf ("iki tamsayi giriniz\n");
    printf ("bu iki tamsayi karsilastirilacak:\n");
    scanf ("%d%d", &sayi1, &sayi2); /*verilerin girilmesi*/

    if(sayi1==sayi2);
    printf ("%d esittir %d\n", sayi1, sayi2);

    if(sayi1!=sayi2);
    printf ("%d esit degildir %d\n", sayi1, sayi2);

    if(sayi1>sayi2);
    printf ("%d buyuktur %d\n", sayi1, sayi2);

    if(sayi1<sayi2);
    printf ("%d kucuktur %d\n", sayi1, sayi2);

    if(sayi1>=sayi2);
    printf ("%d buyuk ya da esittir %d\n", sayi1, sayi2);

    if(sayi1<=sayi2);
    printf ("%d kucuk ya da esittir %d\n", sayi1, sayi2);

    return 0; /*Veri hesaplama işleminin sonlandırılması*/
    }





    Şimdi buradaki tüm if'leri silsem dahi sonuç değişmiyor, sayıları ne girersem gireyim tüm sonuçları birden veriyor. If döngüsünde sadece olasılık dahilinde olanları vermesi gerekiyor bu sebeple hata göstermese de program hatalı, içinden çıkamadım burada hata nerede??? Lütfen yardımcı olabilir misiniz?

    NOT: Code Blocks programı kullanıyorum.







  • if ( ... ) ;<---- Bu noktalı virgülleri sil.
  • quote:

    Orijinalden alıntı: amone

    Bu mesaj silindi.
    @OnurJAM teşekkürler.

    @amone program hiçbir şekilde hata vermiyor, kendin girip deneyebilirsin. Aslında dökümanlara baktım ama öğleden beri çalışıyorum sanırım biraz beynim sulandı nasıl farkedemedim bilmiyorum en iyisi çalışmaya biraz ara vereyim. :((
  • quote:

    Orijinalden alıntı: Arsenic

    @OnurJAM teşekkürler.

    @amone program hiçbir şekilde hata vermiyor, kendin girip deneyebilirsin. Aslında dökümanlara baktım ama öğleden beri çalışıyorum sanırım biraz beynim sulandı nasıl farkedemedim bilmiyorum en iyisi çalışmaya biraz ara vereyim. :((

    Alıntıları Göster
    kullandığın derleyiciyi değiştir . dev c++ tavsiye ederim.
  • quote:

    Orijinalden alıntı: redwyne

    kullandığın derleyiciyi değiştir . dev c++ tavsiye ederim.

    Alıntıları Göster
    Aslında derleyiciden ben de memnun değilim, Türkçe karakterleri dahi göstermiyor ama bizden özellikle bu derleyiciyi kullanmamızı istediler. Mecbur kaldığım için kullanıyorum. :((
  • quote:

    Orijinalden alıntı: Arsenic

    Aslında derleyiciden ben de memnun değilim, Türkçe karakterleri dahi göstermiyor ama bizden özellikle bu derleyiciyi kullanmamızı istediler. Mecbur kaldığım için kullanıyorum. :((


    Codeblocks gcc kullanır. Ücretsiz olarak daha iyisini bulamazsın. Yazdığın kodlarda zaten hata vermez, syntax error değil o. Warning verir o da -Wall parametresi ile derlersen.

    Bu arada türkçe karakter mevzusu derleyici ile alakalı değil.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 22 Kasım 2010; 0:30:50 >
  • quote:

    Orijinalden alıntı: amone

    Bu mesaj silindi.

    Alıntıları Göster
    Bence de syntax error sayılamaz, sadece koşulun gerçekleşmesi durumunda yapılacak iş belirtilmemiş oluyor.
    Mevzu-bahis IDE'ler böyle bir lüzumsuzluğu engellemek adına hata mesajı veriyor olabilirler... hop, yorumla mürsel



    < Bu mesaj bu kişi tarafından değiştirildi un.real -- 22 Kasım 2010; 9:25:28 >
  • quote:

    Orijinalden alıntı: un.real

    Bence de syntax error sayılamaz, sadece koşulun gerçekleşmesi durumunda yapılacak iş belirtilmemiş oluyor.
    Mevzu-bahis IDE'ler böyle bir lüzumsuzluğu engellemek adına hata mesajı veriyor olabilirler... hop, yorumla mürsel

    Alıntıları Göster
    ben bu tarz hatalarda error vermeyen derleyiciye derleyici demem.
  • quote:

    Orijinalden alıntı: borntobewild

    ben bu tarz hatalarda error vermeyen derleyiciye derleyici demem.


    O zaman sen basic le falan oyna çünkü bu duruma error veren c derleyicisini zor bulursun.
  • quote:

    Orijinalden alıntı: Guest-BF8E9B238

    quote:

    Orijinalden alıntı: borntobewild

    ben bu tarz hatalarda error vermeyen derleyiciye derleyici demem.


    O zaman sen basic le falan oyna çünkü bu duruma error veren c derleyicisini zor bulursun.

    Alıntıları Göster
    vb.net ve matlab'la oynuyorum bu aralar.
  • quote:

    Orijinalden alıntı: redwyne

    vb.net ve matlab'la oynuyorum bu aralar.

    Alıntıları Göster
    Bu syntax error değil, semantic bir hatadır. Syntax error olması icin C'nin gramer yapısına aykırı olması lazım, böyle bir durum söz konusu değil.
    quote:


    ben bu tarz hatalarda error vermeyen derleyiciye derleyici demem.


    Gnu Compiler Collection (gcc) yazarları üzüntüden yas ilan etmişler bu lafın üzerine..




  • quote:

    Orijinalden alıntı: amone


    quote:

    Orijinalden alıntı: elektro_gadget

    quote:

    Orijinalden alıntı: Arsenic

    Aslında derleyiciden ben de memnun değilim, Türkçe karakterleri dahi göstermiyor ama bizden özellikle bu derleyiciyi kullanmamızı istediler. Mecbur kaldığım için kullanıyorum. :((


    Codeblocks gcc kullanır. Ücretsiz olarak daha iyisini bulamazsın. Yazdığın kodlarda zaten hata vermez, syntax error değil o. Warning verir o da -Wall parametresi ile derlersen.

    Bu arada türkçe karakter mevzusu derleyici ile alakalı değil.


    neresi syntax error değil?
    visual studio yada dev c++ gibi bir IDE bu durumda direk error verir ve hatayı belirtir
    arkadaşın ne kullandığını bilmiyorum


    Dev-C++ için konuşuyorum;

    if (..); satırını yorumlarken
    if (..)
    ;
    tarzında yaklaşır. Yani if bloğunun altında tek satırlık boş kod olduğunu varsayar. Aynı şey for döngüsü için de geçerlidir.
    Syntax hatası değildir.




  • quote:

    Orijinalden alıntı: qamyoncu

    Dev-C++ için konuşuyorum;

    if (..); satırını yorumlarken
    if (..)
    ;
    tarzında yaklaşır. Yani if bloğunun altında tek satırlık boş kod olduğunu varsayar. Aynı şey for döngüsü için de geçerlidir.
    Syntax hatası değildir.



    if (..);
    if (..)
    ;

    bu ikisi arasında hicbir fark yok. compiler'da token analizi yapılırken zaten whitespace karakterleri ignore edilir. yani if(...) yazıp 7 tane bos satır bırakıp ; koysan bile herhangi bir hata almazsın. Aslında senin yazdıgının tam tersi doğru yani;
    if(...)

    ;
    compile sırasında
    if(...);
    olarak parse edilir.

    Ayrıca ISO C'de (yani hepimizin bildiği standard C) yazılan bir kod, aynı platformda hangi C compilerın'da derlenirse derlensin alınan hata veya hatasız bir kodsa executable'ın yapacağı iş aynıdır. Yani dev C'de söyle, code::blocks'ta böyle, MSVC'de söyle diye bir olay yok.




  • quote:

    Orijinalden alıntı: OnurJAM

    quote:

    Orijinalden alıntı: qamyoncu

    Dev-C++ için konuşuyorum;

    if (..); satırını yorumlarken
    if (..)
    ;
    tarzında yaklaşır. Yani if bloğunun altında tek satırlık boş kod olduğunu varsayar. Aynı şey for döngüsü için de geçerlidir.
    Syntax hatası değildir.



    if (..);
    if (..)
    ;

    bu ikisi arasında hicbir fark yok. compiler'da token analizi yapılırken zaten whitespace karakterleri ignore edilir. yani if(...) yazıp 7 tane bos satır bırakıp ; koysan bile herhangi bir hata almazsın. Aslında senin yazdıgının tam tersi doğru yani;
    if(...)

    ;
    compile sırasında
    if(...);
    olarak parse edilir.

    Ayrıca ISO C'de (yani hepimizin bildiği standard C) yazılan bir kod, aynı platformda hangi C compilerın'da derlenirse derlensin alınan hata veya hatasız bir kodsa executable'ın yapacağı iş aynıdır. Yani dev C'de söyle, code::blocks'ta böyle, MSVC'de söyle diye bir olay yok.

    Alıntıları Göster
    Yazışmalarınız sayesinde derleyiciler hakkında da biraz bilgi sahibi oldum.




  • quote:

    Orijinalden alıntı: Arsenic

    Yazışmalarınız sayesinde derleyiciler hakkında da biraz bilgi sahibi oldum.

    Alıntıları Göster
    quote:


    sözdizimi hatası yapıyorsun, hiçbirşekilde if'ten sonra ; kullanılmaz

    if deyiminden sonra ; kullanılır ve C standartları açısından doğru bir kullanımdır. if deyiminden sonra direk olarak ; kullanırsanız bu koşul sağladığında hiçbirşey yapma anlamına gelir. Kısaca ; boş deyimdir ve de profesyonel programcılar tarafından çokça kullanılır.
    quote:


    IF ve koşuldan sonra ; gelmez, {} içerisine çalıştırılacak olan kod yazılır

    Eğer if koşulu sağladığında birden fazla deyim çalıştırılması gerekiyorsa o zaman {} kullanılması gerekir. Bunun dışında yukarıdaki programda olduğu gibi tek deyim varsa {} kullanmaya gerek yoktur.
    Not: aşağıdakilerin hepsi tek deyimdir.
     
    printf("cevap");

    //////////////////////////////////

    for (i = 0; i < 10; i++)
    printf("cevap");

    ////////////////////////////////

    if (c == 3)
    printf("cevap");
    else
    printf("xxxx");


    Örneğin yukarıdaki for döngüsünü bir if koşulu sağladığında çalıştırmanız gerekiyor. Aşağıdaki gibi yazmalısınız
     
    if (c == 3)
    for (i = 0; i < 10; i++)
    printf("cevap");

    Yani if koşulundan sonra {} açmanıza gerek yok.

    quote:


    kullandığın derleyiciyi değiştir . dev c++ tavsiye ederim.

    Birkaç mesajda geçmiş ama direk uyarı mahiyetinde olmamış. dev C++ bir tümleşik yazılım geliştirme ortamıdır (IDE - integrated development enviroment) derleyici değildir. gcc derleyicisini kullanır. derleyici ile kullanıcı arasında bir arayüzde denilebilir. visual studio daha gelişmiş bir IDE'dir ve içerisinde kendi derleyicisini bulundurur.




  • quote:

    Orijinalden alıntı: bozcaa

    quote:


    sözdizimi hatası yapıyorsun, hiçbirşekilde if'ten sonra ; kullanılmaz

    if deyiminden sonra ; kullanılır ve C standartları açısından doğru bir kullanımdır. if deyiminden sonra direk olarak ; kullanırsanız bu koşul sağladığında hiçbirşey yapma anlamına gelir. Kısaca ; boş deyimdir ve de profesyonel programcılar tarafından çokça kullanılır.
    quote:


    IF ve koşuldan sonra ; gelmez, {} içerisine çalıştırılacak olan kod yazılır

    Eğer if koşulu sağladığında birden fazla deyim çalıştırılması gerekiyorsa o zaman {} kullanılması gerekir. Bunun dışında yukarıdaki programda olduğu gibi tek deyim varsa {} kullanmaya gerek yoktur.
    Not: aşağıdakilerin hepsi tek deyimdir.
     
    printf("cevap");

    //////////////////////////////////

    for (i = 0; i < 10; i++)
    printf("cevap");

    ////////////////////////////////

    if (c == 3)
    printf("cevap");
    else
    printf("xxxx");


    Örneğin yukarıdaki for döngüsünü bir if koşulu sağladığında çalıştırmanız gerekiyor. Aşağıdaki gibi yazmalısınız
     
    if (c == 3)
    for (i = 0; i < 10; i++)
    printf("cevap");

    Yani if koşulundan sonra {} açmanıza gerek yok.

    quote:


    kullandığın derleyiciyi değiştir . dev c++ tavsiye ederim.

    Birkaç mesajda geçmiş ama direk uyarı mahiyetinde olmamış. dev C++ bir tümleşik yazılım geliştirme ortamıdır (IDE - integrated development enviroment) derleyici değildir. gcc derleyicisini kullanır. derleyici ile kullanıcı arasında bir arayüzde denilebilir. visual studio daha gelişmiş bir IDE'dir ve içerisinde kendi derleyicisini bulundurur.

    Alıntıları Göster
    Bu kadar üzerinde durmaya gerek yok. amone bunları bilmeyecek değil, belli ki dalgınlığına gelmiş.


    quote:


    if deyiminden sonra direk olarak ; kullanırsanız bu koşul sağladığında hiçbirşey yapma anlamına gelir. Kısaca ; boş deyimdir ve de profesyonel programcılar tarafından çokça kullanılır.

    Ne gibi mesela? Bir örnek rica etsek kullanımıyla ilgili.


    quote:


    Örneğin yukarıdaki for döngüsünü bir if koşulu sağladığında çalıştırmanız gerekiyor. Aşağıdaki gibi yazmalısınız
    if (c == 3)
    for (i = 0; i < 10; i++)
    printf("cevap");

    İşe sadece teknik değil, okunabilirlik yönünden de bakmak lazım. Bu kod çalışacak olsa dahi parantez arasına almak daha iyidir. Çünkü bu örneği ifadeleri içiçe yazarak istediğin kadar uzatabilirsin. Yine de bloklamadan mı yazacaksın?



    < Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 23 Kasım 2010; 14:01:24 >




  • quote:

    Orijinalden alıntı: Guest-BF8E9B238

    Bu kadar üzerinde durmaya gerek yok. amone bunları bilmeyecek değil, belli ki dalgınlığına gelmiş.


    quote:


    if deyiminden sonra direk olarak ; kullanırsanız bu koşul sağladığında hiçbirşey yapma anlamına gelir. Kısaca ; boş deyimdir ve de profesyonel programcılar tarafından çokça kullanılır.

    Ne gibi mesela? Bir örnek rica etsek kullanımıyla ilgili.


    quote:


    Örneğin yukarıdaki for döngüsünü bir if koşulu sağladığında çalıştırmanız gerekiyor. Aşağıdaki gibi yazmalısınız
    if (c == 3)
    for (i = 0; i < 10; i++)
    printf("cevap");

    İşe sadece teknik değil, okunabilirlik yönünden de bakmak lazım. Bu kod çalışacak olsa dahi parantez arasına almak daha iyidir. Çünkü bu örneği ifadeleri içiçe yazarak istediğin kadar uzatabilirsin. Yine de bloklamadan mı yazacaksın?

    Alıntıları Göster
    Bazı arkadaşlar gereken cevabı vermişler. Benim önerim kesinlikle Visual Studio 2006 C için. Ayrıca if bir döngü değildir ;) condition yani durum kontrol içindir.




  • quote:

    Orijinalden alıntı: saxahan

    Bazı arkadaşlar gereken cevabı vermişler. Benim önerim kesinlikle Visual Studio 2006 C için. Ayrıca if bir döngü değildir ;) condition yani durum kontrol içindir.


    Üniversitedeki hoca "if döngüsü" diyor, ben onun yalancısıyım.
  • quote:

    Orijinalden alıntı: Arsenic

    Üniversitedeki hoca "if döngüsü" diyor, ben onun yalancısıyım.


    Eyvah diyorum sana. if e döngü diyen hocanın hangi sözüne güveneceksin.

    Yok yav çok kızdım. Ülkede eğitim kimlerin eline kalmış. Size de yazık, dışardan destek alıp kendinizi geliştirmezseniz ancak hesap makinesi kodu yazarsınız. O da zor ama neyse..



    < Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 26 Kasım 2010; 11:22:18 >
  • quote:

    Orijinalden alıntı: elektro_gadget

    quote:

    Orijinalden alıntı: Arsenic

    Üniversitedeki hoca "if döngüsü" diyor, ben onun yalancısıyım.


    Eyvah diyorum sana. if e döngü diyen hocanın hangi sözüne güveneceksin.

    Yok yav çok kızdım. Ülkede eğitim kimlerin eline kalmış. Size de yazık, dışardan destek alıp kendinizi geliştirmezseniz ancak hesap makinesi kodu yazarsınız. O da zor ama neyse..


    Ondan kendim kaynak falan bulup çalışamaya çalışıyorum. Buradaki arkadaşlara soruyorum.
    Özellikle hocalardan birisi yazılan programlardaki hatayı bile bulamıyordu ki daha görüldüğü üzere en başlardayız, ilerisinden korkuyorum ben.
    Extra kaynaklara çalışarak forumdai arkadaşlara sorarak eksikleri kapatmaya çalışmaktan başka şansım yok gibi. :((




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