problemy z pętlą do while oraz losowaniem.
Ostatnio zmodyfikowano 2017-09-07 21:23
pekfos |
» 2017-09-07 20:11:49 To, co się zapisze do inta po wpisaniu samych błędnych danych zależy od wersji standardu, której trzyma się twój kompilator. Może twoja linia powinna wyglądać tak: czydobre = cin >> liczba2;
czydobre = cin >> liczba2 && liczba2; W zależności czy wpisana liczba 0 jest poprawna, czy nie. |
|
karambaHZP |
» 2017-09-07 20:14:37 std::cin.sync() też może nie działać tak jak tego oczekujesz. Może trzeba zamienić to na std::cin.ignore() . |
|
mateczek |
» 2017-09-07 20:14:52 #include <iostream> #include<limits> using namespace std; int main() { int liczba2; while( !( cin >> liczba2 ) ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); cout << "to co wpisałeś to nie liczba!!! powtorz" << endl; }; }
|
|
Corvette653 Temat założony przez niniejszego użytkownika |
karambaHZP » 2017-09-07 20:16:59 Która linijka? dobra od nowa tworze dwie zmienne int liczba2 i bool czydobre wczytuje liczba2 przypisuje do boola liczba2-jeśli naprawdę jest to liczba bool = 1 jeśli nie bool = 0 wypisuje wartość boola aby wiedzieć czy pętla ma się powtórzyć i czyscze aplikacje od flag błędów itd...
TO NIE DZIAŁA while ( !czydobre ) znaczy że kod ma się powtórzyć gdy bool czydobre = 0 TO NIE DZIAŁA ponieważ pętla nigdy się nie powtarza ( nawet jeśli aplikacja wypisze 0 jako wartość boola ) mateczek wielkie dzięki twój kod poprawnie działa :) jednak używam windows 10 i mówię że w innych apk to działa
|
|
mateczek |
» 2017-09-07 20:22:50 może niedziałać bo kod jest bez sensu!!! Sprawdzasz liczbę, której nie udało się wczytać cin >> liczba if( liczba ) { }
zrób tak jak napisał Pekfos na górze strony lub skompiluj przykład, który wstawiłem ja dwa posty wyżej. |
|
karambaHZP |
» 2017-09-07 20:23:55 ponieważ pętla nigdy się nie powtarza ( nawet jeśli aplikacja wypisze 0 jako wartość boola ) |
To jest niemożliwe. Czy uruchamiasz właściwy plik? Może nie przebudowany jest po jakiejś zmianie w kodzie. |
|
Corvette653 Temat założony przez niniejszego użytkownika |
jeden temat zamknięty teraz temat 2 » 2017-09-07 20:49:17 jak wczytanie się nie powiedzie?? jeśli wpiszesz a zamiast cyfry to zapisze się np.: 1341 a w linii: czydobre = liczba2 mój bool czyli czydobre dostanie wartość 0 koniec. a pętla się naprwde nie wykona ponownie ( w takim przypadku jak powyżej powinna się powtórzyć jednak tego nie robi mówie że mój nauczyciel tego nie ogarnął naprawdę nie wiem. Na szczęście kod który podaliście powyżej działa nie rozumiem go do końca ale grunt że jest dobrze i koniec ). Natomiast pozostaje sprawa tej linijki: liczba = liczba1 || liczba2 || liczba3; chodzi o to że mam 3 zmienne liczba1,liczba2 i liczba3 Chce wylosować jedną z nich. nie mogę napisać liczba = liczba2 ponieważ to nie jest losowanie ja chce aby komputer !!losowo!! wybierał jedną z tych 3 zmiennych i przypisywał jej wartość do zmiennej liczba.
|
|
karambaHZP |
» 2017-09-07 20:59:30 jeśli wpiszesz a zamiast cyfry |
To zależy od kompilatora. UB jeśli później operujesz na zmiennej do której wczytujesz dane. Próba wczytania znaku do zmiennej liczbowej powoduje zablokowanie strumienia wejściowego. Zmienna nie zostanie nadpisana wprowadzanymi danymi i program operuje na śmieciach. |
|
1 « 2 » 3 |