Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wypisywanie losowych liczb do tablicy.

Ostatnio zmodyfikowano 2015-11-22 15:29
Autor Wiadomość
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ć?
P-140551
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]
P-140553
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'.
P-140554
carlosmay
» 2015-11-22 14:12:25
W złym miejscu zadeklarowałeś tablicę.
P-140556
zabsontoziomal
Temat założony przez niniejszego użytkownika
» 2015-11-22 14:19:23
C/C++
#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ć?

P-140557
carlosmay
» 2015-11-22 14:26:58
To gdzie powinienem zadeklarować? 
 jest OK.
C/C++
#include <unistd.h> // --> #include <ctime>
 
P-140560
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?
P-140564
carlosmay
» 2015-11-22 14:42:57
C/C++
#include <random>
#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    random_device rd;
    mt19937 gen( rd() ); // inicjowanie gen seed'em z random_device
    uniform_real_distribution < double > dist( 1, 250 ); // ustawienie dystansu
   
    for( int i = 0; i < 10; ++i )
         cout << fixed << setprecision( 2 ) << dist( gen ) << " "; // uzycie generatora z zakresem liczb
   
    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).
P-140567
« 1 » 2
  Strona 1 z 2 Następna strona