Program który zamieni elementy tablicy
Ostatnio zmodyfikowano 2015-12-29 07:36
pawi125 Temat założony przez niniejszego użytkownika |
Program który zamieni elementy tablicy » 2015-12-25 18:44:07 Witam muszę stworzyć program który dla tablicy wypełnionej liczbami losowymi zamieni mi tą tablicę na inną tablicę z tymi samymi elementami w odwróconej kolejności. Oto mój kod który nie działa poprawnie... gdzie znajduję się błąd? int n; cout << "Podaj jak duza tablice stworzyc: "; cin >> n; int * tab = new int[ n ]; for( int i = 0; i < n; i++ ) { tab[ i ] = rand() % 100 + 1; } int * tabB = new int[ n ]; for( int j = n; j >= 0; j-- ) { tab[ j ] = tabB[ j ]; } for( int m = 0; m < n; m++ ) { cout << tab[ m ] << ", "; } cout << "Tablica 2" << endl; for( int p = 0; p < n; p++ ) { cout << tabB[ p ] << ", "; } delete[] tab; delete[] tabB; |
|
carlosmay |
» 2015-12-25 20:02:40 Po prostu pętla przepisuje dane z jednej tablicy do drugiej bez odwracania kolejności. Obsługuje obie tablice od końca (kolejność nie zmienia się). muszę stworzyć program który dla tablicy wypełnionej liczbami losowymi zamieni mi tą tablicę na inną tablicę z tymi samymi elementami w odwróconej kolejności. |
Trzeba użyć w pętli dwóch indeksów, dla jednej inkrementowanego od zera, a dla drugiej dekrementowanego od wartości n - 1 . Powodzenia. |
|
pawi125 Temat założony przez niniejszego użytkownika |
» 2015-12-25 20:23:03 błąd jest jeszcze taki że zamiast losować liczby z przedziału 1..100 to wpisuje n takich samych liczb którymi są -842150451... Jak to naprawić? |
|
mateczek |
» 2015-12-25 21:00:22 dodatkowa uwaga do posta carlosmay for( int j = n - 1; j >= 0; j-- ) { tab[ j ] = tabB[ j ]; }
|
|
carlosmay |
» 2015-12-25 22:03:27 błąd jest jeszcze taki że zamiast losować liczby z przedziału 1..100 to wpisuje n takich samych liczb którymi są -842150451... Jak to naprawić? |
Losowanie wartości i wpisanie ich do tablicy źródłowej jest OK. To jest prawdziwy problem: for( int j = n; j >= 0; j-- ) { tab[ j ] = tabB[ j ]; }
Taki przykład: const int n = 5; int tab[ n ]; for( int i = 0; i < n; i++ ) tab[ i ] = rand() % 100 + 1;
int rev[ n ] = { }; for( int & el: tab ) cout << el << " "; cout << endl; for( int & el: rev ) cout << el << " "; cout << endl;
cout << "wypisanie tablicy z odwrotna kolejnoscia: "; int i, j; for( i = 0, j = n - 1; i < n && j >= 0; i++, j-- ) rev[ j ] = tab[ i ];
for( int & el: rev ) cout << el << " "; cout << endl;
|
|
Lucas535 |
» 2015-12-29 07:36:24 #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int main() { srand( time( NULL ) ); cout << "Podaj wielkosc tablic: "; int size; cin >> size; int * tab = new int[ size ]; for( int i = 0; i < size; i++ ) tab[ i ] = rand() % 100 + 1; for( int i = 0; i < size; i++ ) cout << tab[ i ] << endl; int * odw = new int[ size ]; for( int i = size - 1, j = 0; i >= 0, j < size; i--, j++ ) odw[ j ] = tab[ i ]; for( int i = 0; i < size; i++ ) cout << odw[ i ] << endl; delete[] tab; delete[] odw; return 0; }
|
|
« 1 » |