Žádost o radu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Žádost o radu – C / C++ – Fórum – Programujte.comŽádost o radu – C / C++ – Fórum – Programujte.com

 

Isanek0
Duch
25. 5. 2009   #1
-
0
-

Zdravím, potřeboval bych poradit, proč mám tenhle kód špatně. Udělal jsem program na výpočet BMI a zjištění jak na tom jste, ale program vypočítá pouze BMI a dál se nedostane. Pokud by jste měli lepší nápad jak to napsat tka ho prosím napište. Jsem úplný začátečník, je mi 15 let a než vejdu na střední tak bych chtěl aspoň něco už zvládat, díky :D.
Zde he kód:

#include <iostream>
using namespace std;
int main()
{
float vyska;
int vaha;
int vek;
int BMI;
int i=0;
cout << "Zdravim te";
cout << "\nZde napis svuj vek: ";
cin >> vek;
cout << "\nZde napis svoji vahu v kilogramech: ";
cin >> vaha;
cout << "\nZde napis svoji vysku v metrech: ";
cin >> vyska;
cout << "\nVase vaha je: " << vaha << " kg, vase vyska je: " << vyska << " m, vas vek je: " << vek << "let";
BMI = vaha / ( vyska * vyska );
cout << "\n\nVase BMI je: " << BMI ;
while (BMI>18)
i++;
while (BMI>25)
i++;
while (BMI>30)
i++;
while (BMI>35)
i++;
while (BMI>40)
i++;
while (i=0)
cout << "Jsi podvyziveny!!";
while (i=1)
cout << "Optimalni vaha";
while (i=2)
cout << "mel by si se sebou neco delat!";
while (i=3)
cout << "Obezita I.";
while (i=4)
cout << "Obezita II.";
while (i=5)
cout << "Obezita III.";
cin.get();
cin.get();
return 0;
}

Nahlásit jako SPAM
IP: 90.176.222.–
Datlik0
Návštěvník
25. 5. 2009   #2
-
0
-

hele clovece nwm jak ty ale me se nelibi to while



cout << "\n\nVase BMI je: " << BMI <<endl;// jako \n ale nem,usi davat uvozovky
if (BMI<=18)
i=0;
if (BMI>18 && BMI<=25)
i=1;
if (BMI>25 && BMI<=30)
i=2;
if (BMI>30 && BMI<=35)
i=3;
if (BMI>35 && BMI<=40)
i=4;
if(BMI>40)
i=5;
if (i==0)
cout << "Jsi podvyziveny!!";
if (i==1)
cout << "Optimalni vaha";
if (i==2)
cout << "mel by si se sebou neco delat!";
if (i==3)
cout << "Obezita I.";
if (i==4)
cout << "Obezita II.";
if (i==5)
cout << "Obezita III.";
cin.get();
cin.get();
return 0;
}


takze while jsem upravil na if jinak by se to porad opakovalo a i++ jsem naradil i=x protozer by pak bylo vse 1 a to bylo spatne a pak jsem i=1 nahradil i==1 jinak i= jhe prirazeni coz priradi hodnotu coz by bylo vzdy pravdive a rpovedlo se to co je v tom if a este abych nezapomel && spojuje prikazy a je to skusim prelozit do textu toto:


if (BMI<=18)
i=0;
if (BMI>18 && BMI>=25)
i=1;

je neco jako : kdyz se BMi rovna 18 nebo je mensi i se rovna 0 kdyz je BMI vetsi nez 18 a mensi nebo se rovna 25 i je 1 a tak dale snazil jsem se ti to vysvetlit protoze si rikal ze si zacatecnik a pokud tusim a ctes knizku kterou myslim tak si se asi k if nedostal ale to poznas snad to prelouskas jsem unavenej a sotva vidim tak se omlouvam za pravopisny chyby

Nahlásit jako SPAM
IP: 85.13.98.–
Bald3rr0
Super člen
25. 5. 2009   #3
-
0
-

To Isanek : Jakmile bude BMI > 18 program se zacyklí do nekonečné smyčky. Protože pokud jednou podmínka projde, projde pokaždé, protože s proměnnou BMI nijak neoperuješ. Koukni se na ty tvé while cykly ;)

Nahlásit jako SPAM
IP: 82.100.0.–
Datlik0
Návštěvník
25. 5. 2009   #4
-
0
-

uz jsem mu to napsal mam to spravne ze

Nahlásit jako SPAM
IP: 85.13.98.–
Datlik0
Návštěvník
25. 5. 2009   #5
-
0
-

jen tak rpo zajimavost jsem si to spocital a mam 19.01

Nahlásit jako SPAM
IP: 85.13.98.–
m->29+6
Super člen
25. 5. 2009   #6
-
0
-

No neviem nakoľko si unavený, ale toto

if (BMI>18 && BMI>=25)
je divné :-/A všetky podobné kúsky.
Podmienka bude pravdivá iba ak
(BMI>=25)
A v takýchto konštrukciách sa používa if - else if- else, aby to zbytočne netestovalo každú podmienku. Teda pokiaľ to neprejde všetky vetvy.

EDIT: No niečo na ukážku :-)
#include <iostream>

using namespace std;
int main(void) {
float vyska;
int vaha;
int vek;
int BMI;

cout << "Zdravim te";
cout << "\nZde napis svuj vek: ";
cin >> vek;
cout << "\nZde napis svoji vahu v kilogramech: ";
cin >> vaha;
cout << "\nZde napis svoji vysku v metrech: ";
cin >> vyska;
cout << "\nVase vaha je: " << vaha << " kg, vase vyska je: " << vyska << " m, vas vek je: " << vek << "let";
BMI = (int)(vaha / ( vyska * vyska ));
cout << "\n\nVase BMI je: " << BMI ;
if(BMI>18)
cout << "Optimalni vaha";
else if(BMI>25)
cout << "mel by si se sebou neco delat!";
else if(BMI>30)
cout << "Obezita I.";
else if(BMI>35)
cout << "Obezita II.";
else if(BMI>40)
cout << "Obezita III.";
else
cout << "Jsi podvyziveny!!";

cin.get();
cin.get();
return 0;
}

Nahlásit jako SPAM
IP: 147.229.208.–
Datlik0
Návštěvník
25. 5. 2009   #7
-
0
-

sakra du to editovat
jinak ja bzch tam hodil if()
else if() jako ty ale nechal jsem mu tam co tam mel

Nahlásit jako SPAM
IP: 85.13.98.–
Bald3rr0
Super člen
25. 5. 2009   #8
-
0
-

To Datlik : Jestli už jsi opravil ty podmínky, tak ano. Ale máš to dlouhé a složité. Můžeš to zkrátit a zjednodušit. Jak? Nejrpve přiřadíš hodnotu do proměnné i a tu pak testuješ a podle toho vypisuješ. Co místo přiřazování hodnoty do proměnné i rovnou vypisovat uživatelovi zprávu?

Nahlásit jako SPAM
IP: 82.100.0.–
Isanek0
Duch
26. 5. 2009   #9
-
0
-

Moc vám děkuji, ráno sem si ještě pročítal znovu 3. lekci C++ a už v tom mám konečně jasno :). Díky moc.
to m->29:
Tobě hlavně dík za ten kód podle kterého jsem pochopil jak na to :), ale nefachal přesně, pokud si měl BMI větší než 18 tak si byl v normě :), tak sem trošku poupravil konec :

if(BMI>40)
cout << " Obezita III.";
else if(BMI>35)
cout << " Obezita II.";
else if(BMI>30)
cout << " Obezita I.";
else if(BMI>25)
cout << " Nadvaha";
else if(BMI>18)
cout << " Jsi v norme";
else
cout << " Anorektik!";

Teďka to fachá jak má :)

Nahlásit jako SPAM
IP: 90.176.222.–
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, 42 hostů

Podobná vlákna

Kostka - žádost o radu — založil Kamil

Zadost o pomoc (H8S) — založil Maikee

Žádost o pomoct morseovka — založil Morseovka

Žádost o pomoc s webem — založil BloodRings

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ý