Losowanie bez powtorzen
Ostatnio zmodyfikowano 2014-12-04 10:17
Vanilka Temat założony przez niniejszego użytkownika |
Losowanie bez powtorzen » 2014-12-04 08:12:28 Witam, mam maly problem. program teoretycznie dziala. Problemem jest ostatnie losowanie. Podejzewam ze blad lezy gdzies w inkrementacji. Moglibyscie zerknac na moj kod. Wiem ze widzac go wielu z was pewnie opluje monitor.. gdyz jest on pisane jak przez debila, ale coz.. jestem n00bem i ucze sie dopiero :D PS. te wstawki typu "wartosc powtorzenia" to bylo po to abym mogla zlokalizowac blad, gdyz naprawde dlugo sie z tym meczylam @EDIT: Zauwayzlam ze liczby sa losowane prawidlowo i zapisywane do talicy prawidlowo. Problem pojawia sie przy wyswietleniu tablicy. Gdy skopiuje fragment odpowiedzialny za wyswietlenie wartosci tablicy to za kazdym razem 2 ostatnie lub przedostatnie wartosci sa powtorzone. A jesli fm wyswietlanie "na sztywno" czyli nie w petli tlyko 8 razy wklepie cout.. to wyswietla sie prawidlowo. Jak sobie z tym poradzic ?
void losowanie() {
cout << "bede losowac miejsc " << ilosc_miejsc << endl; cout << "bede losowac sposrod " << ilosc_cyfr << " cyfr" << endl;
int tablica_kodow[0][ilosc_miejsc]; int a = 0; int b = 0; int c;
for (c = 0; c < ilosc_miejsc; c++ ) { tablica_kodow[a][c] = 0; }; int wylosowana_lb; bool powtorzenie = 0; for (b = 0; b < ilosc_miejsc; b++) {
wylosowana_lb = (rand() %ilosc_cyfr) + 1; cout << "wylosowalem" << wylosowana_lb << endl; c = 0; do {
if (wylosowana_lb == tablica_kodow[a][c]) { powtorzenie = 1; cout << "wartosc pierwszego powtorzenia : " << powtorzenie << endl; } else {
powtorzenie = 0; cout << "wartosc drugiego powtorzenia : " << powtorzenie << endl; c++; } } while (c <ilosc_miejsc && powtorzenie == 0);
cout << "wartosc tego powtorzenia : " << powtorzenie << endl; if(powtorzenie == 0) { tablica_kodow[a][b] = wylosowana_lb; } else if (powtorzenie == 1) { b--; } };
for (b = 0; b < ilosc_miejsc; b++) { cout <<"Wylosowana liczba to " << tablica_kodow[a][b] << endl; } cin.get();
}
|
|
Monika90 |
» 2014-12-04 09:25:45 int tablica_kodow[ 0 ][ ilosc_miejsc ]; Taka deklaracja jest bez sensu, wymiar tablicy nie może być równy 0. Jak zmienię 0 na 1, to dostaję taki wynik: bede losowac miejsc 5 bede losowac sposrod 7 cyfr wylosowalem7 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc tego powtorzenia : 0 wylosowalem2 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc tego powtorzenia : 0 wylosowalem7 wartosc pierwszego powtorzenia : 1 wartosc tego powtorzenia : 1 wylosowalem6 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc tego powtorzenia : 0 wylosowalem4 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc tego powtorzenia : 0 wylosowalem3 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc drugiego powtorzenia : 0 wartosc tego powtorzenia : 0 Wylosowana liczba to 7 Wylosowana liczba to 2 Wylosowana liczba to 6 Wylosowana liczba to 4 Wylosowana liczba to 3
Czy o to Ci chodziło? |
|
Vanilka Temat założony przez niniejszego użytkownika |
» 2014-12-04 10:17:38 ło matko... ale ze mnie blondi.. nawet tego nie zauwayzlam :) dzieki.. zawsze kurde zrobie blad w jakies malej pierdolce.. a potem mnie szlag trafia przy szukaniu.. |
|
« 1 » |