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.
Fórum › C / C++
C++ drobná pomoc s úkolem
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);
}
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".
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.
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++?
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.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pomoc, pomoc s úkolem (matice v Delphi) — založil maxikp
Pomoc s ukolem — založil Janickaaa1919
Pomoc s úkolem — založil Markéta
Pomoc s úkolem v C++ — založil zaltex
Pomoc s úkolem v C — založil Thill
Moderátoři diskuze