Problem z losowanie c++
Ostatnio zmodyfikowano 2019-11-14 19:53
roku121 Temat założony przez niniejszego użytkownika |
Problem z losowanie c++ » 2019-11-13 18:26:45 Cześć, Mam problem, program losuje mi taką ilość liczb jaką wpiszę ale losuje jedną i wypisuje ją tyle razy ile podam. Ja chcę by jak wpiszę 5, losowało 5 różnych liczb z zakresu 1-99. #include <iostream> #include <vector> #include <queue> #include <list> #include <stack> #include <iomanip>
using namespace std;
int ilosc, i, j;
void zapytanie() { cout << "Podaj ilosc:" << endl; cin >> ilosc; }
void losowanie() { int * tab = new int[ ilosc ]; srand(( unsigned ) time( NULL ) ); for( i = 0; i < ilosc; i++ ) tab[ ilosc ] = rand() % 100; for( i = 0; i < ilosc; i++ ) cout << setw( 4 ) << tab[ ilosc ]; cout << endl; }
int main() { zapytanie(); losowanie(); }
|
|
nanoant20 |
» 2019-11-13 19:15:42 |
|
roku121 Temat założony przez niniejszego użytkownika |
Pomoc w sortowaniu » 2019-11-13 19:59:32 Dzięki twojej pomocy poradziłem sobie z sortowanie (tak myślę :D) Muszę teraz posortować wylosowane liczby metodą wybierania, w następujący sposób: Input 43 41 41 1 56 97 55 41 ---------------- 41 43| 41 1 56 97 55 41 41 41 43| 1 56 97 55 41 41 41 1 43| 56 97 55 41 41 41 1 43 56| 97 55 41 41 41 1 43 56 97| 55 41 41 41 1 43 56 55 97| 41 41 41 1 43 56 55 41 97| ---------------- Result 41 41 1 43 56 55 41 97 Czy mógłbyś mi pomóc? Albo naprowadzić jak się za to zabrać? #include <iostream> #include <vector> #include <iomanip>
using namespace std;
int ilosc;
void zapytanie() { cout << "Podaj ilosc:" << endl; cin >> ilosc; }
void losowanie() { srand( time( NULL ) ); int tab[ 100 ]; for( int i = 0; i < ilosc; i++ ) { tab[ i ] = rand() % 100; for( int j = 0; j < i; j++ ) { while( tab[ j ] == tab[ i ] ) { tab[ i ] = rand() % 100; } } } for( int i = 0; i < ilosc; i++ ) { cout << setw( 4 ) << tab[ i ]; } }
int main() { zapytanie(); losowanie(); }
|
|
nanoant20 |
» 2019-11-13 20:16:11 |
|
roku121 Temat założony przez niniejszego użytkownika |
» 2019-11-13 20:26:36 Nie potrafię tego zastosować do liczb wylosowanych w funkcji "losowanie". Pomożesz? |
|
nanoant20 |
» 2019-11-13 21:05:43 //EDIT poprawiłem Twój program, void losowanie() { int * tab = new int[ ilosc ]; srand(( unsigned ) time( NULL ) ); for( int i = 0; i < ilosc; ) { tab[ i ] = rand() % 99 + 1; bool bPowtarzaSie = false; for( int k = 0; k < i; ++k ) { if( tab[ k ] == tab[ i ] ) { bPowtarzaSie = true; break; } } if( !bPowtarzaSie ) ++i; } for( int i = 0; i < ilosc; i++ ) { cout << setw( 4 ) << tab[ i ]; } cout << endl; for( int i = 0; i < ilosc; i++ ) { int k = i; for( int j = i + 1; j < ilosc; j++ ) if( tab[ j ] < tab[ k ] ) k = j; swap( tab[ k ], tab[ i ] ); } for( int i = 0; i < ilosc; i++ ) { cout << setw( 4 ) << tab[ i ]; } delete[] tab; }
|
|
roku121 Temat założony przez niniejszego użytkownika |
» 2019-11-14 19:53:34 Super dziękuję, już zaczynam to rozumieć. Ale mam jeszcze problem, potrzebuję żeby zostały wypisane kolejne kroki sortowania np. Input 43 41 41 1 56 97 55 41 ---------------- 41 43 | 41 1 56 97 55 41 41 41 43 | 1 56 97 55 41 41 41 1 43 | 56 97 55 41 41 41 1 43 56 | 97 55 41 41 41 1 43 56 97 | 55 41 41 41 1 43 56 55 97 | 41 41 41 1 43 56 55 41 97 | ---------------- Result 41 41 1 43 56 55 41 97
Którą tablicę i w którym miejscu powinienem wypisać? Oki, poradziłem sobie, zrobiłem coś takiego:
#include <iostream> #include <vector> #include <iomanip>
using namespace std;
int ilosc;
void zapytanie() { cout << "Ilosc cyfr do wylosowania:" << endl; cin >> ilosc; cout << "\n"; }
void losowanie() { int * tab = new int[ ilosc ]; srand(( unsigned ) time( NULL ) ); for( int i = 0; i < ilosc; ) { tab[ i ] = rand() % 99 + 1; bool bPowtarzaSie = false; for( int k = 0; k < i; ++k ) { if( tab[ k ] == tab[ i ] ) { bPowtarzaSie = true; break; } } if( !bPowtarzaSie ) ++i; } cout << "Wylosowany zestaw cyfr: \n"; for( int i = 0; i < ilosc; i++ ) { cout << setw( 4 ) << tab[ i ]; } cout << endl; cout << "\n"; cout << "Pośrednie kroki sortowania:" << endl; for( int i = 0; i < ilosc; i++ ) { int k = i; for( int j = i + 1; j < ilosc; j++ ) if( tab[ j ] < tab[ k ] ) k = j; swap( tab[ k ], tab[ i ] ); for( int i = 0; i < ilosc; i++ ) { cout << setw( 4 ) << tab[ i ]; } cout << "\n"; } cout << "\n"; cout << "Posortowany zestw cyfr:" << endl; for( int i = 0; i < ilosc; i++ ) { cout << setw( 4 ) << tab[ i ]; } delete[] tab; }
int main() { zapytanie(); losowanie(); }
|
|
« 1 » |