Przekroczono limit czasu

0

Jaka może być przyczyna przekroczonego limitu czasu na spoju?
I co można zmienić?

#include <stdio.h>
 
int main() {
   
    int licznik=0;
    int n=11;
    int S[n];
    int liczba;
   
    while(1) {
       
        scanf("%d" , &liczba);
       
        if(liczba>0) {
           
            if(licznik<10 && licznik>=0) {
               
                S[licznik]=liczba;
                licznik=licznik+1;
            }
           
            else {
               
                printf("0\n");
            }
        }
       
        else {
           
            if(licznik>0) {
               
                printf("%d\n" , S[licznik-1]);
                licznik=licznik-1;
            }
           
            else {
               
                printf("0\n");
            }
        }
    }
    return 0;
}
0

Trzeba napisać program, który wczytuje liczby (nie wiadomo ile ich będzie). Jeżeli wartość jest dodatnia, to zostaje umieszczona na stosie, jeżeli wartość jest równa zerze to program powinien pobrać ze stosu liczbę na górze stosu i wypisać ją na wyjściu

0

nie wiadomo ile ich będzie
(...)

int n=11;

hmmm

2

Masz pętlę while 1 I nigdy z niej nie wychodzisz...

0
Shalom napisał(a):

Masz pętlę while 1 I nigdy z niej nie wychodzisz...

chciałam dać while(scanf("%d", &liczba)) {
//program
}

ale też przekroczono

0
while (scanf("%d", &liczba) == 1) {
  /* ... */
}

Z ciekawości: dlaczego uważasz, że Twój wariant (bez == 1) powinien działać?

0

A co jak stos się przepełni?

0

Systemy typu online judge najczęściej oczekują, żeby program zakończył działanie, gdy wystąpi koniec wejścia standardowego (w Windows wciśnięcie Ctrl + Z, gdy kursor jest na początku wiersza, a następnie Enter, w innych systemach Ctrl + D), o czym przeważnie nie ma w treści zadania żadnej informacji.

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