Program który zamieni elementy tablicy
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Program który zamieni elementy tablicy

AutorWiadomość
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?
C/C++
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;
P-142352
» 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.
P-142355
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ć?
P-142356
» 2015-12-25 21:00:22
dodatkowa uwaga do posta carlosmay
C/C++
for( int j = n - 1; j >= 0; j-- ) //przekroczony zakres tu miałeś !!!
{
    tab[ j ] = tabB[ j ];
}

P-142358
» 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:
C/C++
for( int j = n; j >= 0; j-- ) // uwaga uzytkowniaka mateczek, do warunku nalezy dodac jeszcze drugi indeks
{
    tab[ j ] = tabB[ j ]; // nadpisujesz tablice zrodlowa pusta tablica
}

Taki przykład:
C/C++
const int n = 5;
int tab[ n ];
for( int i = 0; i < n; i++ ) // wypelnienie tablicy losowymi liczbami
     tab[ i ] = rand() % 100 + 1;

int rev[ n ] = { }; // definicja tablicy (elem = 0)
for( int & el: tab ) cout << el << " "; cout << endl; // kontrolne wypisanie tablic
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 ]; // akcja przepisania tablic odwracajac kolejnosc w tablicy wynikowej

for( int & el: rev ) cout << el << " "; cout << endl;
P-142360
» 2015-12-29 07:36:24
C/C++
#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;
}
P-142521
« 1 »
 Strona 1 z 1