break a continue
Na pisanie programov pouzivam Geany. Kompilator mam nainstalovany gcc a g++. Napisal som si kratky programik, konkretne tento:
cout << "Hadajte cislo: ";
cin >> odhad;
if (odhad == tajne) {
cout << "Uhadli ste! Pocet pokusov: " << pokusov << ".\n";
break;
}
pokusov++;
Pri pokuse o skompilovanie niektorym z horeuvedenych kompilatorov mi vypisuje chybu:
"break statement not within loop or switch". Co znamena, ze sa mi program nepodari vobec spustit. Da sa toto chovanie nejako potlacit, alebo ako by som mohol takyto typ programu spustit? Viem, ze sa ten program da napisat aj inak, ale to ma nezaujima, zaujima ma, ako taketo chovanie obist.
Pre pridávanie komentárov sa musíte prihlásiť.
A ten program, čo si sem dal je celý alebo len časť z neho si vytiahol?
for(int i=0; i<10; i++){
cout<<"Hadajte cislo: ";
cin >> odhad;
if(odhad==tajne){
cout<<"Uhadli ste! Pokusov: "<< pokusov <<endl;
break;
}else pokusov++;
}
Podla chybovej hlasky to nemas v cykle. Pozri si kod hore - v cykle for.
Pripadne si skontroluj zatvorky, ci si neuzavrel cyklus skor, ako si cakal.
Ak nebudes vediet najst chybu, vloz sem cely for cyklus.
int main() {
int odhad;
int pokusov = 1;
int tajne = 3;
cout << "Hadajte cislo od jedna do desat.\n";
cout << "Mas tri pokusy.\n";
for (int i = 1; i <= 3; i++) {
cout << "Vas tip: ";
cin >> odhad;
if (odhad == tajne) {
cout << "Uhadli ste! Pocet pokusov: " << pokusov << ".\n";
break;
}
}
return 0;
}
Ale ako som spomenul vyssie, mna zaujima hlavne to, ci je mozne presne taketo, alebo podobne chovanie kompilatora nejako obist. Resp. ci je mozne nejako potlacit vypisovanie chybovych hlasok a takpoviediac spustit program za kazdu cenu. To je to co ma zaujima, ci je mozne nieco taketo, odignorovat vsetky varovania a pokusit sa spustit program aj napriek tomu.
Hore v hlavičke programu máš čo? Pretože ja som to normálne skompiloval a spustil po pridaní include iostream knižnice a nastavení namespaceu.
g++ -v
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.3-4ubuntu4' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu4)
#include <iostream>
using namespace std;
int main() {
int odhad;
int pokusov = 1;
int tajne = 3;
cout << "Hadajte cislo od jedna do desat.\n";
cout << "Mas tri pokusy.\n";
for (int i = 1; i <= 3; i++) {
cout << "Vas tip: ";
cin >> odhad;
if (odhad == tajne) {
cout << "Uhadli ste! Pocet pokusov: " << pokusov << ".\n";
break;
}
}
return 0;
}
Ked mi to vypisalo tuto chybu, nemal som tam ten cyklus (lenze uz som mal tolko verzii programov, co som skusal vselijake veci, ze som skomolil nejaky hybridny program), mal som tam prikaz break, ktory nebol v cykle a na zaklade toho sa vo mne objavila otazka, ktoru chcem vyriesit. Cenim si toho, ze sa snazite prist na to, preco vypisuje taketo chyby a opravit ten program, ale moja otazka smeruje inde. Teda nejedna sa mi o to, aby ste mi nasli chyby v tom programe, jedna sa mi o to, aby som vyriesil otazku, ze ci sa da nejako, aj ked natvrdo obist ohlasovanie chyb kompilatorom. Cize znovu, C++ sa ucim z knihy, v ktorej su tie priklady napisane a dufam, ze tam su tie priklady bez chyb :) Mne sa jedna cisto len o otazku, ci sa da napr. nejakym prepinacom v konzole, alebo pridanim nejakoho riadku do programu obist ohlasovanie chyb kompilatorom a spustit takyto program za kazdu cenu .. aj keby bol vysledok nezmyselny. To je vsetko, toto je otazka, co ma zaujima.
proste ucenim, ktore by chcelo obchadzat chyby a nie sa ucit ich odstranit akurat stracas cas
a navyse C++ je dost volny jazyk, taka "sprosta" Java ti hubuje na daleko viac veci (nenainicializovany objekt, neodchytena vynimka, ...)