Program nie działa - dlaczego?

2011-10-20 16:13
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);
               }
edytowany 2x, ostatnio: madmike, 2011-10-20 19:25
'książka Kernighana "Język ANSI C"' = K&R, right? - Kwpolska 2011-10-22 11:53

Pozostało 580 znaków

2011-10-20 16:20
0

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

Pozostało 580 znaków

2011-10-20 16:23
2

Używam DEV-C++

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


Pozostało 580 znaków

2011-10-20 16:57
ffff
0

Bo nie działa.

a właśnie że działa. będziemy się licytować? - Azarien 2011-10-20 17:48
to chyba zależy jak zdefiniujesz 'działa', bo dla każdego może to oznaczać co innego - piternet 2011-10-20 18:20
kompiluje się, uruchamia, robi to co twórcy planowali. wszystkie te warunki są spełnione; masz jakąś inną definicję „działa”? - Azarien 2011-10-20 18:54
To jest najlepsza definicja działa: http://pl.wikipedia.org/wiki/Dzia%C5%82o - somekind 2011-10-22 15:09

Pozostało 580 znaków

2011-10-22 09:29
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...

Pozostało 580 znaków

2011-10-22 09:33
0

A debugger już nie istnieje, co?


Pozostało 580 znaków

2011-10-22 10:24
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 :]

edytowany 3x, ostatnio: PoziomeQ, 2011-10-22 11:11
Skąd pomysł na używanie system(&quot;pause&quot;)? - somekind 2011-10-22 15:08
a co jest w tym złego? kiedy zaczynałem programowanie (w dev-c++) zawsze tego używałem - PoziomeQ 2011-10-22 17:58
To, że jakieś chujowe pseudo IDE wstawia gównianą, nieprzenośną i na dodatek wywołującą systemowe polecenie instrukcję, to jeszcze nie powód, aby ten błąd powtarzać i nakłaniać do niego innych. - somekind 2011-10-22 21:13
spokojnie :) to nie moja wina że ktoś mnie tak nauczył, teraz już i tak mnie to nie obchodzi za bardzo, ponieważ programuje w qt, gdzie taka instrukcja nie jest wymagana ale dzięki za podpowiedź, postaram się nie przekazywać tego błędu nigdy więcej :) - PoziomeQ 2011-10-22 22:54

Pozostało 580 znaków

2011-10-22 11:35
1

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


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2011-10-22 13:31
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

Pozostało 580 znaków

2011-10-23 22:40
flash44
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).

CTRL+Z to znacznik końca pliku? oO - aurel 2011-10-24 12:15
@aurel: w windowsie owszem. src: en-wiki/Control-Z. - Kwpolska 2011-10-24 17:54
Tak, jak się pisze w konsoli to na koniec trzeba Ctrl+Z :D - xeo545x39 2011-10-25 16:40

Pozostało 580 znaków

2011-10-25 16:25
cin
0

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

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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