C++ Losowanie bez powtórzeń-Zadanie z treści.
Ostatnio zmodyfikowano 2016-07-19 19:18
a_jasieniecki Temat założony przez niniejszego użytkownika |
C++ Losowanie bez powtórzeń-Zadanie z treści. » 2016-07-14 10:54:17 Witam stworzyłem kod który spełnia postawione w treści wymagania lecz nie spełnia ich dla większych tablic (t[e]), chyba że dopiszemy kolejne warunki if'a, teraz moje pytanie: Czy da się przerobić ten kod w sposób mało inwazyjny tak aby działał dla tablicy wielkości n? #include <iostream> #include <ctime> #include <cstdlib> #include <windows.h>
using namespace std;
void losujLiczby( int t[], int e, int p, int k ) { srand( time( NULL ) ); e = 0; int m = k - p; do { t[ e ] =( rand() % m ) + p; if( t[ e - 1 ] == t[ e ] || t[ e ] == t[ e - 2 ] || t[ e ] == t[ e - 3 ] || t[ e ] == t[ e - 4 ] || t[ e ] == t[ e - 5 ] ) { e = 0; t[ e ] =( rand() % m ) + p; e++; } else { e++; } } while( e < 5 ); } void wylosowaneLiczby( int t[], int e ) { e = 0; do { cout << e << ". " << t[ e ] << endl; e++; } while( e < 5 ); } int main() { int tablica[ 5 ]; losujLiczby( tablica, 5, 1, 11 ); wylosowaneLiczby( tablica, 5 ); return 0; }
|
|
karambaHZP |
» 2016-07-14 12:06:04 Do sprawdzenia powtórzeń zastosuj pętlę i w niej porównuj wylosowaną wartość z tymi w tablicy. |
|
a_jasieniecki Temat założony przez niniejszego użytkownika |
» 2016-07-19 16:26:56 do { cout << liczby1[( liczby[ a ] ) ] << endl; a++; } while( a < 10 );
do { cout << liczby1[ liczby[ a ] ] << endl; a++; } while( a < 10 );
Czy któryś z powyższych zapisów jest poprawny? Program debuguje się przy obydwu wersjach ale nie kończy się oczekiwanym rezultatem. A ten się nie chce uruchomić do { liczby[ a ]; cout << liczby1[ liczby ] << endl; a++; } while( a < 10 );
Sorry memory brakło mi nawiasu w ifie :) |
|
carlosmay |
» 2016-07-19 19:18:11 Czy któryś z powyższych zapisów jest poprawny? Program debuguje się przy obydwu wersjach ale nie kończy się oczekiwanym rezultatem. |
Pierwsze rozwiązanie może być poprawne, jeśli wartości w tablicy liczby są z zakresu indeksów tablicy liczby1. Drugi kod nie jest poprawny. W indeksie użyłeś adresu tablicy. liczby[ a ]; cout << liczby1[ liczby ] << endl;
|
Edit: jeśli czegoś nie ogarniasz i nie wiesz co się dzieje pisz proste testy. np. std::cout << liczby << '/n';
i zobacz jaką wartość wypisze. Wtedy zastanów się czy tego oczekujesz. |
|
« 1 » |