losowanie z tablic jednowymiarowych
Ostatnio zmodyfikowano 2013-11-03 17:39
matiko101 Temat założony przez niniejszego użytkownika |
losowanie z tablic jednowymiarowych » 2013-11-03 12:12:25 Witam, Mam problem z losowaniem liczb wpisanych do tablicy. Oto kod: #include<iostream> #include<ctime> #include<cstdlib> using namespace std; int podajliczby() { int c = 0; int tab1[ c ], crozmiar; cout << "Ile cyfr ma byc w tablicy ?\n"; cin >> crozmiar; cout << "Podaj " << crozmiar << " liczb do tablicy\n"; do { cin >> tab1[ c ]; c++; } while( c < crozmiar ); cout << "Podales nastepujace cyfry\n"; c = 0; do { cout << tab1[ c ] << " , "; c++; } while( c < crozmiar ); } int losowanie() { srand( time( 0 ) ); cout << "\nLosuje liczby z tablicy\n"; int c = 0, crozmiar, tab1[ c ], liczba; do { liczba =( rand() % tab1[ c ] ); } while( c < crozmiar ); cout << liczba; }
int main() { podajliczby(); losowanie(); return 0; }
|
|
MrPoxipol |
» 2013-11-03 12:36:04 Rozmiar statycznej tablicy musi być znany podczas kompilacji. Użyj tablicy dynamicznej, albo vectora. |
|
matiko101 Temat założony przez niniejszego użytkownika |
» 2013-11-03 12:38:41 Mógłbyś mi wytlumaczyc na czym one polegaja i w jaki sposob je umiescic ? :)
|
|
pekfos |
» 2013-11-03 13:37:20 int * tablica = new int[ rozmiar ];
lub std::vector<> ( Kurs STL, C++) |
|
matiko101 Temat założony przez niniejszego użytkownika |
» 2013-11-03 17:06:22 Tablice dynamiczne są jeszcze chyba dla mnie za trudne :( Aktualnie stoję na losowaniu bez powtórzeń i nie mogę tego zrozumieć. Mógłby mi ktoś z dobrej chęci krok po kroku napisać // co robi poszczególna linijka ? :) #include <iostream> #include <cstdlib> #include <ctime>
bool czyBylaWylosowana( int iLiczba, int tab[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( tab[ i ] == iLiczba ) return true; i++; } while( i < ile ); return false; }
int wylosuj() { return( rand() % 10 ) + 1; }
int main() { srand( time( 0 ) ); int wylosowane[ 5 ]; int wylosowanych = 0; do { int liczba = wylosuj(); if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false ) { wylosowane[ wylosowanych ] = liczba; wylosowanych++; } } while( wylosowanych < 5 ); wylosowanych = 0; do { std::cout << wylosowane[ wylosowanych ] << std::endl; wylosowanych++; } while( wylosowanych < 5 ); return 0; }
|
|
pekfos |
» 2013-11-03 17:09:13 Czego nie rozumiesz? |
|
matiko101 Temat założony przez niniejszego użytkownika |
» 2013-11-03 17:12:35 #include <iostream> #include <cstdlib> #include <ctime>
bool czyBylaWylosowana( int iLiczba, int tab[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( tab[ i ] == iLiczba ) return true; i++; } while( i < ile ); return false; }
int wylosuj() { return( rand() % 10 ) + 1; }
int main() { srand( time( 0 ) ); int wylosowane[ 5 ]; int wylosowanych = 0; do { int liczba = wylosuj(); if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false ) { wylosowane[ wylosowanych ] = liczba; wylosowanych++; } } while( wylosowanych < 5 ); wylosowanych = 0; do { std::cout << wylosowane[ wylosowanych ] << std::endl; wylosowanych++; } while( wylosowanych < 5 ); return 0; }
|
|
pekfos |
» 2013-11-03 17:16:45 |
|
« 1 » 2 |