Przekroczono limit czasu

Przekroczono limit czasu
LO
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 5 lat
  • Postów:4
0

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

Kopiuj
#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;
}
szweszwe
No ja bym napisał o jakie zadanie w ogóle chodzi.
LO
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 5 lat
  • Postów:4
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

lion137
Daj link do zadania
Patryk27
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

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

Kopiuj
int n=11;

hmmm


edytowany 3x, ostatnio: Patryk27
LO
stos należy zaimplementować w tablicy 10 elementowej
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
2

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
LO
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 5 lat
  • Postów:4
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

Patryk27
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0
Kopiuj
while (scanf("%d", &liczba) == 1) {
  /* ... */
}

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


edytowany 3x, ostatnio: Patryk27
lion137
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
  • Postów:4946
0

A co jak stos się przepełni?


VA
  • Rejestracja:ponad 5 lat
  • Ostatnio:około miesiąc
  • Postów:60
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.

edytowany 2x, ostatnio: valdemar
enedil
Nie masz racji. Wyraźnie jest napisane, kiedy jest koniec danych.
Grzegorz Świdwa
Grzegorz Świdwa
"w Windows wciśnięcie Ctrl + Z, gdy kursor jest na początku wiersza, a następnie Enter, w innych systemach Ctrl + D" - pytanie, które nurtuje mnie od kilku lat. Aż dziwne, że odpowiedź przeczytałem przypadkowo ;)
enedil
@Patryk27: w znaczeniu, w takich wypadkach jest napisane, że trzeba przetworzyć te dane, które są na wejściu. Skoro kończy się wejście, to znaczy że nic dalej nie będzie.
enedil
Tzn, ogólnie zgadzam się z sentymentem tego posta.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.