Program nie działa - dlaczego?

1

Niżej jest kod programu - jest to przykład z książki Kernighana "Język ANSI C"
Używam DEV-C++ i Windows7.
Ten program kompiluje się poprawnie, ale nie chce działać. Czy ktoś mi może pomóc?

#include <stdio.h>
 
//zliczanie cyfr, znakow bialych i innych znakow
main()
{
      int c, i, nwhite, nother;
      int ndigit[10];
      nwhite = nother = 0;
      for (i = 0; i < 10; i++)
      ndigit[i] = 0;
      while ((c = getchar()) != EOF)
      if  (c >= '0' && c <= '9')
           ++ndigit[c-'0'];
      else if (c == ' ' || c == '\n' || c == '\t')
           ++nwhite;
      else
          ++nother;
      printf("digits =");
      for (i=0; i < 10; i++)
          printf(" %d", ndigit[i]);
      printf(", white space = %d, other = %d\n",
               nwhite, nother);
               }
0

program działa poprawnie, co to znaczy „nie chce działać”?

2

Używam DEV-C++

Zacząłbym od zmiany środowiska na cokolwiek lepszego...

0

Bo nie działa.

0

Kompiluje się, potem okienko się zamyka:(
Może przez ułamek sekundy pojawia się "digits="...
Zmieniłem IDE na "Code Blocks" i nadal jest tak samo...

0

A debugger już nie istnieje, co?

0

komenda:
system("pause");
albo:
getch();

jest?
jak nie to się nie dziwię że program zamyka się po ułamku sekundy, dodaj jedną z tych komend na końcu programu i zobacz efekt :]

1

Najlepiej to wejdź do konsoli i odpal to z konsoli, zamiast klikać z przerażenia.

0

12321digits = 0 2 2 1 0 0 0 0 0 0, white space = 0, other = 0
Program działa. Oczywiście trzeba użyć CTRL+D do zakończenia wejścia.

Code::Blocks domyślnie zatrzymuje okienko konsoli z outputem programu i wyświetla czas wykonywania. Na pewno uruchomiłeś przez IDE, a nie przez przeglądarkę? poza tym programy konsolowe jak sama nazwa wskazuje powinno się w konsoli uruchamiać.x

0

Dodanie getch(); lub system("pause"); zgłasza kolejne błędy.
Pomogło za to przejście do konsoli ("cmd") i zakończenie CTRL+Z (znajomy infomatyk oświecił mnie mówiąc, że jest to znacznik końca pliku).

0

Najlepiej dać na końcu cin.get(); a nie jakieś systemy pauzy duperele :]

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