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 » |