niekończąca się pętla
Ostatnio zmodyfikowano 2017-09-29 10:56
Corvette653 Temat założony przez niniejszego użytkownika |
niekończąca się pętla » 2017-09-28 18:54:20 proszę o pomoc z jakiejś przyczyny mój bool czywylosowana() zawsze zwraca true. Dodałem kilka coutów aby łatwiej można było zobaczyć w czym tkwi problem. Program po wczytaniu 3 cyfr cały czas wypisuje 0101010101010101010101010101010101010101 w nieskończoność (czyli moje 2 couty )
Aby było łatwiej wklejam cały progrm:
#include <iostream> #include <cstdlib> #include <ctime> #include <limits> using namespace std;
bool czywylosowana ( int wylosowana [], int liczba ) { int a = 0; cout << 1; -------------------------------------------------------------------------------- cout 1 do { if ( liczba == wylosowana [ a ] ) { return true; } a++; } while ( a < 2 ); cout << 2; --------------------------------------------------------------------------------- cout 2 return false; }
int main () { srand( time( NULL ) ); int wylosowana [ 2 ]; int liczba [ 3 ]; int a = 0; int los;
cout << "wpisz 3 liczby:"; do { while( !( cin >> liczba [ a ] ) ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); cout << "Wpisales zla liczbe!!! POWTORZ" << endl; }; a++; } while ( a < 3 );
a = 0;
do { do { cout << 0; ------------------------------------------------------------------------ cout 0 los = ( rand() % 3 ) + 0; liczba [ los ] = wylosowana [ a ]; } while ( czywylosowana ( wylosowana, liczba [ los ] ) ); a++; cout << 3; ---------------------------------------------------------------------------- cout 3 } while ( a < 2 ); cout << wylosowana [ 0 ] << endl << wylosowana [ 1 ] << endl <<4; return 0; }
|
|
Corvette653 Temat założony przez niniejszego użytkownika |
prosze o odpowiedź » 2017-09-28 19:07:24 naprawdę bardzo proszę o jakąkolwiek odpowiedź chociaż pomysł przez co to może nie działąć ponieważ nie mam pojęcia może źle wpisałem coś w randzie bo chyba o to chodzi że losuje sie cały czas ta sama licba naprawde proszę o cokolwiek i z góry bardzo dziękuje. |
|
latajacaryba |
» 2017-09-28 19:25:31 pisze [a.] miast samego a, ponieważ forum formatuje do { cout << 0; ------------------------------------------------------------------------cout 0 los =( rand() % 3 ) + 0; liczba[ los ] = wylosowana[ a.]; } while( czywylosowana( wylosowana, liczba[ los ] ) );
Skoro liczba[los] równa się wylosowana[a.], to jeśli przekażesz tablicę wylosowana i liczbę[los] do funkcji, to zostaną porównane tablica (w której jednym elementem jest wylosowana[los] oraz sama wylosowana[los]). A są takie same (bo liczba[ los ] = wylosowana[ a.]; ) Zakładając, że wylosowana[a.] równa się 3, podstawmy to: do { cout << 0; ------------------------------------------------------------------------cout 0 los =( rand() % 3 ) + 0; liczba[ los ] = 3; } while( czywylosowana( wylosowana, 3 ) );
bool czywylosowana( int wylosowana[], int liczba ) { int a = 0; cout << 1; --------------------------------------------------------------------------------cout 1 do { if( 3 == wylosowana[ a.] ) { return true; } a++; } while( a < 2 ); cout << 2; ---------------------------------------------------------------------------------cout 2 return false; }
Reasumując: masz błąd w wyróżnionym miejscu |
|
Corvette653 Temat założony przez niniejszego użytkownika |
ok » 2017-09-28 19:33:00 czyli przeniesienie tej linijki ( liczba [ los ] = wylosowana [ a ]; ) w miejsce: do { cout << 0; los = ( rand() % 3 ) + 0; liczba [ los ] = wylosowana [ a ];<<<<<<z tąd>>>>>> } while ( czywylosowana ( wylosowana, liczba [ los ] ) ); >>>>>>>TUTAJ<<<< a++; cout << 3; } while ( a < 2 ); powinno pomódz tak?
|
|
mateczek |
» 2017-09-28 19:33:10 libczba = tablica[ 3 ] czyJest( tablica, liczba );
[ code ] ddfasdf [ \c ode ]
|
|
Chowan |
» 2017-09-28 19:43:08 nie wiem czy dobrze czytam, ale nie przypisujesz wartości do tablicy wylosowana a potem chcesz wypisać liczby z tej tablicy. |
|
Corvette653 Temat założony przez niniejszego użytkownika |
coś jednak jest nie tak » 2017-09-28 19:44:40 przeniosłem tą linijke tak jak napisałem w poprzedniej wiadomości i mimo tego że wyświetlają mi się teraz 2 cyfry tak jak powinno być to te cyfry to: 1987144653 oraz 4273264 są one stałe czyli wyświetlają sie zawsze ( chyba nigdy nie skończe tego kodu to już mój 2 problem z nim... ) |
|
Corvette653 Temat założony przez niniejszego użytkownika |
źle czytasz chowan » 2017-09-28 19:46:44 właśnie ta feralna liinijka ( liczba [ los ] = wylosowana [ a ]; ) przypisuje wartość do tablicy wylosowana :) jest ona w pętli więc przypisuje wartość do wszystkich zmiennych w tej tablicy |
|
« 1 » 2 |