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

Program który zamieni elementy tablicy

Ostatnio zmodyfikowano 2015-12-29 07:36
Autor Wiadomość
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?
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
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.
P-142355
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ć?
P-142356
mateczek
» 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
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:
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
Lucas535
» 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