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

C++ drobná pomoc s úkolem – C / C++ – Fórum – Programujte.comC++ drobná pomoc s úkolem – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Midnight
~ Anonymní uživatel
78 příspěvků
23. 7. 2009   #1
-
0
-

Zdravím. Učím se c++ podle učebnice Mistrovství v c++ a zasekl jsem se u jednoho úkolu.

Mám napsat program, který čte ze vstupu naráz CELÁ SLOVA, dokud nenarazí na písmeno q. Mám problém s těmi celými slovy, jinak bych to napsal, aby to četlo vyklem while znak po znaku, např takto:

...
char ch;
cin.get(ch);
while (ch != 'q')
{
cout ch;
cin.get(ch);
}

Už dříve jsem měl podobný problém, kdy cyklus měl zkončit, když narazil na slovo "hotovo" .
Děkuji za kařdou pomoc.

Nahlásit jako SPAM
IP: 92.62.224.–
Reklama
Reklama
NOclipus0
Newbie
23. 7. 2009   #2
-
0
-



char ch;
cin.get(ch);
while (1)
{
if(ch == 'q' || ch == ' ')
break;
else
{
cout << q;
cin.get(ch);
}
}


Třeba? Pravděpodobně někdo přijde s elegantnějším řešením, ale tohle mi funguje.

EDIT: JO, mám ještě jedno řešení, bez IFu:



char ch;
cin.get(ch);
while (ch != 'q' && ch != ' ')
{
cout << ch;
cin.get(ch);
}

Nahlásit jako SPAM
IP: 88.103.97.–
Midnight
~ Anonymní uživatel
78 příspěvků
24. 7. 2009   #3
-
0
-

To právě úplně není ono, program se ukončí po prvním napsaném slově. Potřeboval bych, aby se program choval následovně:
vstup: Dneska je hezky
výstup: Dneska je hezky
vstup: Reknete quidovi, at jde domu
výstup: Reknete
konec

A prosím ještě o radu, jak by se ten vstup ukončoval celým slovem, například tím "hotovo".

Nahlásit jako SPAM
IP: 92.62.224.–
milan_m0
Newbie
24. 7. 2009   #4
-
0
-

prerob podmienku v tom cykle a mas to. ak nevies co mas v tej podmienke zmenit(vymazat) tak sa to douc

slovom hotovo to ukoncis tak ze nacitavat budes cele slova a do tej podmienky das volanie funkcie strcmp ktorej odovzdas nacitane slovo a do druheho parametru retazec "hotovo" ak sa retazce rovnaju funkcia ti vrati nulu. blizsie informacie o strcmp ti zodpoveda ujo google.

Nahlásit jako SPAM
IP: 91.127.37.–
Midnight
~ Anonymní uživatel
78 příspěvků
24. 7. 2009   #5
-
0
-

Tak už mi to funguje, děkuji moc za pomoc, nenapadlo mě, že bude stačit na načítání celých slov pouze cin, hledal jsem v tom něco více. Ještě teda jestli mi to můžete zkontrolovat, ale program mi funguje.

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

int main()
{
char ch[20];
int count = 0;
cin >> ch;
while (strcmp(ch,"hotovo") != 0)
{
cout << ch << " ";
cin >> ch;
count++;
}
cout << "Zadali jste " << count << " slov.";
cin.get();
cin.get();
return 0;
}

A ještě poslední věc. Když kompiluju v Dev C++, a do programu zadám např: "Je hezky hotovo", tak je vše v pořádku a program pokračuje, ale jamile ještě napíšu cokoliv za "hotovo", tak program spadne.
S Visual C++ ale vše funguje tak, jak má.

Nevíte, co dělám špatně? Popřípadě měl bych přestat používat Dev C++?

Nahlásit jako SPAM
IP: 92.62.224.–
milan_m0
Newbie
24. 7. 2009   #6
-
0
-

a skusil si spustit aj samotny exac ktory ti vygeneruje to visualko?
program ti nepadne ale skonci tak ze nestihnes zaregistrovat ten vystup lebo necaka na vstup s klavesnice. pretoze ak zadas za retazec hotovo dalsie slovo tak toto zostava vo vstupnej fronte a to cin.get() ho nacita a tym padom program uz necaka na dalsi vstup z klavesnice

skus tam dat napriklad system("pause"); aby si videl, aj ked tento prikaz by si asi nemal pouzivat a osetrit to cyklom, ktory bude nacitavat znaky zo vstupnej fronty dovtedy dokedy tam ziaden bordel nezostane.

Nahlásit jako SPAM
IP: 91.127.37.–
Midnight
~ Anonymní uživatel
78 příspěvků
24. 7. 2009   #7
-
0
-

Aha, tak to to všechno vysvětluje, jsem zase o něco moudřejší, program opravdu zkončil, s tím system("pause"); je to vidět.

Tak ještě jednou děkuju za pomoc.

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

Podobná vlákna

Pomoc s ukolem — založil Veganekk

Pomoc s ukolem — založil Janickaaa1919

Pomoc s úkolem — založil Stols

Pomoc s úkolem — založil Malirka

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ý