Chyba (nejspíš hloupá) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Chyba (nejspíš hloupá) – C / C++ – Fórum – Programujte.comChyba (nejspíš hloupá) – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Hubert
~ Anonymní uživatel
27 příspěvků
14. 6. 2010   #1
-
0
-

Zdravím,
napsal jsem kód:

#include <iostream>  

using namespace std;
int main()
{
cout << "Ahoj.\n";
int vek;
char odp[7] = "ano", "Ano", "ANO", "ne", "Ne", "NE", "\0" ;
cout << "Kolik je Ti let?\n";
cin >> vek;
cout << "To je hodně, že?\n";
cin >> odp;
while (odp[4] = "ano", "Ano", "ANO")
cout << "Souhlasím.\n";
return 0;
while (odp[3] = "ne", "Ne", "NE");
cout << "Nesouhlasím, podle mě je to docela dost.\n";
return 0;
}


Nevím, kde jsem udělal chyby... C++ se učím, a rád bych věděl, co jsem udělal špatně. dík

Nahlásit jako SPAM
IP: 93.91.245.–
Reklama
Reklama
KIIV+42
God of flame
14. 6. 2010   #2
-
0
-

z toho vznikne docela dlouhy seznam:

char odp[7] = "ano", "Ano", "ANO", "ne", "Ne", "NE", "\0" ;
while (odp[4] = "ano", "Ano", "ANO")
while (odp[3] = "ne", "Ne", "NE");


while (odp[4] = "ano", "Ano", "ANO")
cout << "Souhlasím.\n";
return 0; // toto se vykona naprosto vzdy.. ikdyz formalne se tam pres while zase nikdy nedostanes.. a vlastne to ani nikdy nezkompilujes

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Hubert
~ Anonymní uživatel
27 příspěvků
14. 6. 2010   #3
-
0
-

Nechci být nezdvořilý ale moc jste mi nepomohl. Co je tedy za chybu?

Nahlásit jako SPAM
IP: 93.91.245.–
KIIV+42
God of flame
14. 6. 2010   #4
-
0
-

co ma znamenat: char odp[7] = "ano", "Ano", "ANO", "ne", "Ne", "NE", "\0" ; ??? minimalne budes potrebovat pole retezcu ne jen pole znaku!!!!
co ma znamenat: while (odp[4] = "ano", "Ano", "ANO") ? krom toho ze = je prirazeni hodnoty..
nejde dat "ano", "Ano", "ANO" a ani == by stejne nesrovnalo nic z 5. pozice odp (coz by teoreticky byl jeden znak)
a kdyby se ti to nahodou povedlo predelat tak na srovnani retezcu je funkce strcmp

while (odp[4] = "ano", "Ano", "ANO")
cout << "Souhlasím.\n";
bez { } se provede JEDEN JEDINY PRIKAZ za while ..
return 0; // pokud by se dostalo zahadnou nahodou pres while tak todle by zarucene nenechalo probehnout nic za sebou

samozrejme while (odp[3] = "ne", "Ne", "NE"); je taky dost nesmyslna konstrukce.. uz vubec uhadnout co by to tak asi mohlo delat. Tim spis jak by to mohlo nekdy skoncit nebo tak?

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Hubert
~ Anonymní uživatel
27 příspěvků
14. 6. 2010   #5
-
0
-

ok ok.. kde je chyba tady?

#include <iostream>  

using namespace std;
int main()
{
cout << "Ahoj.\n";
int vek;
char odp;
cout << "Kolik je Ti let?\n";
cin >> vek;
cout << "To je hodně, že?\n";
cin >> odp;
while (odp == "ano")
cout << "Souhlasím.\n";
return 0;
while (odp == "ne");
cout << "Nesouhlasím, podle mě je to docela dost.\n";
return 0;
}

Nahlásit jako SPAM
IP: 93.91.245.–
KIIV+42
God of flame
14. 6. 2010   #6
-
0
-

tak krom toho ze nactes jedinej znak do odp, pak srovnavas znak s adresou pameti kde sidli retezec "ano"
a pak zase ty while.... ty se aspon nezacykli.. ale ani to nic nevypise

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Hubert
~ Anonymní uživatel
27 příspěvků
14. 6. 2010   #7
-
0
-

takže změnil jsem char na int while za if a furt nic....

Nahlásit jako SPAM
IP: 93.91.245.–
x_X
~ Anonymní uživatel
1 příspěvek
14. 6. 2010   #8
-
0
-

Doporučuji přečíst http://www.builder.cz/art/cpp/cpp_strings.html

Nahlásit jako SPAM
IP: 78.102.40.–
Wizard0
Stálý člen
14. 6. 2010   #9
-
0
-

Ja by som odporucal toho precitat omnoho viac. Zacal by som aspon nejakym serialom tu na programujte, lebo bez znalosti syntaxy sa programuje blbo.

Nahlásit jako SPAM
IP: 85.216.193.–
hubert
~ Anonymní uživatel
27 příspěvků
18. 6. 2010   #10
-
0
-

ok, pouvažoval jsem nad svým problémem a poradil se i s dalšíma lidma a opravil chyby. Měli jste pravdu, bylo jich dost. A přesto se vyskytla další, nefungujou mi cykly



#include <iostream>
using namespace std;
int main()
{
cout << "Ahoj.\n";
int vek;
char klad [] = "ano";
char zapor [] = "ne";
char odp[256];
cout << "Kolik je Ti let?\n";
cin >> vek;
cout << "To je hodně, že?\n";
cin >> odp;
if (odp == "ano")
cout << "Souhlasím.\n";
return 0;

if (odp == "ne")
cout << "Nesouhlasím, podle mě je to docela dost.\n";
return 0;
}

Prosím nepište "přečti si tohle a toto" chci vědět kde a jakou mám chybu a jak ji opravit.

Nahlásit jako SPAM
IP: 93.91.245.–
LJ10240
Stálý člen
18. 6. 2010   #11
-
0
-

možná jsem takhle večer už úplně vygumovaný nebo tam doopravdy žádný cyklus není. Možná jsi měl spíš na mysli podmínky?

možná bys měl zkusit tohle:

#include <iostream>  

using namespace std;

int main()
{
cout << "Ahoj.\n";
int vek;
char klad [] = "ano";
char zapor [] = "ne";
char odp[256];
cout << "Kolik je Ti let?\n";
cin >> vek;
cout << "To je hodně, že?\n";
cin >> odp;
if (odp == "ano"){
cout << "Souhlasím.\n";
return 0;
}

if (odp == "ne"){
cout << "Nesouhlasím, podle mě je to docela dost.\n";
return 0;
}

return 0;//v pripade nejake uplne jine odpovedi nez "ano" nebo "ne"
}

Nahlásit jako SPAM
IP: 217.30.64.–
hubert0
Newbie
18. 6. 2010   #12
-
0
-

Jasně, sorry. Jsem blbec... Ale můj problém to stejně nevyřešilo. Pořád to neodpovídá: "Souhlasím" "Nesouhlasím, podle mě je to docela dost."...

Nahlásit jako SPAM
IP: 93.91.245.–
just me...
Wizard0
Stálý člen
18. 6. 2010   #13
-
0
-

Operator '==' v pripade ukazatela na typ char porovnava adresu laveho operandu z adresou praveho. A to v tvojom pripade nebude nikdy rovne, kedze ako pravy operand predavas konstantu. Preto musisi but pouzit funkciou strcmp alebo namiesto obycajneho pala char-ov pouzit triedu std::string, ktora ti uz dovoli porovnavanie retazcou pomocou operatoru '=='.

Nahlásit jako SPAM
IP: 85.216.193.–
hubert0
Newbie
18. 6. 2010   #14
-
0
-

hm, ne, že by se mi to nechtělo učit odtud z p-te.com ale jak by vypadal výsledný kód? Myslím, že takto se to naučím lépe

Nahlásit jako SPAM
IP: 93.91.245.–
just me...
LJ10240
Stálý člen
19. 6. 2010   #15
-
0
-

Z vlastní zkušenosti vím, že když ti to někdo předhodí, tak se to lépe nenaučíš... Ta podmínka if by pak měla vpadat například takto:

if(strcmp(odp, "ano")==0){

Nahlásit jako SPAM
IP: 217.30.64.–
KIIV+42
God of flame
19. 6. 2010   #16
-
0
-

To LJ1024 : souhlas.. dokud clovek neni schopen chapat jednotlive prikazy a co delaj, neumi si to predstavit a rozpoznat, co to dela celkove.. nema smysl moc procitat kod.. stejne je to k nicemu a akorat bude slepe kopirovat neco, o cem nema ani paru ale "mozna" to dela to co ma
proste dokud se nenauci zaklady tak dobre, aby dokazal vymyslet jednoduchy kroky - nema moc sanci cokoliv udelat..

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
hubert0
Newbie
19. 6. 2010   #17
-
0
-

Ok, Ok vy jste experti....
btw

hello.cpp:19: error: ‘strcmp’ was not declared in this scope

Nahlásit jako SPAM
IP: 93.91.245.–
just me...
LJ10240
Stálý člen
19. 6. 2010   #18
-
0
-

btw

#include <string.h>

Nahlásit jako SPAM
IP: 217.30.64.–
hubert0
Newbie
19. 6. 2010   #19
-
0
-

Zdravím, díky vám všem za pomoc, vše funguje. Až na jednu drobnost přidal jsem "else" pro případ, že by někdo napsal něco jiného než "ano" nebo "ne". Potom bych ovšem potřeboval, aby se celý cyklus s IFy opakoval. Jak? Přečetl jsem si celý seriál, ale nejsem o nic chytřejší než teď... díky

Nahlásit jako SPAM
IP: 93.91.245.–
just me...
Palmik0
Super člen
19. 6. 2010   #20
-
0
-

 cout << "To je hodně, že?\n";

cin >> odp;


Hoď do nějaké cyklu (třeba while), který se bude opakovat dokud uživatel nezadá "ano" nebo "ne". Za tento cyklus pak dáš větvení na odpověď pro "ano" a pro "ne".

Nahlásit jako SPAM
IP: 85.207.177.–
Yesterday is history. Tomorrow is a mystery. Today is a gift and that is why it's called the present.
hubert0
Newbie
19. 6. 2010   #21
-
0
-

a výsledný kód bude?

Nahlásit jako SPAM
IP: 93.91.245.–
just me...
KIIV+42
God of flame
19. 6. 2010   #22
-
0
-

a vysledny kod je na tobe

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
hubert0
Newbie
19. 6. 2010   #23
-
0
-

Já vím, že jsem otravný, ale mohl by mi někdo polopaticky vysvětlit, jak ten cyklus uplatnit na mém kódu?

Nahlásit jako SPAM
IP: 93.91.245.–
just me...
LJ10240
Stálý člen
19. 6. 2010   #24
-
0
-

Myslím, že kdybychom ti i nadále dávali zdrojáky, tak by to tobě vůbec nepomohlo (nic by ses nenaučil)... Možná tak kdybys zkusil odměnu, ale jinak ti nikdo nebude dávat pořád a znovu a znovu kódy. Možná tě to překvapí, ale my jsme tu od toho, abychom ti poradili a popostřili tě (to jsme už udělali) - věř tomu nebo ne, ale drtivá většina z nás má už beztak dost problémů se svými vlastními programy, natož abychom ti zadarmo pořád psali tvoje programy...

Nahlásit jako SPAM
IP: 217.30.64.–
hubert0
Newbie
19. 6. 2010   #25
-
0
-

ok.ok sorry za váš čas...

Nahlásit jako SPAM
IP: 93.91.245.–
just me...
LJ10240
Stálý člen
19. 6. 2010   #26
-
0
-

ne to je v pohodě, ale měl by jsi projevit aspoň nějakou snahu... zkusit si tam ten cyklus dát sám a mi ti pak klidně opravíme, co máš špatně...

Nahlásit jako SPAM
IP: 217.30.64.–
hubert0
Newbie
19. 6. 2010   #27
-
0
-

máš pravdu, pokud se nenaučím sám řešit problémy tak neobstojím...

Nahlásit jako SPAM
IP: 93.91.245.–
just me...
liborb
~ Redaktor
+18
Guru
19. 6. 2010   #28
-
0
-

Jestli je ten poslední kód v tomto vlákně platný, tak vzhledem k tomu, že po ano nebo ne ukončuješ program přes return, tak ten cyklus může být klidně nekonečný tj.
while(1) {
// podmínky
}

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

Podobná vlákna

Chyba — založil Filip

Chyba — založil hirakam

Chyba — založil bohetik

Moderátoři diskuze

 

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