tgOGemD12 Temat założony przez niniejszego użytkownika |
Nie wyświetla mi się żaden wynik. Zadanie z rodziału 21. » 2017-05-20 12:00:05 Witam serdecznie. Mam problem z zadaniem z rozdziału 21, czy mógłby ktoś rzucić okiem i sprawdzić co jest nie tak ? wydaje mi się że rozumiem swój kod od początku do końca jednak nie widzę błedu a wynik się nie wyświetla. #include <iostream> #include<cstdlib> #include<ctime>
using namespace std;
int losowanie() { return( rand() % 10 ) + 1; }
bool sprawdzanie( int liczba, int em[], int ile ) { if( ile <= 0 ) return false; int i = 0; if( em[ i ] == liczba ) { return true; i++; } while( i < ile ); return false; }
int main() { srand( time( NULL ) ); int wizz = 0; int tg[ 5 ]; for( int i = 0; i < 5; i++ ) { int liczba = losowanie(); if( liczba, tg[ i ], wizz ) { tg[ wizz ] = liczba; wizz++; } while( wizz < 5 ); } for( int i = 1; i < 6; i++ ) { cout << " Liczba nr. " << i << " wynosi: " << tg[ i ] << "\n"; } return 0; }
|
|
karambaHZP |
» 2017-05-20 12:07:53 Nie potrafię zlokalizować miejca w którym mam błąd. |
Do tych celów służy debugger. |
|
tgOGemD12 Temat założony przez niniejszego użytkownika |
» 2017-05-20 12:29:59 Debugger nic nie znajduje. |
|
maly7 |
» 2017-05-20 13:03:41 Do czego służy ci ten warunek? if( liczba, tg[ i ], wizz ) jesteś pewny, że chciałeś tam wstawić ','? Poza tym, co to ma robić: if( liczba, tg[ i ], wizz ) { tg[ wizz ] = liczba; wizz++; } while( wizz < 5 ); Program zawiesza się prawdopodobnie na pętli while, ponieważ ciągle sprawdza czy zmienna wizz jest mniejsza od 5 i nic z nią nie robi. Jest do...while ale nie if...while. @Jeszcze to: for( int i = 1; i < 6; i++ ) { cout << " Liczba nr. " << i << " wynosi: " << tg[ i ] << "\n"; } Chcesz wyświetlić tg[5], a nie ma takiego elementu. |
|
wojownik266 |
» 2017-05-20 13:07:28 Skoro rozumiesz swój kod tak jak napisałeś. To mógłbyś pokrótce napisać co ten program ma robić? Bo ja nie za bardzo wiem. |
|
tgOGemD12 Temat założony przez niniejszego użytkownika |
» 2017-05-20 13:12:48 To miałbyć warunek sprawdzający czy liczba się już wcześniej powtórzyła. Napisanie programu losującego nie stanowi żadnego problemu, tylko przez ten warunek z liczbami niepowtarzającymi się wszystko mi się gmatfa.
poprawiłem pętle for, teraz już jest.
Wciąż liczby się powtarzają, wydaję mi się, że mam zły warunek ale nie potrafię go poprawić.
#include <iostream> #include<cstdlib> #include<ctime>
using namespace std;
int losowanie() { return ( rand() % 10 ) + 1; }
bool sprawdzanie(int liczba, int em[], int ile) { if(ile <= 0) return false;
int i=0;
if(em == liczba) do { return true; i++; }while(i<ile);
return false; }
int main() { srand(time(NULL));
int wizz = 0; int tg[5];
for(int i=0; i<5; i++) { int liczba=losowanie(); tg=liczba;
if (sprawdzanie(liczba, tg, wizz)) do { tg[wizz] = liczba; wizz++; }while(wizz<5);
}
for(int i=1; i<6;i++) { cout << " Liczba nr. "<< i<< " wynosi: "<< tg<<"\n"; }
return 0; } |
|
maly7 |
» 2017-05-20 13:16:41 Wróć do poprzednich lekcji albo napisz prosty program i sprawdź eksperymentalnie jak działa ',' w instrukcji warunkowej. if( liczba, tg[ i ], wizz ) to to samo co: if( wizz ) @ tg = liczba; Brakuje indeksu tablicy. @teraz zauważyłem, że napisałeś funkcje która Ci to sprawdzała. Więc w ifie zapomniałeś wstawić po prostu jej nazwy. |
|
tgOGemD12 Temat założony przez niniejszego użytkownika |
» 2017-05-20 13:34:29 W kompilatorze mam ten indeks, nie skopiował się. Wydaję mi się, że poprawiłem wszystko jednak dalej liczby się powtarzają, co wskazuje na problem z warunkiem, tylko co jest nie tak ?
#include <iostream> #include<cstdlib> #include<ctime>
using namespace std;
int losowanie() { return ( rand() % 10 ) + 1; }
bool sprawdzanie(int liczba, int em[], int ile) { if(ile <= 0) return false;
int i=0;
if(em == liczba) do { return true; i++; }while(i<ile);
return false; }
int main() { srand(time(NULL));
int wizz = 0; int tg[5];
for(int i=0; i<5; i++) { int liczba=losowanie(); tg[ i ]=liczba;
if (sprawdzanie(liczba, tg, wizz)) do { tg[wizz] = liczba; wizz++; }while(wizz<5);
}
for(int i=1; i<6;i++) { cout << " Liczba nr. "<< i<< " wynosi: "<< tg<<"\n"; }
return 0; } |
|
« 1 » 2 |