Dobrý den, potřebuji poradit, co mám zde špatně.
if (jmeno == neco && jmeno == neco)
cout << "nNopovoleny vstup! ";
Jsou předtím i proměné.
[i]// Frosty edit: Prosím, vkládejte kód do tagu code.[/i]
Mas zle uvedenu podmienku. Kazda samostatna logicka operacia by mala byt uvadzana v zatvorkach. Cize skus:
if ((jmeno == neco) && (jmeno == neco))
cout << "\nNopovoleny vstup! ";
#include <iostream>
using namespace std;
int main()
{
cout << "nVase vaha v C++ ";
char jmeno[20];
cout << "nZadejte vase jmeno:";
cin.getline(jmeno, 20);
char pohlavy[20];
cout << "nZadejte vase Pohlavy:";
cin.getline(pohlavy, 20);
cout << "nZadej prosim tvuj vek: ";
int vek;
cin >> vek;
cout << "Zadej prosim tvoji vahu: ";
int vaha;
cin >> vaha;
cout << "Zadej prosim tvoji vysku: ";
int vyska;
cin >> vyska;
cout << "____________________________________________________";
if (( jmeno == neco) && (jmeno == neco1))
cout << "nNopovoleny vstup! ";
cout << "nUdaje pro " << jmeno << ".n";
cout << "nVas vek je: " << vek ;
if (vek > 105 )
cout << "nTo ti mam verit ye je ti vic jak 105 let?";
cout << "nVase vaha je: " << vaha ;
cout << "kg ";
if (vaha > 150 )
cout << "nMel by jsi zacit hubnout.";
if (vaha < 25 && vek < 6)
cout << "nNa tvuj vek je vse v poradku.";
if (vaha < 40 && vek > 6)
cout << "nTve udaje nejsou v poradku, mel by jsi pribrat.";
if (vaha > 95 && vek > 50)
cout << "nTve udaje nejsou v poradku, mel by jsi zhubnout.";
cout << "nVase vyska je: " << vyska ;
cout << "nVase pohlavy " << pohlavy << ".n";
cout << "nPokud se nevypise zadne hlaseni, tak je vse v poradku.";
cout << "nStisknutim enter, konec aplikace.";
cin.get();
cin.get();
return 0;
}
Premenne "neco" a "neco1" nemas deklarovane. To znamena ze ty v klauzule if porovnavas premennu jmeno s niecim co neexistuje.
Pred
if (( jmeno == neco) && (jmeno == neco1))
cout << "\nNopovoleny vstup! ";
char neco[20] = "xxx", neco1[20] = "yyy";
Ta podm?nka "and" mi tro?ku nesed?. Kdy? porovn?v?? jednu prom?nnou s n?jakou referenc? (s t?m "neco" a "neco1"), nep??mo t?m ??k??, ?e se prom?nn? m??e v ur?it?m p??pad? rovnat dv?ma mo?nostem. Logick? v?raz "and" toti? znamen? "a z?rove?". To znamen?, ?e v?raz
((jmeno==neco) && (jmeno==neco1))
odpov?d? v?razu:
obsah prom?nn? "jmeno" se rovn? obsahu prom?nn? "neco" a z?rove? obsahu prom?nn? "neco1".
Pokud je tedy v prom?nn? "neco" jin? obsah ne? v "neco1", v??e popsan? podm?nka nikdy nebude pravdiv?.
Podle m?ho skromn?ho ?sudku bys m?l nahradit v?raz "and" v?razem "or".
V?znam by to m?lo jedin? v p??pad?, ?e bych jako u?ivatel m?l zadat dv? shodn? slova do prom?nn?ch "neco" a neco1". V tom p??pad? ale nesed? tzv.?t?bn? kultura. M?n?c? se prom?nn? by toti? m?la st?t nalevo od srovn?vac?ho znam?nka, reference napravo.
Retezce se zasadne v C porovnavaji funkcemi - konkretne strcmp, strncmp, strcoll. Nebo si je samozrejme muzete implementovat sam.
Cili podminka ma vypadat takto:
//test na rovnost
if(strcmp(jmeno, neco) == 0) // nebo if(!strcmp(jmeno, neco))
delej_neco(); // jsou shodne
else
// nejsou shodne
delej_neco_jineho();
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku