Şimdi Ara

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

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

    Orijinalden alıntı: Servius

    ----Konu hala aktifse---
    Arkadaşlar bu işlere yeni yeni merak saldım.
    Öncelikle bir sorum var

    #include <iostream>
    #include <conio.h>
    using namespace std;

    main(){

    int a[3]={2,5,6};
    int x;

    for(x=0;x<=3;x++){
    cout << a[x] << "\n";
    }

    getch ();
    return 0;

    }
    Kod bu.Şimdi bunu çıktısı 2,5,6,2 oluyor fakat anlamadığım olay ben 3 için dizide değer tanımlamadım fakat program değer 0 daki yani 2 yi yazdırdı bunun nedeni nedir acaba ?

    Hocam orda 2'nin yazması şans eseri denk gelmiş sanırım çünkü sen bellekteki t, (t+1) ve (t+2) adreslerine değer atıyosun döngünde x=3 olduğu zaman program (t+3) adresindeki değeri veriyo sana bu değer de çok düşük bi olasılık olmasına rağmen 2'ymiş.




  • quote:

    Orijinalden alıntı: Mtntk

    quote:

    Orijinalden alıntı: Servius

    ----Konu hala aktifse---
    Arkadaşlar bu işlere yeni yeni merak saldım.
    Öncelikle bir sorum var

    #include <iostream>
    #include <conio.h>
    using namespace std;

    main(){

    int a[3]={2,5,6};
    int x;

    for(x=0;x<=3;x++){
    cout << a[x] << "\n";
    }

    getch ();
    return 0;

    }
    Kod bu.Şimdi bunu çıktısı 2,5,6,2 oluyor fakat anlamadığım olay ben 3 için dizide değer tanımlamadım fakat program değer 0 daki yani 2 yi yazdırdı bunun nedeni nedir acaba ?

    Hocam orda 2'nin yazması şans eseri denk gelmiş sanırım çünkü sen bellekteki t, (t+1) ve (t+2) adreslerine değer atıyosun döngünde x=3 olduğu zaman program (t+3) adresindeki değeri veriyo sana bu değer de çok düşük bi olasılık olmasına rağmen 2'ymiş.

    Çok teşekkür ederim cevabınız için şans eseride olsa görünce baya bir kafamı karıştırmıştı sağolsun ama şimdi anladım gibi :) .
    Bu diziler ne zor işmiş arkadaş




  • @source aslında çözmüştü fakat henüz array işlemediğimiz için array kullanılmadan yapılması gerekiyormuş. ben de array'siz yapmaya çalıştım fakat yine tıkandım.

    1-2 sorum olacak size



    1- 1.maddede not getirtemiyorum, 2.maddeyi hiç yapamadım, 1 olursa 2 olmuyor 2 olursa 1 olmuyor. En önemli sorunum bu. fonksiyonlarda sıkıntım var sınıftan çağırmaları yapamadım hiç
    2- biraz önce not'u yazdırırken sorun yoktu ama şimdi çalıştırınca 1,2,3.maddelerdeki not ortalaması ya da diğer maddelerdeki not ortalamalarını yazmıyor.

    yarın teslim etmem lazım yardımcı olacak olursa çok çok çok sevinirim.

    #include <iostream>  
    #include "ogrenci.h"
    using namespace std;

    class ogrenci

    {

    double siniftopnot ;
    double mevcut2;
    double maks;

    public:

    int maxbul(){return maks;}

    int ortbul(double sinitopnot, double mevcut2){return siniftopnot/mevcut2 ; }

    };


    int min,maks;
    int mevcut,mevcut2;
    int maxno, maxisim;
    int isim;
    char harf, maxharf;
    int numara,odevnot,finalnot,vizenot,katilimnot;
    double orta1;
    int A,B,C,D,F;
    double siniftopnot;

    int main(){




    int ort=0;

    ogrenci p;
    siniftopnot=0;
    cout<<"Sinif Mevcudunu Giriniz : ";
    cin >>mevcut;
    mevcut2=mevcut;
    while (mevcut >0){


    cout <<"Ogrenci Numarasi :"<<endl;
    cin >> numara;
    cout <<"Adi Soyad :"<<endl;
    cin >> isim;
    cout<<"Vize Notu Giriniz :"<<endl;
    cin >> vizenot;
    cout<<"Odev Notu Giriniz "<<endl;
    cin >> odevnot;
    cout<<"Katilim Notu Giriniz "<<endl;
    cin >> katilimnot;
    cout<<"Final Notu Giriniz "<<endl;
    cin >> finalnot;
    system("cls");
    mevcut--;

    orta1 =((0.3)*vizenot + (0.2)*odevnot + (0.1)*katilimnot + (0.4)*finalnot );

    siniftopnot=(siniftopnot+orta1);

    if (orta1 >= 90){
    harf = 'A';
    A++;

    }
    else if (orta1 >=80){
    harf= 'B';
    B++;
    }
    else if (orta1 >=70){
    harf ='C';
    C++;

    }
    else if (orta1 >=60){
    harf = 'D';
    D++;

    }
    else{
    harf ='F';
    F++;

    }

    }
    system("cls");
    if (orta1>maks){
    maks=orta1;

    maxisim=isim;
    maxno=numara;
    maxharf=harf;
    }




    int secim;

    do {

    cout << "1. Ortalamasi En Yuksek Ogrenci Bilgileri : "<<endl;
    cout << "2. Ortalamasi En Dusuk Ogrenci Bilgileri : "<<endl;
    cout << "3. Sinif Ortalamasi : "<<endl;
    cout << "4. A Harfi Notu Alan Ogrenci Sayisi : "<<endl;
    cout << "5. B Harfi Notu Alan Ogrenci Sayisi : "<<endl;
    cout << "6. C Harfi Notu Alan Ogrenci Sayisi : "<<endl;
    cout << "7. D Harfi Notu Alan Ogrenci Sayisi : "<<endl;
    cout << "8. F Harfi Notu Alan Ogrenci Sayisi : "<<endl;
    cout << "9. Basarili Ogrenci Sayisi (A+B+C) : "<<endl;
    cout << "10.Basarisiz Ogrenci Sayisi (D+F) : "<<endl;
    cout << "Islem Turunu Seciniz (1...10, Cikis Icin 0 Giriniz) :"<<endl;

    cin>>secim;


    switch(secim){
    case 1:
    cout << "Ortalamasi En Yuksek Ogrenci Bilgileri " <<endl;
    cout << "********************************************"<<endl;
    cout<< "Isim :" <<maxisim<< " Numara : " <<maxno <<" Not : " <<p.maxbul() << " Harf : "<<maxharf<<endl;
    break;

    case 2:
    cout << "tey"<<endl;
    break;

    case 3:
    cout<<"Sinif Ortalamasi : "<<p.ortbul(siniftopnot,mevcut2)<<endl;
    break;

    case 4:
    cout<<"A Harfi Notu Alan Ogrenci Sayisi : "<<A<<endl;
    break;

    case 5:
    cout<<"B Harfi Notu Alan Ogrenci Sayisi : "<<B<<endl;
    break;

    case 6:
    cout<<"C Harfi Notu Alan Ogrenci Sayisi : "<<C<<endl;
    break;

    case 7:
    cout<<"D Harfi Notu Alan Ogrenci Sayisi : "<<D<<endl;
    break;

    case 8:
    cout<<"F Harfi Notu Alan Ogrenci Sayisi : "<<F<<endl;
    break;

    case 9:
    cout<<"Basarili Ogrenci Sayisi (A+B+C) : "<<A+B+C<<endl;
    break;

    case 10:
    cout<<"Basarisiz Ogrenci Sayisi (D+F) : "<<D+F<<endl;
    break;

    }

    cout <<endl;
    }

    while (secim != 0);

    system ("PAUSE");
    return 0;


    }



    < Bu mesaj bu kişi tarafından değiştirildi Seviyeli Yarbay -- 3 Şubat 2013; 22:09:07 >




  • quote:

    Orijinalden alıntı: Seviyeli Yarbay

    @source aslında çözmüştü fakat henüz array işlemediğimiz için array kullanılmadan yapılması gerekiyormuş. ben de array'siz yapmaya çalıştım fakat yine tıkandım.

    1-2 sorum olacak size



    1- 2.maddeyi hiç yapamadım, 1 olursa 2 olmuyor 2 olursa 1 olmuyor.
    2- biraz önce not'u yazdırırken sorun yoktu ama şimdi çalıştırınca 1,2,3.maddelerdeki not ortalaması ya da diğer maddelerdeki not ortalamalarını yazmıyor.

    yarın teslim etmem lazım yardımcı olacak olursa çok çok çok sevinirim.

    #include <iostream>  
    #include "ogrenci.h"
    using namespace std;

    class ogrenci

    {

    double siniftopnot ;
    double mevcut2;
    double maks;

    public:

    int maxbul(){return maks;}

    int ortbul(double sinitopnot, double mevcut2){return siniftopnot/mevcut2 ; }

    };


    int min,maks;
    int mevcut,mevcut2;
    int maxno, maxisim, maxharf;
    int isim;
    char harf;
    int numara,odevnot,finalnot,vizenot,katilimnot;
    double orta1;
    int A,B,C,D,F;
    double siniftopnot;

    int main(){




    int ort=0;

    ogrenci p;
    siniftopnot=0;
    cout<<"Sinif Mevcudunu Giriniz : ";
    cin >>mevcut;
    mevcut2=mevcut;
    while (mevcut >0){


    cout <<"Ogrenci Numarasi :"<<endl;
    cin >> numara;
    cout <<"Adi Soyad :"<<endl;
    cin >> isim;
    cout<<"Vize Notu Giriniz :"<<endl;
    cin >> vizenot;
    cout<<"Odev Notu Giriniz "<<endl;
    cin >> odevnot;
    cout<<"Katilim Notu Giriniz "<<endl;
    cin >> katilimnot;
    cout<<"Final Notu Giriniz "<<endl;
    cin >> finalnot;
    system("cls");
    mevcut--;

    orta1 =((0.3)*vizenot + (0.2)*odevnot + (0.1)*katilimnot + (0.4)*finalnot );

    siniftopnot=(siniftopnot+orta1);

    if (orta1 >= 90){
    harf = 'A';
    A++;

    }
    else if (orta1 >=80){
    harf= 'B';
    B++;
    }
    else if (orta1 >=70){
    harf ='C';
    C++;

    }
    else if (orta1 >=60){
    harf = 'D';
    D++;

    }
    else{
    harf ='F';
    F++;

    }

    }
    system("cls");
    if (orta1>maks){
    maks=orta1;

    maxisim=isim;
    maxno=numara;
    maxharf=harf;
    }




    int secim;

    do {

    cout << "1. Ortalamasi En Yuksek Ogrenci Bilgileri : "<<endl;
    cout << "2. Ortalamasi En Dusuk Ogrenci Bilgileri : "<<endl;
    cout << "3. Sinif Ortalamasi : "<<endl;
    cout << "4. A Harfi Notu Alan Ogrenci Sayisi : "<<endl;
    cout << "5. B Harfi Notu Alan Ogrenci Sayisi : "<<endl;
    cout << "6. C Harfi Notu Alan Ogrenci Sayisi : "<<endl;
    cout << "7. D Harfi Notu Alan Ogrenci Sayisi : "<<endl;
    cout << "8. F Harfi Notu Alan Ogrenci Sayisi : "<<endl;
    cout << "9. Basarili Ogrenci Sayisi (A+B+C) : "<<endl;
    cout << "10.Basarisiz Ogrenci Sayisi (D+F) : "<<endl;
    cout << "Islem Turunu Seciniz (1...10, Cikis Icin 0 Giriniz) :"<<endl;

    cin>>secim;


    switch(secim){
    case 1:
    cout << "Ortalamasi En Yuksek Ogrenci Bilgileri " <<endl;
    cout << "********************************************"<<endl;
    cout<< "Isim :" <<maxisim<< " Numara : " <<maxno <<" Not : " <<p.maxbul() << " Harf : "<<maxharf<<endl;
    break;

    case 2:
    cout << "tey"<<endl;
    break;

    case 3:
    cout<<"Sinif Ortalamasi : "<<p.ortbul(siniftopnot,mevcut2)<<endl;
    break;

    case 4:
    cout<<"A Harfi Notu Alan Ogrenci Sayisi : "<<A<<endl;
    break;

    case 5:
    cout<<"B Harfi Notu Alan Ogrenci Sayisi : "<<B<<endl;
    break;

    case 6:
    cout<<"C Harfi Notu Alan Ogrenci Sayisi : "<<C<<endl;
    break;

    case 7:
    cout<<"D Harfi Notu Alan Ogrenci Sayisi : "<<D<<endl;
    break;

    case 8:
    cout<<"F Harfi Notu Alan Ogrenci Sayisi : "<<F<<endl;
    break;

    case 9:
    cout<<"Basarili Ogrenci Sayisi (A+B+C) : "<<A+B+C<<endl;
    break;

    case 10:
    cout<<"Basarisiz Ogrenci Sayisi (D+F) : "<<D+F<<endl;
    break;

    }

    cout <<endl;
    }

    while (secim != -1);

    system ("PAUSE");
    return 0;


    }


    A++, B++ yazmışsın ama sen bu değişkenleri tanımlarken ilklendirmemişsin.
    int A, B, C, D, F, G;
    A = B = C = D = F = G = 0;
    demen gerekiyor. Yoksa içlerinde çöp değer olur.

    ogrenci sınıfındaki maxbul fonksiyonun bir işe yaramaz. Sadece isim olarak max ama yaptığı bir işlem yok.

    f (orta1>maks){
    maks=orta1;

    Demişsin ama maks'ı yine ilklendirmeden kullanmışsın. İçinde çöp değer var. Ayrıca bu maks, ogrenci sınıfında ki maks'dan farklı bir değişken. Bu yüzden 1. ve 2. şıkkın doğru çalışmıyor.

    Şıkkalara gelirsek 1. şıkkının cevabında p.maxbul() demişsin ama sana ogrenci sınıfında ki içinde çöp değer olan maks değişkenini dönderecek. Doğal olarak sonuç yanlış olacak. Maxisim maxno yu yazdırmaa çalışmıssın ama yukarda bahsettigim sebepten dolayı( if(orta1 > maks) da ki maks değişkenin içi çöp olduğundan değerinin ne olacağı belli değil. Bazen if'in içine girecek bazen de girmeyecek.) hatalı.
    4,5,6,7,8,9,10. şıkklarında ki cevaplarında ilk başta bahsettiğim yanlışdan dolayı hatalı.



    < Bu mesaj bu kişi tarafından değiştirildi -Source- -- 3 Şubat 2013; 22:11:23 >




  • quote:

    Orijinalden alıntı: -Source-


    değerleri ilklendirdim fakat fonksiyonları yine de beceremedim, ilk 3'ü çalışmıyor :/
  • quote:

    Orijinalden alıntı: Seviyeli Yarbay

    quote:

    Orijinalden alıntı: -Source-


    değerleri ilklendirdim fakat fonksiyonları yine de beceremedim, ilk 3'ü çalışmıyor :/

    system("cls");
    if (orta1>maks){
    maks=orta1;

    maxisim=isim;
    maxno=numara;
    maxharf=harf;
    }
    bu kısımı hemen bunun üstünde ki } içine yaz yani while'ın içinde olacak ama en altında.

    Bu şekilde yazdırabilirsin. En yüksek notu olan öğrencinin ismini notunu felan.

    2. şık içinde yine while'ın içine maks'ı buldugun yerin hemen altına min kodunu yazcan.
    (min değişkeni ilklendirilmiş olacak üst tarafta.)
    if(orta1 < min)
    {
    min=orta1;

    minisim=isim;
    minno=numara;
    minharf=harf;
    }

    Özetlersem söyle görünecek kodun

    while()
    {
    // ...

    system("cls");
    if (orta1>maks){
    maks=orta1;

    maxisim=isim;
    maxno=numara;
    maxharf=harf;
    }
    if(orta1 < min)
    {
    min=orta1;

    minisim=isim;
    minno=numara;
    minharf=harf;
    }
    }

    // Devamında da do ..while içinde switch




  • hallettim, çalışıyor program teşekkür ederim yardımcı olanlara :)

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • getchar ve putchar ne işe yarıyor biri lütfen anlatsın.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: Tolgá

    getchar ve putchar ne işe yarıyor biri lütfen anlatsın.


    en.cppreference.com
    getchar - cppreference.com
    http://en.cppreference.com/w/c/io/getchar

    Standart giriş akımından(stdin) bir karakter okur.

    en.cppreference.com
    putchar - cppreference.com
    http://en.cppreference.com/w/c/io/putchar

    Standart çıkış akımına(stdout) bir karakter yazar. Aldığı parametre yazılacak karakter.

    Küçük bir örnek. Eğer kelime girilirse sadece ilk harfini alır.
     
    #include <stdio.h>
    int main()
    {
    // Bir karakter oku
    char giris = getchar();
    // Okunan karakteri ekrana yazdir.
    putchar(giris);
    return 0;
    }




    < Bu mesaj bu kişi tarafından değiştirildi -Source- -- 4 Şubat 2013; 16:12:06 >




  • Şuan döngüler, array, pointerlar, classlar,operatorler(clsslardaki operatörler falan) hakkında biraz bilgim var, yani sınırlarını bilmediğim için biliyorum diyemiyorum :) bundan sonra nasıl devam etmeliyim? ilerisi için napcğaımla ilgili hiç bi fikrim yok.

    ayrıca birde sorum var;
    this pointerı ne işe yarıyor alamadım tam olarak? küçük bi örnek kod falan göstereiblirseniz çok sevinirim



    < Bu mesaj bu kişi tarafından değiştirildi Lord Nibbler -- 4 Şubat 2013; 16:51:59 >
  • quote:

    Orijinalden alıntı: GhilleintheMist

    Şuan döngüler, array, pointerlar, classlar,operatorler(clsslardaki operatörler falan) hakkında biraz bilgim var, yani sınırlarını bilmediğim için biliyorum diyemiyorum :) bundan sonra nasıl devam etmeliyim? ilerisi için napcğaımla ilgili hiç bi fikrim yok.

    ayrıca birde sorum var;
    this pointerı ne işe yarıyor alamadım tam olarak? küçük bi örnek kod falan göstereiblirseniz çok sevinirim

    Aslında ben de senin gibiyim biraz biliyorum ama daha fazlasını öğrenmek için yaptığım yöntemi söyleyeyim. C++ forumlarını takip ediyorum. Buralarda sorulan sorulara cevap vermeye çalışıyorum. Yanlış cevap vermemek için bildiğim bir şeyi tekrar araştırıyorum. Böylece onun hakkında daha fazla şey öğrenebiliyorum. Ayrıca bol bol alıştırma yapmak, kod yazmak lazım bildiklermizin iyice oturması için. Bunun için projecteuler.net gibi sitelere bakabilirsin. Analitik düşünme yeteneği kazandırır sana ilerde karşına çıkacak sorunlarla daha kolay başa çıkmanı sağlar. Ayrıca internette gezerken C++'da bildiğin bir konuda makale karşına çıktı diyelim. Ben bunu biliyorum diyerek okumamazlık etme, gördüğün her bir şeyi oku. Ayrıca bu kouların yanında STL'e bak. C++11'i incele kullanmayı dene. Ne gibi değişiklikler olduğunu kendin gör. Şimdilik aklıma gelenler bunlar.

    Sorun için küçük bir örnek yazdım.
    Burada setX fonksiyonundan gelen parametre ile sınıfın private üyesi olan x aynı isimli. Bununla herhangi bir çakışma, karmaşıklık olmaması için, sınıfında ki x'e ulaşmak için this->x diyoruz. Kısaca burada ki this senin o sınıfını ifade ediyor.
     
    #include <iostream>
    using namespace std;

    class A
    {
    private:
    int x;
    public:
    void setX(int x)
    {
    this->x = x;
    }

    int getX() { return x; }
    };

    int main()
    {
    A a;
    a.setX(5);
    cout << a.getX() << endl;
    return 0;
    }



    Daha geniş bilgi için: MSDN, IBM



    < Bu mesaj bu kişi tarafından değiştirildi -Source- -- 4 Şubat 2013; 17:25:53 >




  • #include <iostream>
    #include <conio.h>
    using namespace std;
    main(){


    int a,b;
    char c[][80]={"Pazartesi","Sali","Carsamba"};
    for (a=0;a<=c[a][0];a++){
    cout << "\n";
    for(b=0;b<=c[a];b++){
    cout << c [a] << "\n";
    }

    }
    getch();
    return 0;



    }
    Arkadaşlar bu dizideki a[][80]: Bunun anlamı nedir neden böyle yaptık birde ilk for döngsünde c[a][0] yazdık .Bunları açıklayabilicek varmı şimdiden teşekkür ederim.Genel olarak kısa özet geçseniz yeterli 1-2 cümle
  • quote:

    Orijinalden alıntı: Servius

    #include <iostream> 
    #include <conio.h>
    using namespace std;
    main(){


    int a,b;
    char c[][80]={"Pazartesi","Sali","Carsamba"};
    for (a=0;a<=c[a][0];a++){
    cout << "\n";
    for(b=0;b<=c[a][b];b++){
    cout << c [a][b] << "\n";
    }

    }
    getch();
    return 0;



    }

    Arkadaşlar bu dizideki a[][80]: Bunun anlamı nedir neden böyle yaptık birde ilk for döngsünde c[a][0] yazdık .Bunları açıklayabilicek varmı şimdiden teşekkür ederim.Genel olarak kısa özet geçseniz yeterli 1-2 cümle


    char c[3][80]={"Pazartesi","Sali","Carsamba"}; esittir char c[][80]={"Pazartesi","Sali","Carsamba"}; diyebiliriz.

    char d[3] = "ab"; esittir char d[] = "ab"; demek gibi.

    Matris yapisi kullaniliyor burada.Sadece sen tanimlarken belirtmiyorsun, compiler otomatik olarak islemi gerceklestiriyor diyebiliriz.



    c[a][0] yontemini biraz karisik olmus ama soyle diyim ASCII tablosundan yararlanmis(Cok kullanisli bir yontem degil matris boyu 65 ustune dayanirsa hatalar ortaya cikma ihtimali var diye tahmin ediyorum.). P 80(Dec) demektir.ASCII tablosunda [a-zA-Z] 65 -122 arasinda degerlerdedir. c[a][0] matris pozisyonu a=0 iken P karakterini gosterir. 0 <= 80 oldugundan dongu devam edecektir. c[a][0] a=3 iken matris boundry disina cikar ve for dongusu sonlanir.



    < Bu mesaj bu kişi tarafından değiştirildi garui -- 4 Şubat 2013; 18:00:40 >




  • quote:

    Orijinalden alıntı: -Source-

    quote:

    Orijinalden alıntı: GhilleintheMist

    Şuan döngüler, array, pointerlar, classlar,operatorler(clsslardaki operatörler falan) hakkında biraz bilgim var, yani sınırlarını bilmediğim için biliyorum diyemiyorum :) bundan sonra nasıl devam etmeliyim? ilerisi için napcğaımla ilgili hiç bi fikrim yok.

    ayrıca birde sorum var;
    this pointerı ne işe yarıyor alamadım tam olarak? küçük bi örnek kod falan göstereiblirseniz çok sevinirim

    Aslında ben de senin gibiyim biraz biliyorum ama daha fazlasını öğrenmek için yaptığım yöntemi söyleyeyim. C++ forumlarını takip ediyorum. Buralarda sorulan sorulara cevap vermeye çalışıyorum. Yanlış cevap vermemek için bildiğim bir şeyi tekrar araştırıyorum. Böylece onun hakkında daha fazla şey öğrenebiliyorum. Ayrıca bol bol alıştırma yapmak, kod yazmak lazım bildiklermizin iyice oturması için. Bunun için projecteuler.net gibi sitelere bakabilirsin. Analitik düşünme yeteneği kazandırır sana ilerde karşına çıkacak sorunlarla daha kolay başa çıkmanı sağlar. Ayrıca internette gezerken C++'da bildiğin bir konuda makale karşına çıktı diyelim. Ben bunu biliyorum diyerek okumamazlık etme, gördüğün her bir şeyi oku. Ayrıca bu kouların yanında STL'e bak. C++11'i incele kullanmayı dene. Ne gibi değişiklikler olduğunu kendin gör. Şimdilik aklıma gelenler bunlar.

    Sorun için küçük bir örnek yazdım.
    Burada setX fonksiyonundan gelen parametre ile sınıfın private üyesi olan x aynı isimli. Bununla herhangi bir çakışma, karmaşıklık olmaması için, sınıfında ki x'e ulaşmak için this->x diyoruz. Kısaca burada ki this senin o sınıfını ifade ediyor.
     
    #include <iostream>
    using namespace std;

    class A
    {
    private:
    int x;
    public:
    void setX(int x)
    {
    this->x = x;
    }

    int getX() { return x; }
    };

    int main()
    {
    A a;
    a.setX(5);
    cout << a.getX() << endl;
    return 0;
    }



    Daha geniş bilgi için: MSDN, IBM

    Her iki sorumada sayenizde cevap buldum teşekkürler :)

    O verdiğiniz kodu compile ettikten sonra bide this olmadan compile ettim. O zaman memoryde eski bir uygulamadan kalan bi değer geldi. Anladığım kadarıyla değişken isimlerini ayrı koyarsak sorun yok. yani


      #include <iostream> 
    using namespace std;
    class A
    {
    private:
    int x;
    public:
    void setX(int y)
    {
    x = y;
    }

    int getX() { return x; }
    };

    int main()
    {
    A a;
    a.setX(5);
    cout << a.getX() << endl;
    return 0;
    }

    yapsak. Açıkçası bu tip bi kullanım bana daha düzgün geldi. değişken ismi mi kalmadı da aynı ismi kullanıyoruz :P



    < Bu mesaj bu kişi tarafından değiştirildi Lord Nibbler -- 4 Şubat 2013; 18:01:37 >




  • quote:

    Orijinalden alıntı: garui

    quote:

    Orijinalden alıntı: Servius

    #include <iostream> 
    #include <conio.h>
    using namespace std;
    main(){


    int a,b;
    char c[][80]={"Pazartesi","Sali","Carsamba"};
    for (a=0;a<=c[a][0];a++){
    cout << "\n";
    for(b=0;b<=c[a][b];b++){
    cout << c [a][b] << "\n";
    }

    }
    getch();
    return 0;



    }

    Arkadaşlar bu dizideki a[][80]: Bunun anlamı nedir neden böyle yaptık birde ilk for döngsünde c[a][0] yazdık .Bunları açıklayabilicek varmı şimdiden teşekkür ederim.Genel olarak kısa özet geçseniz yeterli 1-2 cümle


    char c[3][80]={"Pazartesi","Sali","Carsamba"}; esittir char c[][80]={"Pazartesi","Sali","Carsamba"}; diyebiliriz.

    char d[3] = "ab"; esittir char d[] = "ab"; demek gibi.

    Matris yapisi kullaniliyor burada.Sadece sen tanimlarken belirtmiyorsun, compiler otomatik olarak islemi gerceklestiriyor diyebiliriz.



    c[a][0] yontemini biraz karisik olmus ama soyle diyim ASCII tablosundan yararlanmis(Cok kullanisli bir yontem degil matris boyu 65 ustune dayanirsa hatalar ortaya cikma ihtimali var diye tahmin ediyorum.). P 80(Dec) demektir.ASCII tablosunda [a-zA-Z] 65 -122 arasinda degerlerdedir. c[a][0] matris pozisyonu a=0 iken P karakterini gosterir. 0 <= 80 oldugundan dongu devam edecektir. c[a][0] a=3 iken matris boundry disina cikar ve for dongusu sonlanir.

    Çok teşekkür ederim cevabınız için gayet anlaşılır olmuş.

    -Şimdi benim anlamadım bir olay var
    1- c[a][0] a=3 iken matris boundry disina cikar ve for dongusu sonlanir.--> Bunu anlamadım eğer zahmet olmassa anlatırmınız.
    2-Hocam birde 2. forda c[a] yaptık.burda neden c[0] yapmadık.

    Cahilliğime verin başlayalı çok olmadı daha bazı şeyleri anlamakta güçlük çekiyorum .




  • quote:

    Orijinalden alıntı: GhilleintheMist

    Her iki sorumada sayenizde cevap buldum teşekkürler :)

    O verdiğiniz kodu compile ettikten sonra bide this olmadan compile ettim. O zaman memoryde eski bir uygulamadan kalan bi değer geldi. Anladığım kadarıyla değişken isimlerini ayrı koyarsak sorun yok. yani


      #include <iostream> 
    using namespace std;
    class A
    {
    private:
    int x;
    public:
    void setX(int y)
    {
    x = y;
    }

    int getX() { return x; }
    };

    int main()
    {
    A a;
    a.setX(5);
    cout << a.getX() << endl;
    return 0;
    }

    yapsak. Açıkçası bu tip bi kullanım bana daha düzgün geldi. değişken ismi mi kalmadı da aynı ismi kullanıyoruz :P

    Çöp değerin gelmesinin sebebi her değişken kendi bloğunda aktif olduğu için this'i kaldırırsan yani x = x olursa, fonksiyona parametre ile gelen x'e yine parametreyi atıyor.
    Yani sınıfın üyesi olan x'e atama yapmıyor. getX() ile de içinde çöp değer olan sınıfın üyesi olan x'i çağırıyor.

    Dediğin gibi başka bir değişken ismi vermek daha iyi. Aşağıda ki gibi kullananlarda var.
      #include <iostream> 
    using namespace std;
    class A
    {
    private:
    int m_x;
    public:
    void setX(int x)
    {
    m_x = x;
    }

    int getX() { return m_x; }
    };

    int main()
    {
    A a;
    a.setX(5);
    cout << a.getX() << endl;
    return 0;
    }




  • quote:

    Orijinalden alıntı: -Source-

    quote:

    Orijinalden alıntı: GhilleintheMist

    Her iki sorumada sayenizde cevap buldum teşekkürler :)

    O verdiğiniz kodu compile ettikten sonra bide this olmadan compile ettim. O zaman memoryde eski bir uygulamadan kalan bi değer geldi. Anladığım kadarıyla değişken isimlerini ayrı koyarsak sorun yok. yani


      #include <iostream> 
    using namespace std;
    class A
    {
    private:
    int x;
    public:
    void setX(int y)
    {
    x = y;
    }

    int getX() { return x; }
    };

    int main()
    {
    A a;
    a.setX(5);
    cout << a.getX() << endl;
    return 0;
    }

    yapsak. Açıkçası bu tip bi kullanım bana daha düzgün geldi. değişken ismi mi kalmadı da aynı ismi kullanıyoruz :P

    Çöp değerin gelmesinin sebebi her değişken kendi bloğunda aktif olduğu için this'i kaldırırsan yani x = x olursa, fonksiyona parametre ile gelen x'e yine parametreyi atıyor.
    Yani sınıfın üyesi olan x'e atama yapmıyor. getX() ile de içinde çöp değer olan sınıfın üyesi olan x'i çağırıyor.

    Dediğin gibi başka bir değişken ismi vermek daha iyi. Aşağıda ki gibi kullananlarda var.
      #include <iostream> 
    using namespace std;
    class A
    {
    private:
    int m_x;
    public:
    void setX(int x)
    {
    m_x = x;
    }

    int getX() { return m_x; }
    };

    int main()
    {
    A a;
    a.setX(5);
    cout << a.getX() << endl;
    return 0;
    }


    Yalnız garip bişey farkettim;
    dev c++'ta aynı kodu iki farklı bilgisayarda derledim. Daha sonra x'in pointerını return eden bi function yazıp cout la yazdırdım. Ama tüm bilgisayarlarda aynı address çıktı. Hatta tüm bilgisayarlarda this'i kaldırınca x değeri aynı geldi. (yani tüm dediğim 2:P) Ama visual studio'da programı her çalıştırışımda address değişti ve değerde değişik geliyordu. Çok saçma ve gereksiz bulabilirsniz ama kodun her kısmını böyle deneyince bunları bulup şaşırıyorum :D




  • quote:

    Orijinalden alıntı: GhilleintheMist


    Yalnız garip bişey farkettim;
    dev c++'ta aynı kodu iki farklı bilgisayarda derledim. Daha sonra x'in pointerını return eden bi function yazıp cout la yazdırdım. Ama tüm bilgisayarlarda aynı address çıktı. Hatta tüm bilgisayarlarda this'i kaldırınca x değeri aynı geldi. (yani tüm dediğim 2:P) Ama visual studio'da programı her çalıştırışımda address değişti ve değerde değişik geliyordu. Çok saçma ve gereksiz bulabilirsniz ama kodun her kısmını böyle deneyince bunları bulup şaşırıyorum :D

    Denemek güzeldir, böyle böyle öğreniliyor. Aynı değer çıkmalarına tesadüf diyeceğim ama bu kadarı da fazla :D. Dev-C++'ı tavsiye etmiyorum onun bir eksikliğinden, hatasından dolayı da aynı değerler çıkabilir.
  • quote:

    Orijinalden alıntı: -Source-

    quote:

    Orijinalden alıntı: GhilleintheMist


    Yalnız garip bişey farkettim;
    dev c++'ta aynı kodu iki farklı bilgisayarda derledim. Daha sonra x'in pointerını return eden bi function yazıp cout la yazdırdım. Ama tüm bilgisayarlarda aynı address çıktı. Hatta tüm bilgisayarlarda this'i kaldırınca x değeri aynı geldi. (yani tüm dediğim 2:P) Ama visual studio'da programı her çalıştırışımda address değişti ve değerde değişik geliyordu. Çok saçma ve gereksiz bulabilirsniz ama kodun her kısmını böyle deneyince bunları bulup şaşırıyorum :D

    Denemek güzeldir, böyle böyle öğreniliyor. Aynı değer çıkmalarına tesadüf diyeceğim ama bu kadarı da fazla :D. Dev-C++'ı tavsiye etmiyorum onun bir eksikliğinden, hatasından dolayı da aynı değerler çıkabilir.

    compile ederken o x değerini programın içine kaydedip aynı zamanda pointerını kaydedip hep aslıdna bi bakıma cacheden yazdırıyo gibi geldi.



    < Bu mesaj bu kişi tarafından değiştirildi Lord Nibbler -- 4 Şubat 2013; 20:22:54 >




  • quote:

    Orijinalden alıntı: -Source-

    quote:

    Orijinalden alıntı: Tolgá

    getchar ve putchar ne işe yarıyor biri lütfen anlatsın.


    http://en.cppreference.com/w/c/io/getchar
    Standart giriş akımından(stdin) bir karakter okur.

    http://en.cppreference.com/w/c/io/putchar
    Standart çıkış akımına(stdout) bir karakter yazar. Aldığı parametre yazılacak karakter.

    Küçük bir örnek. Eğer kelime girilirse sadece ilk harfini alır.
     
    #include <stdio.h>
    int main()
    {
    // Bir karakter oku
    char giris = getchar();
    // Okunan karakteri ekrana yazdir.
    putchar(giris);
    return 0;
    }



    Teşekkkürler.

    < Bu ileti mobil sürüm kullanılarak atıldı >




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