Şimdi Ara

c++ anlayan bir arkadaş varsa bakabilirmi ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
1.020
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • programı yazdım ama hata alıyorum nerde hata yaptım onuda bulamıyorum compilerın bana ilettiği yerde bir problemde göremiyorum
    program sadeleştirme işlemi yapacak mesele bu yani 200/300 ü bize 2/3 şeklinde yazacak.


    #include<iostream>
    #include<string>
    using namespace std;

    class kma
    {public:
    kma(int a,int b,int obb);
    {setIntValue(a,b,obb);
    }

    void setIntValue(int a,int b,int obb)
    {x=a/obb;
    y=b/obb;

    }


    void dispMess()
    {
    cout<<"simplificated value is = "<<x<<'/'<<y<<endl;
    }
    private:
    int x;
    int y;


    };
    int obeb(int a,int b)
    {if(b==0)
    return a;
    else
    return obeb(b,a%b);
    }
    int main()
    {
    int v1=0,v2=0,obb=0;
    cout<<"Enter two values for simplification\n";
    cin<<v1<<v2;
    obb=obeb(v1,v2);
    kma sadelestir(v1,v2,obb);

    cout<<"value that is your entered: "<<v1<<'/'<<v2<<endl;
    cout<<sadelestir.dispMess();








    return EXIT_SUCCESS;}







  • Yazım hataları var. Onları da derleyici söylüyor zaten daha yapsın?

    kma(int a,int b,int obb);
    cin<<v1<<v2;
    cout<<sadelestir.dispMess();
  • arkadaşlar özür dilerim konu hortlatıyorum ama, yeni konu açmamak için. bu program banada lazım şu satırdaki problemi nasıl çözeriz, galiba kendi kütüphanesi olsa gerek yazan kişinin yanlışmı düşünüyorum?

    cout<<sadelestir.dispMess();
  • o satirdaki "sadeleştir" kişinin yukarda oluşturduğu "kma" sınıfı türündeki bir veri. zaten tanımladığı satır gösteriyor.

    kma sadelestir(v1,v2,obb);

    dolayısıyla bu sınıfa ait method olan "dispMess()" çağırıldığında yaptığı iş; oluturulmuş verinin içindeki int x ve y değerlerini ZATEN ekrana yazmakken

    cout<<sadelestir.dispMess();

    satırı, sanki bu method bir veri döndürecekmiş gibi bu döndürdüğü veriyi ekrana yazmaya çalışmakta. Hata da tam burada.
    Yukarıda görüldüğü gibi

    kma::dispMess() methodunun döndürdüğü veri türü "void" olmakla beraber içinde return komutuyla herhangi birşey döndürülmediği için bu kod derlenirken

    cout<<sadelestir.dispMess();

    satırını hatalı gösterecektir.

    herhangi bir şey döndürülse bile önce methodun döndürdüğü türün değiştirilmesi gerekmektedir. Ama yukarıdaki uyarlamaya göre bu da mantıksızdır yapılması gereken sadece

    sadelestir.dispMess();

    çağırmaktır. Çünkü bu çağrı direk olarak ekrana türün içindeki x ve y verilerini yazmaktadır. Eğer illaki dispMess() methodundan veri döndürmesi bekleniyorsa şu şekilde tanımlanabilirdi.

    std::string kma::getMess()
    {
    #include <sstream>
    std::stringstream ret;
    ret<<"simplificated value is = "<<x<<'/'<<y<<endl;
    return ret.str();
    }

    bu durumda getMess() methodu yuarıda istenilen şekilde kullanılabilirdi.

    cout<<sadelestir.getMess();

    ancak bu kullanımda getMess() methodunun içinde stringstream türünde veri oluşturulmakta ve methodları kullanılmakta, dolayısıyla boşu boşuna sistem kaynağı kullanılmakta, yapılmak istenen işi yapmaktadır. ama sadece ekrana yazmak isteniyorsa kaçınılması gerekmektedir dispMess() methodu yeterli olmakla beraber düzgün çağrılmalıdır.




  • :) anılarım depreşti.hatanın cout u kullanarak void bir class a erişmek işlemi biraz zorlama olmuştu ama sonradan fark etmiştim bunu :)
  • #include<iostream>

    #include<string>


    using namespace std;


    class kma

    {

    private:

    int x;

    int y;

    public:

    kma(int a,int b,int obb)

    {

    setIntValue(a,b,obb);

    }

    void setIntValue(int a,int b,int obb)

    {

    x=a/obb;

    y=b/obb;

    }

    void dispMess()

    {

    cout<<"simplificated value is = "<<x<<'/'<<y<<endl;

    }


    };

    int obeb(int a,int b)

    {

    if(b==0)

    return a;

    else

    return obeb(b,a%b);

    }


    int main()

    {

    int v1=0,v2=0,obb=0;

    cout<<"Enter two values for simplification\n";

    cin>>v1>>v2;

    obb = obeb(v1,v2);

    kma obj(v1,v2,obb);

    cout<<"value that is your entered: "<<v1<<"/"<<v2<<endl;

    obj.dispMess();


    return EXIT_SUCCESS;

    }





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