Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
5
Cevap
1146
Tıklama
0
Öne Çıkarma
c++ anlayan bir arkadaş varsa bakabilirmi ?
A
13 yıl
Çavuş
Konu Sahibi

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;}

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



G
13 yıl
Yarbay

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();


Bu mesaja 1 cevap geldi.
Q
12 yıl
Yüzbaşı

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();


Bu mesaja 1 cevap geldi.
U
12 yıl
Onbaşı

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.


Bu mesaja 1 cevap geldi.
A
12 yıl
Çavuş
Konu Sahibi

:) 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 :)



A
3 yıl
Çavuş
Konu Sahibi

#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;
}



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.