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

[c++] n-elementowa tablica i losowanie wartości.

Ostatnio zmodyfikowano 2012-11-14 15:20
Autor Wiadomość
aimq
Temat założony przez niniejszego użytkownika
[c++] n-elementowa tablica i losowanie wartości.
» 2012-11-11 16:54:18
mam problem z czymś takim:

Napisz program definiujący N-elementową tablicę liczb całkowitych a następnie inicjujący jej zawartość losowymi liczbami z przedziału od 30 do 50.

Nie wiem jak zrobić aby z programu wczytać ile elementów ma mieć tablica.

mam cos takiego:

C/C++
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;

int main() {
   
    int random;
    int liczba[ 10 ];
    int licznik = 0;
    srand( time( NULL ) );
    do {
        random = rand() % 21 + 30;
        liczba[ licznik ] = random;
        cout << liczba[ licznik ] << endl;
        licznik++;
    } while( licznik < 10 );
   
   
    system( "pause" );
}

próbowałe tak:
C/C++
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;

int main() {
   
    int random;
    int n;
    cin >> n;
    int liczba[ n ];
    int licznik = 0;
    srand( time( NULL ) );
    do {
        random = rand() % 21 + 30;
        liczba[ licznik ] = random;
        cout << liczba[ licznik ] << endl;
        licznik++;
    } while( licznik < n );
   
   
    system( "pause" );
}
ale to nie działa.
P-69002
crash
» 2012-11-12 18:20:20
C/C++
int n;
cin >> n;
int liczba[ n ];

Pazomnij. Poczytaj o dynamicznym przydzielaniu pamięci, powyżej używasz nieprawidłowo statycznego.
P-69046
aimq
Temat założony przez niniejszego użytkownika
» 2012-11-14 13:10:30
tamten problem już rozwiązałem, teraz nie umiem posortować tablicy dwuwymiarowej, sortuje tylko pierwszy wiersz - nie umiem tego  
poprawić. Kod
C/C++
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <cstdio>
#include <algorithm>
using namespace std;
#define N 5
int main() {
   
    int random;
    int T[ N ][ N ];
    srand( time( NULL ) );
    for( int i = 0; i < N; i++ ) {
        for( int j = 0; j < N; j++ ) {
            random = rand() % 100;
            T[ i ][ j ] = random;
            cout << T[ i ][ j ] << "\t"; }
        cout << endl; }
   
    int n = N;
    for( int i = 0; i < N; i++ ) {
        do {
            for( int j = 0; j < n - 1; j++ ) { // sortowanie babelkowe
                if( T[ i ][ j ] > T[ i ][ j + 1 ] ) {
                    swap( T[ i ][ j ], T[ i ][ j + 1 ] ); }
            }
            n = n - 1;
        } while( n > 1 );
       
    }
   
    cout << endl;
    for( int i = 0; i < N; i++ ) {
        for( int j = 0; j < N; j++ ) {
            cout << T[ i ][ j ] << "\t"; }
        cout << endl; }
    system( "pause" );
    return 0;
}
P-69225
crash
» 2012-11-14 13:46:06
A jak chcesz posorcić te dane? w każdym wierszu rosnąco, ale początkowe wartości każdego wiersza nieposortowane względem siebie, czy może tak, że tab[0,0] to najmniejsza wartość, a tab[n,n] to max?
P-69226
aimq
Temat założony przez niniejszego użytkownika
» 2012-11-14 14:35:44
wyżej była próba posortowania każdego wiersza osobno - rosnąco.
jak juz to bede mial mozna pomyslec nad innymi sortowaniami.
P-69231
aimq
Temat założony przez niniejszego użytkownika
» 2012-11-14 15:10:36
wymyśliłem, gdy n kończyło mi petlę dla pioerwzego wiersza sprawiało że petla sortujaca nie zaczynala sie dla kolejnych wierszy,
wystarczyło dodać na koniec n=N;
C/C++
int n = N;

for( int i = 0; i < N; i++ ) {
    do {
        for( int j = 0; j < n - 1; j++ ) {
            if( T[ i ][ j ] > T[ i ][ j + 1 ] ) {
                swap( T[ i ][ j ], T[ i ][ j + 1 ] ); }
        }
        n = n - 1;
       
    } while( n > 1 );
   
    n = N;
}
pozniej pomysle nad drugim sortowaniem i jak bede mial problem napisze tutaj.
P-69235
crash
» 2012-11-14 15:17:59
C/C++
for( int i = 0; i < N; i++ ) //dla kazdego wiersza
for( int a = 0; a < N; ++a ) //sortowanie wewnątrz wiersza
for( int b = a; b < N; ++b )
if( T[ i ][ b ] > T[ i ][ a ] )
     swap( T[ i ][ b ], T[ i ][ a ] );


ups formatowanie się popsuło się

Żeby teraz wiersze posortować, trzeba tylko początkowe elementy wierszy porównywać. W razie porównania, pętla for swapująca kolejne elementy dwóch porównanych wierszy.

edit2: Po co Ci tyle klamerków ;p
P-69237
flrone
» 2012-11-14 15:20:17
Poczytaj o sortowaniu bąbelkowym, ja jestem w klasie informatycznej i trzeci rok już nie mogę zapamietać jak się sortuje i zawsze patrze do zeszytu :P pzdr.
P-69238
« 1 »
  Strona 1 z 1