Wypisywanie losowych liczb do tablicy.
Ostatnio zmodyfikowano 2015-11-22 15:29
zabsontoziomal Temat założony przez niniejszego użytkownika |
Wypisywanie losowych liczb do tablicy. » 2015-11-22 13:43:49 Witam, mam problem otóż. Chcę wylosować n liczb rzeczywistych, co potrafię (gdy dam cout << liczba << endl; to je wypisuje) przypisać je do tabeli (i tutaj chyba robie coś źlę) a potem wypisać je posortowane. kod: http://pastebin.com/bKWtz5dv Co trzeba poprawić? |
|
czosnek17 |
» 2015-11-22 14:01:38 Stworzyłeś wskaźnik na tablicę, ale nie robisz tablicy. Użyj operatora new. Kod wstawiaj na forum w [cpp][/cpp] |
|
zabsontoziomal Temat założony przez niniejszego użytkownika |
» 2015-11-22 14:08:16 Ok. Dodałem w main tab = new int [n], ale i tak to nic nie zmienia. Wyświetlają się liczby 'z dupy'. |
|
carlosmay |
» 2015-11-22 14:12:25 W złym miejscu zadeklarowałeś tablicę. |
|
zabsontoziomal Temat założony przez niniejszego użytkownika |
» 2015-11-22 14:19:23 #include <iostream> #include <stdio.h> #include <unistd.h> #include <cstdlib>
using namespace std;
void sort( int * tab, int n ) { int mn = tab[ 0 ], mn_index = 0; for( int i = 0; i < n - 1; i++ ) { for( int j = i + 1; j < n; j++ ) if( tab[ j ] < tab[ mn_index ] ) mn_index = j; int pom = tab[ i ]; tab[ i ] = tab[ mn_index ]; tab[ mn_index ] = pom; mn = tab[ i + 1 ]; mn_index = i + 1; } }
int main() { double liczba; int n; cout << "Ile chcesz wygenerowac losowych liczb rzeczywistych?" << endl; cin >> n; int * tab; tab = new int[ n ]; srand( time( NULL ) ); for( int i = 0; i < n; i++ ) { liczba = 1 +( n - 1 ) * rand() /(( double ) RAND_MAX ); tab[ i ] = liczba; } sort( tab, n ); for( int i = 0; i < n; i++ ) cout << tab[ i ] << endl; cin.sync(); cin.get(); return 0; }
To gdzie powinienem zadeklarować? |
|
carlosmay |
» 2015-11-22 14:26:58 To gdzie powinienem zadeklarować? |
jest OK. |
|
zabsontoziomal Temat założony przez niniejszego użytkownika |
» 2015-11-22 14:33:16 Niestety, nie działa. Po skompilowaniu znowu zamiast liczb rzeczywistych posortowanych wywala mi same 0 a potem 1. Jakiś pomysł czemu tak jest? |
|
carlosmay |
» 2015-11-22 14:42:57 #include <random> #include <iostream> #include <iomanip>
using namespace std;
int main() { random_device rd; mt19937 gen( rd() ); uniform_real_distribution < double > dist( 1, 250 ); for( int i = 0; i < 10; ++i ) cout << fixed << setprecision( 2 ) << dist( gen ) << " "; cout << endl; system( "pause" ); return EXIT_SUCCESS; }
skorzystaj z tego do losowania liczb rzeczywistych. wywala mi same 0 a potem 1. |
pewnie takie były wyniki losowania (są posortowane, na końcu jest 1). |
|
« 1 » 2 |