V0ldek Temat założony przez niniejszego użytkownika |
[Lekcja 22] Problem z losowaniem bez powtórzeń » 2012-03-12 21:51:30 #include <iostream> #include <cstdlib> #include <ctime>
int wylosuj( int start, int zasieg ) { int liczba; liczba =( rand() % zasieg ) + start; return liczba; }
bool czyWylosowana( int t[], int liczba, int ktora ) { if( ktora <= 0 ) { return false; }; for( int i = 0; i < ktora; i++ ) { if( t[ i ] == liczba ) { return true; }; } return false; }
void wypelnij( int t[], int start, int ile, int zasieg ) { int liczba; for( int i = 0; i < ile; i++ ) { liczba = wylosuj( start, zasieg ); if( czyWylosowana( t, liczba, i ) == false ) { t[ i ] = liczba; } } }
void wypiszNormalnie( int t[], int ile ) { for( int i = 0; i < ile; i++ ) { int liczba; liczba = t[ i ]; int j; j = i; j++; std::cout << j << ". liczba ==> " << liczba << std::endl; } }
void wypiszOdKonca( int t[], int ile ) { int indeks = ile; indeks--; for( int i = indeks; i >= 0; i-- ) { int liczba; liczba = t[ i ]; int j; j = i; j++; std::cout << j << ". liczba ==> " << liczba << std::endl; } }
bool czyMax( int t[], int indeks1, int indeksMax ) { int indeks2; indeks2 = 0; for( int i = 0; i < 1; i++ ) { if( t[ indeks1 ] < t[ indeks2 ] ) { return false; } else { if( indeks2 == indeksMax ) { return false; }; }; } return true; }
bool czyMin( int t[], int indeks1, int indeksMax ) { int indeks2; indeks2 = 0; for( int i = 1; i > 0; i++ ) { if( t[ indeks1 ] > t[ indeks2 ] ) { return false; } else { if( indeks2 == indeksMax ) { return false; }; }; } return true; }
int znajdzMax( int t[], int ile ) { int liczba; for( int i = 0; i < ile; i++ ) { liczba = t[ i ]; if( czyMax( t, i, ile == true ) ) { return liczba; } else i++; } }
int znajdzMin( int t[], int ile ) { int liczba; for( int i = 0; i < ile; i++ ) { liczba = t[ i ]; if( czyMin( t, i, ile == true ) ) { return liczba; } else i++; } }
void wypiszMaxIMin( int t[], int ile ) { int max = znajdzMax( t, ile ); int min = znajdzMin( t, ile ); std::cout << "Najwieksza liczba to: " << max << std::endl; std::cout << "Najmniejsza liczba to: " << min << std::endl; }
int main() { srand( time( NULL ) ); int start; int stop; int ile; int zasieg; start = 10; stop = 30; ile = 10; zasieg =( stop - start + 1 ); int tablica[ ile ]; wypelnij( tablica, start, ile, zasieg ); std::cout << "Liczby od poczatku:" << std::endl; wypiszNormalnie( tablica, ile ); std::cout << "Liczby od konca:" << std::endl; wypiszOdKonca( tablica, ile ); wypiszMaxIMin( tablica, ile ); return 0; }
Po wywołaniu, ZAWSZE jedna z liczb jest całkowicie poza zakresem, np. zamiast czegoś z 10-30 wyskakuje 2468469... Wyszukiwanie min i max nie działa, zawsze wychodzi 0... [EDIT] Wiem, że losowanie nie miało być bez powtórzeń, ale ja chciałem tak, a jako że jestem uparty osioł to z tego nie zrezygnuje ;D. |
|
Dragonit |
» 2012-03-12 22:11:44 Na pierwszy rzut oka to masz problem ze wstawianiem średników. |
|
V0ldek Temat założony przez niniejszego użytkownika |
» 2012-03-12 22:34:34 Eeep... Kompilator nie wyrzucił mi błędu ani nawet ostrzeżenia... Poza tym nie widzę gdzie nie ma średnika... |
|
Dragonit |
» 2012-03-12 23:06:08 Poza tym nie widzę gdzie nie ma średnika... |
wręcz odwrotnie :pp |
|
V0ldek Temat założony przez niniejszego użytkownika |
» 2012-03-13 14:46:03 Gdzie? Przykład? |
|
pekfos |
» 2012-03-13 15:13:02 if( ktora <= 0 ) { return false; }; Tu nie trzeba średnika. |
|
V0ldek Temat założony przez niniejszego użytkownika |
» 2012-03-13 15:33:13 Czyli po if i else nie stawiać? Ok, jak wrócę do domu to sprawdzę, bo u rodziny jestem. |
|
V0ldek Temat założony przez niniejszego użytkownika |
» 2012-03-13 17:42:52 #include <iostream> #include <cstdlib> #include <ctime>
int wylosuj( int start, int zasieg ) { int liczba; liczba =( rand() % zasieg ) + start; return liczba; }
bool czyWylosowana( int t[], int liczba, int ktora ) { if( ktora <= 0 ) { return false; } for( int i = 0; i < ktora; i++ ) { if( t[ i ] == liczba ) { return true; } } return false; }
void wypelnij( int t[], int start, int ile, int zasieg ) { int liczba; for( int i = 0; i < ile; i++ ) { liczba = wylosuj( start, zasieg ); if( czyWylosowana( t, liczba, i ) == false ) { t[ i ] = liczba; } } }
void wypiszNormalnie( int t[], int ile ) { for( int i = 0; i < ile; i++ ) { int liczba; liczba = t[ i ]; int j; j = i; j++; std::cout << j << ". liczba ==> " << liczba << std::endl; } }
void wypiszOdKonca( int t[], int ile ) { int indeks = ile; indeks--; for( int i = indeks; i >= 0; i-- ) { int liczba; liczba = t[ i ]; int j; j = i; j++; std::cout << j << ". liczba ==> " << liczba << std::endl; } }
bool czyMax( int t[], int indeks1, int indeksMax ) { int indeks2; indeks2 = 0; for( int i = 0; i < 1; i++ ) { if( t[ indeks1 ] < t[ indeks2 ] ) { return false; } else { if( indeks2 == indeksMax ) { return false; } } } return true; }
bool czyMin( int t[], int indeks1, int indeksMax ) { int indeks2; indeks2 = 0; for( int i = 1; i > 0; i++ ) { if( t[ indeks1 ] > t[ indeks2 ] ) { return false; } else { if( indeks2 == indeksMax ) { return false; } } } return true; }
int znajdzMax( int t[], int ile ) { int liczba; for( int i = 0; i < ile; i++ ) { liczba = t[ i ]; if( czyMax( t, i, ile == true ) ) { return liczba; } else i++; } }
int znajdzMin( int t[], int ile ) { int liczba; for( int i = 0; i < ile; i++ ) { liczba = t[ i ]; if( czyMin( t, i, ile == true ) ) { return liczba; } else i++; } }
void wypiszMaxIMin( int t[], int ile ) { int max = znajdzMax( t, ile ); int min = znajdzMin( t, ile ); std::cout << "Najwieksza liczba to: " << max << std::endl; std::cout << "Najmniejsza liczba to: " << min << std::endl; }
int main() { srand( time( NULL ) ); int start; int stop; int ile; int zasieg; start = 10; stop = 30; ile = 10; zasieg =( stop - start + 1 ); int tablica[ ile ]; wypelnij( tablica, start, ile, zasieg ); std::cout << "Liczby od poczatku:" << std::endl; wypiszNormalnie( tablica, ile ); std::cout << "Liczby od konca:" << std::endl; wypiszOdKonca( tablica, ile ); wypiszMaxIMin( tablica, ile ); return 0; }[ / code src = "c++P#include <iostream> #include <cstdlib> #include <ctime>
int wylosuj( int start, int zasieg ) { int liczba; liczba =( rand() % zasieg ) + start; return liczba; }
bool czyWylosowana( int t[], int liczba, int ktora ) { if( ktora <= 0 ) { return false; } for( int i = 0; i < ktora; i++ ) { if( t[ i ] == liczba ) { return true; } } return false; }
void wypelnij( int t[], int start, int ile, int zasieg ) { int liczba; for( int i = 0; i < ile; i++ ) { liczba = wylosuj( start, zasieg ); if( czyWylosowana( t, liczba, i ) == false ) { t[ i ] = liczba; } } }
void wypiszNormalnie( int t[], int ile ) { for( int i = 0; i < ile; i++ ) { int liczba; liczba = t[ i ]; int j; j = i; j++; std::cout << j << ". liczba ==> " << liczba << std::endl; } }
void wypiszOdKonca( int t[], int ile ) { int indeks = ile; indeks--; for( int i = indeks; i >= 0; i-- ) { int liczba; liczba = t[ i ]; int j; j = i; j++; std::cout << j << ". liczba ==> " << liczba << std::endl; } }
bool czyMax( int t[], int indeks1, int indeksMax ) { int indeks2; indeks2 = 0; for( int i = 0; i < 1; i++ ) { if( t[ indeks1 ] < t[ indeks2 ] ) { return false; } else { if( indeks2 == indeksMax ) { return false; } } } return true; }
bool czyMin( int t[], int indeks1, int indeksMax ) { int indeks2; indeks2 = 0; for( int i = 1; i > 0; i++ ) { if( t[ indeks1 ] > t[ indeks2 ] ) { return false; } else { if( indeks2 == indeksMax ) { return false; } } } return true; }
int znajdzMax( int t[], int ile ) { int liczba; for( int i = 0; i < ile; i++ ) { liczba = t[ i ]; if( czyMax( t, i, ile == true ) ) { return liczba; } else i++; } }
int znajdzMin( int t[], int ile ) { int liczba; for( int i = 0; i < ile; i++ ) { liczba = t[ i ]; if( czyMin( t, i, ile == true ) ) { return liczba; } else i++; } }
void wypiszMaxIMin( int t[], int ile ) { int max = znajdzMax( t, ile ); int min = znajdzMin( t, ile ); std::cout << "Najwieksza liczba to: " << max << std::endl; std::cout << "Najmniejsza liczba to: " << min << std::endl; }
int main() { srand( time( NULL ) ); int start; int stop; int ile; int zasieg; start = 10; stop = 30; ile = 10; zasieg =( stop - start + 1 ); int tablica[ ile ]; wypelnij( tablica, start, ile, zasieg ); std::cout << "Liczby od poczatku:" << std::endl; wypiszNormalnie( tablica, ile ); std::cout << "Liczby od konca:" << std::endl; wypiszOdKonca( tablica, ile ); wypiszMaxIMin( tablica, ile ); return 0; } Ciągle to samo, usunąłem średniki i nic. |
|
« 1 » 2 |