Stos problem z programem

0

Cześć, mam problem z programem. Trzeba w nim zaimplementować tablice 10 elementową. I dalej już procedury tak jak do stosu, czyli jeśli wartość jest dodatnia to umieszczamy ją na stosie, jeśli równa 0 to pobieramy ze stosu, a jeśli przepełnienie lub niedomiar to zwraca nam 0. Problemem jest wyjście programu, mianowicie
powinno ono wyglądać tak:
1
2
3
4
0
5
6
7
8
0
0
9
10
11
12
13
14
15
0
0
0
0
0
0

A wygląda tak:
4
8
7
0
0
0
12
11
10

Na ten moment wygląda program tak:
Czy ktoś jest w stanie wychwycić tutaj błąd?

#include <stdio.h>

int pop(int tab[10], int przep)
{
    if (przep == 0)
        return tab[przep] = 0;
    else
        return tab[przep + 1];
}

int push(int tab[10], int element, int przep)
{

    if (przep > 9)
        return tab[przep] = 0;
    else
    {
        tab[przep] = element;
    }
}

int main(void)
{
    int tab[10], element, przep = 0, b;

    while (scanf("%i", &element) != EOF)
    // printf("%i\n",element);
    {
        if (element > 0)
        {
            przep = przep + 1;
            push(tab, element, przep);
        }
        else
        {
            przep = przep - 1;
            printf("%i\n", pop(tab, przep));
        }
    }

    return 0;
}
1

Pokaż osobno wejście i wyjście, nie każdemu chce się zgadywać.

0
xyz85 napisał(a):
    if (przep > 9)
        return tab[przep] = 0;

Jeśli tablica ma rozmiar 10 elementów, to tutaj wykraczasz poza jej rozmiar - undefined behaviour.

xyz85 napisał(a):
    while (scanf("%i", &element) != EOF)

scanf zwraca liczbę poprawnie odczytanych wartości, więc porównanie do EOF jest bez sensu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1