Losowanie bez powtorzen - nie moge znalezc bledu
Ostatnio zmodyfikowano 2015-10-12 16:21
carlosmay |
» 2015-10-11 15:52:31 if( !los == liczba[ c ] ) |
Priorytety operatorów. Jeśli nie wiesz nie pamiętasz, który jest wykonywany pierwszy determinujesz kolejność nawiasami. if( !( los == liczba[ c ] ) ) W twoim przykładzie jest tak: 1. zmienna los jest negowana (np. los = 5 -> los = 0) lub (los = 0 -> los = 1) 2. porównujesz zanegowaną zmienną los do wartości z tablicy, ale zmienna los po zanegowaniu może mieć tylko dwie wartości ( 0 lub 1). Poza tym reszta kodu też jest do poprawienia, mimo los == liczba[ c ] i tak program wpisuje do tablicy tą wartość i przechodzi do następnego elementu. Wskazówka: - losowanie los - iterujesz przez cała tablice - zapis do tablicy po wyjściu z pętli, jeśli dojdzie do końca (jeśli nie powtórz losowanie) |
|
danielpadewski Temat założony przez niniejszego użytkownika |
» 2015-10-11 22:34:04 przepraszam ze znowu to pisze ale jestem chyba na tyle malo inteligentny ze nie potrafie znalezc rozwiązania , uważam że powinienem umieć rozwiązac taki problem i rozumieć działanie programu (analizując go juz n-ty raz ciągle myśle że wszystko powinno być dobrze ) |
|
carlosmay |
» 2015-10-11 22:47:55 for( i = 0; i < 5; i++ ) { do { a = false; los =( rand() % 6 ) + 5; for( c = 0; los != liczba[ c ] && c <= i; c++ ) { } if( i ==( c - 1 ) ) liczba[ i ] = los; else a = true; } while( a ); } for( int i = 0; i < 5; i++ ) cout << liczba[ i ] << " ";
cout << endl;
Rób wszystko po kawałku. Używaj debugera, bardzo ułatwia zadanie. |
|
danielpadewski Temat założony przez niniejszego użytkownika |
» 2015-10-12 13:31:11 #include <iostream> #include <ctime> #include <cstdlib> using namespace std; int main() { int tab[ 5 ]; int los; bool status = true; srand( time( NULL ) ); for( int i = 0; i < 5; i++ ) { do { status = true; los =( rand() % 5 ) + 1; for( int z = 0; z < i || z == i; z++ ) { if( los == tab[ z ] ) { status = false; } } } while( status == false ); tab[ i ] = los; } for( int b = 0; b < 5; b++ ) { cout << tab[ b ] << endl; } return 0; }
ze świeżym mózgiem zasiadłem do komputera i postanowiłem od nowa napisać program , "chyba" działa poprawnie , szczerze mówiąc tak średnio rozumiem czym się różni ten kod od poprzedniego ale może to dlatego że nie skupiałem się nad tym już |
|
pekfos |
» 2015-10-12 16:21:31 Po co z == i? Pod tym indeksem nie masz jeszcze niczego zapisanego. |
|
1 « 2 » |