Losowanie bez powtórzeń - Program rozwiązujący zadanie
Ostatnio zmodyfikowano 2015-10-29 19:25
Lich555 Temat założony przez niniejszego użytkownika |
» 2015-10-28 20:57:06 Wcześniej myślałem, że jak napiszemy false, to nam powinno pominąć if( iLiczba == tab[ i ] ) (bo to jest true). Teraz rozumiem to tak, że jak if( iLiczba == tab[ i ] ) jest true, czyli wylosowana liczba jest równa liczbie w tablicy to wtedy pokaże się true. Dobrze to rozumiem? :D |
|
carlosmay |
» 2015-10-28 21:44:19 if( iLiczba == tab[ i ] ) jest true, czyli wylosowana liczba jest równa liczbie w tablicy to wtedy pokaże się true |
Program wyjdzie z funkcji zwracając z niej do miejsca wywołania wartość true , czyli po sprawdzeniu danych przekazanych do funkcji, wartość zwrócona "zastępuje" wywołanie funkcji. Jeśli chodzi o kilka returnów w funkcji, to musisz "obwarować" wartością zwracaną wszystkie możliwe punkty powrotu z funkcji, aby uniknąć niezdefiniowanych zachowań. |
|
Lich555 Temat założony przez niniejszego użytkownika |
» 2015-10-29 19:25:20 Co do zadania domowego nr 1. Daleko od poprawnego działania jest mój program? :P #include <iostream> #include <cstdlib> #include <time.h>
using namespace std;
bool czybyla( int iKac, int iiLiczba[] ) { int i = 0; if( iKac <= i ) return false; do { if( iiLiczba[ i ] == iKac ) return true; i++; } while( i < 2 ); return false; }
int los( int iLiczba[] ) { return( iLiczba[ rand() % 2 ] ); }
int main() { srand( time( NULL ) ); int liczba[ 3 ]; int i = 0; int wylos = 0; cout << "Podaj 3 liczby" << endl; for( int i = 0; i < 3; i++ ) cin >> liczba[ i ]; cout << endl; int kac = los( liczba ); do { if( czybyla( kac, liczba ) == false ) liczba[ wylos ] = kac; cout << kac << endl; wylos++; } while( wylos < 2 ); return 0; }
|
|
1 « 2 » |