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

Odwracanie tablicy

Ostatnio zmodyfikowano 2015-11-24 20:37
Autor Wiadomość
programATOR1
Temat założony przez niniejszego użytkownika
Odwracanie tablicy
» 2015-11-24 18:37:54
Witam, mam problem ze zrobieniem zadania z odwracaniem tablicy, której ostatni element to -1 i nie znam jej długości, udało mi się napisać coś takiego:

C/C++
#include<iostream>
using namespace std;
int main()
{
    ios_base::sync_with_stdio( false );
    int n, i = 1, m, h;
    int tab[ 21000 ];
    cin >> tab[ i ];
    n = tab[ i ];
    while( n != - 1 )
    {
        n = tab[ i + 1 ];
        m = i;
        cin >> n;
        i++;
    }
    for( int j = i - 1; j > 0; j-- )
    {
        h = tab[ j ];
        cout << h << " ";
    }
}


Program wypisuje tylko ostatnią liczbę, którą powinien, a wcześniej wypisuje same 0 ( w odpowiedniej ilości, czyli tyle 0 ile liczb powinien wypisać). Proszę o pomoc, ponieważ kompletnie nie mam pomysłu jak naprawić ten program, domyślam się, że jest coś nie tak w tym pierwszym while'u, ale nie mam pojęcia co jest zle.
P-140712
carlosmay
» 2015-11-24 19:02:40
Wstaw kod w znaczniki, widzisz co się dzieje. Informacja w zakładaniu tematów.

edit:
Tak sprawdź długość tablicy:
C/C++
int tab[ 21000 ];
int rozmiar = sizeof( tab ) / sizeof( int );
P-140715
carlosmay
» 2015-11-24 19:15:24
A jak chcesz liczyć na piechotę to tak:
C/C++
int i = 0; // tablica ma indeksy od 0
tab[ 20999 ] = - 1; // ostatni to -1
n = tab[ i ]; // n = pierwszy element
while( n != - 1 )
{
    n = tab[ i++ ]; // przypisz kolejne elementy do n i sprawdzaj w warunku czy nie -1
}
cout << i << endl; // wypisz liczbe elementow
 
P-140716
michal11
» 2015-11-24 19:21:24
Albo jeszcze krócej :
while( tab[ i++ ] != - 1 );
P-140719
programATOR1
Temat założony przez niniejszego użytkownika
» 2015-11-24 19:27:56
Program dalej nie działa :/ może nie do końca jasno się wyraziłem, że tablica może maksymalnie zawierać 21000 liczb, ale może równie dobrze zawierać 3 liczby i mam wypisać nie ich ilość, ale w odwróconej kolejności te liczby z wyjątkiem liczby ostatniej ( czyli -1), np. jak wpisuję liczby po kolei do konsoli: 4, 8, 41563, -1;

to ma wypisać : 41563, 8, 4
P-140726
michal11
» 2015-11-24 19:30:05
Jak masz wyliczoną długość to wypisanie tablicy od tylu nie jest żadnym problemem, wystarczy dobrze skonstruowany for.
P-140727
carlosmay
» 2015-11-24 19:31:35
Żeby wypisać od końca musisz liczyć na piechotę, ale musisz wyliczyć ile jest elementów od początku do wartości -1.
Wyznaczasz tak ile jest elementów  i tyle elementów tej tablicy odwracasz.
P-140729
programATOR1
Temat założony przez niniejszego użytkownika
» 2015-11-24 19:36:29
No to coś takiego zrobiłem w tym moim programie i on wypisywał dobrą ilość elementów ( czyli długość była dobra), ale zamiast liczb wpisanych w pierwszym while'u wypisywał 0


Długością tablicy w moim while'u była zmienna m jakby co, a z tych porad nie mogę inaczej określić długości tablicy, bo jak dam tab[20999]= -1, to muszę wpisać 21000 liczb w konsoli
P-140731
« 1 » 2
  Strona 1 z 2 Następna strona