Problem s ulohou – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problem s ulohou – C / C++ – Fórum – Programujte.comProblem s ulohou – C / C++ – Fórum – Programujte.com

 

Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
10. 6. 2010   #1
-
0
-

Zdravim

Ucim sa c++ podla jednej knihy a pre zabavu som skusal nejaky program, aby som si co to zopakoval. Tento konkretne rata objemy a obsahy telies, no mam tu maly problem

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

class telesa
{
private:
int stranaA;
int stranaB;
int stranaC;
public:
void NastavA();
void NastavB();
void NastavC();

int Menu();

int ZobrazA()const {return stranaA;}
int ZobrazB()const {return stranaB;}
int ZobrazC()const {return stranaC;}

int ObsahObdlznika(int stranaA, int stranaB);
int ObsahStvorca(int stranaA);

int ObjemKvadra(int stranaA, int stranaB, int stranaC);
int ObjemKocky(int stranaC);
};
int telesa::Menu()
{
cout << " ....Menu....\n\n";
cout << "(1).Obsah obdlznika\n";
cout << "(2).Obsah stvorca\n";
cout << "(3).Objem kvadra\n";
cout << "(4).Objem kocky\n";
cout << "(5).Koniec \n\n";
int volba;
cin >> volba;
return volba;
}

void telesa::NastavA()
{
cout <<"Zadaj velkost strany a: ";
cin >> stranaA;
}

void telesa::NastavB()
{
cout <<"Zadaj velkost strany b: ";
cin >> stranaB;
}

void telesa::NastavC()
{
cout <<"Zadaj velkost strany c: ";
cin >> stranaC;
}

int telesa::ObsahObdlznika(int stranaA, int stranaB)
{
return stranaA*stranaB;
}

int telesa::ObsahStvorca(int stranaA)
{
return stranaA*stranaA;
}

int telesa::ObjemKvadra(int stranaA, int stranaB, int stranaC)
{
return stranaA*stranaB*stranaC;
}

int telesa::ObjemKocky(int stranaA)
{
return stranaA*stranaA*stranaA;
}

int main()
{
telesa teleso1;
bool koniec = false;
int A = teleso1.ZobrazA();
int B = teleso1.ZobrazB();
int C = teleso1.ZobrazC();

for(;;)

{
teleso1.Menu();
int volba = teleso1.Menu();
switch(volba)
{
case 1:
cout << "Obsah obdlznika \n\n";
teleso1.NastavA();
teleso1.NastavB();
cout << "Obsah obdlznika je"<< teleso1.ObsahObdlznika(A, B);
break;
case 2:
cout << "Obsah stvorca \n\n";
teleso1.NastavA();
cout << "Obsah stvorca je "<< teleso1.ObsahStvorca(A);
break;
case 3:
cout << "Objem kvadra \n\n";
teleso1.NastavA();
teleso1.NastavB();
teleso1.NastavC();
cout << "Objem kvadra je "<< teleso1.ObjemKvadra(A, B, C);
break;
case 4:
cout << "Objem kocky \n\n";
teleso1.NastavA();
cout << "Objem kocky je \n\n"<< teleso1.ObjemKocky(A);
break;
case 5:
koniec = true;
break;
}
if(koniec)
break;
}


cin.get();
cin.get();
}
</code>

ide mi o to ze nefunguje
int A = teleso1.ZobrazA();
int B = teleso1.ZobrazB();
int C = teleso1.ZobrazC();

aj ked nacitanie z napr (teleso1.ZobrazA()) funguje spravne. Pokial ale necham nacitat "int A" hodi mi uplny blud. Viem ze v tom programe je kopec chyb, chystam sa to opravit len co to bude nahrubo fungovat ;)
Dakujem

Nahlásit jako SPAM
IP: 178.40.250.–
liborb
~ Redaktor
+18
Guru
11. 6. 2010   #2
-
0
-

Kód:



int A = teleso1.ZobrazA();
int B = teleso1.ZobrazB();
int C = teleso1.ZobrazC();


je samozřejmě funkční, ale problém je v kauzalitě :smile1: . Nejprve hodnotu žádáš a pak ji teprve nastavuješ. Aby ti to fungovalo, tak musíš provést ZobrazX() před voláním výpočetní funkce.

Vzhledem k tomu, že máš stranu A,B,C jako členské proměnné, tak je zbytečné je předávat ako parametr členské funkci. Jsou přímo přístupné, vyhneš se těmto problémům a bude to kratší a hezčí :smile1:

Nahlásit jako SPAM
IP: 85.207.166.–
123w
~ Anonymní uživatel
2 příspěvky
11. 6. 2010   #3
-
0
-

To Anonymní uživatel : ono kdyby si mel vytvoreny konstruktor tak by ti to zadne bludy nehazalo

Nahlásit jako SPAM
IP: 77.48.244.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 69 hostů

Podobná vlákna

Problem s úlohou — založil Trebor

Pomoc s úlohou — založil Kárl

Poradit s úlohou — založil elijax

Pomoc s ulohou... — založil pra3tor

Pomoc s ulohou v C — založil newo

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý