Program nie działa - dlaczego?

Program nie działa - dlaczego?
flash44
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
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?

Kopiuj
#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);
               }
Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
2

Używam DEV-C++

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

  • Rejestracja: dni
  • Ostatnio: dni
0

Bo nie działa.

flash44
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
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...

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

A debugger już nie istnieje, co?

PoziomeQ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 133
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 :]

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
1

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

R9
  • Rejestracja: dni
  • Ostatnio: dni
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

  • Rejestracja: dni
  • Ostatnio: dni
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).

  • Rejestracja: dni
  • Ostatnio: dni
0

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

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.