[Pascal] Liczenie znaków

lutnia
Użytkownik
Użytkownik
Posty: 33
Rejestracja: 6 lis 2011, o 11:35
Płeć: Kobieta
Lokalizacja: Szczecin
Podziękował: 3 razy

[Pascal] Liczenie znaków

Post autor: lutnia »

Nie wykazuje błędów, ale liczba spacji cały czas wynosi 0, dlaczego? Proszę o pomoc.

Kod: Zaznacz cały

program licz_znaki;
uses Crt;
var liczba_sp, i, dlugosc: integer;
     tekst: string;
procedure zliczaj(var licznik: integer);
     begin
          licznik:=licznik+1;
     end;
BEGIN
    ClrScr;
    liczba_sp:=0;
    writeln('wpisz tekst: ');
    readln(tekst);
    dlugosc:=length(tekst);
    for i:=dlugosc downto 1 do if tekst[i]=' ' then zliczaj(liczba_sp);
    writeln('liczba spacji wynosi: ',licznik);
    readln;
END.
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[Pascal] Liczenie znaków

Post autor: wawek91 »

Nie wiem jak to jest w pascalu bo odstawiłem ten język od samego początku, ale np w c czy c++ to by nie przeszło ponieważ argument funkcji przekazujesz przez wartosc tzn: dajesz obiekt integer o wartosci 0 w funkcji cos tam sobie robisz ale na KOPII tego obiektu a nastepnie zwracasz znowu obiekt ten ktory dalas czyli integer o wartosci 0. Przekaz ten obiekt przez wskaznik wtedy powinno zadzialac.
lutnia
Użytkownik
Użytkownik
Posty: 33
Rejestracja: 6 lis 2011, o 11:35
Płeć: Kobieta
Lokalizacja: Szczecin
Podziękował: 3 razy

[Pascal] Liczenie znaków

Post autor: lutnia »

Też tak pomyślałam, ale jak zmieniłam tą linijką i wpisałam:

Kod: Zaznacz cały

liczba_sp:-1;
to dalej wypisywał zero.-- 11 gru 2011, o 21:13 --Już wiem, dzięki za chęci:)
adambak
Użytkownik
Użytkownik
Posty: 1272
Rejestracja: 8 sty 2011, o 18:18
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 295 razy
Pomógł: 115 razy

[Pascal] Liczenie znaków

Post autor: adambak »

wawek91, własnie teraz jest dobrze przesyłane bo za pomocą var, a to tak jakby referencja w C++..

lutnia, po prostu nie tej zmiennej wartość wypisujesz (nie wiem czemu Ci się kompilowało), teraz dobrze:

Kod: Zaznacz cały

program licz_znaki;
var liczba_sp, i, dlugosc: integer;
     tekst: string;
procedure zliczaj(var licznik: integer);
     begin
          licznik:=licznik+1;
     end;
BEGIN
    liczba_sp:=0;
    writeln('wpisz tekst: ');
    readln(tekst);
    dlugosc:=length(tekst);
    for i:=dlugosc downto 1 do if tekst[i]=' ' then zliczaj(liczba_sp);
    writeln('liczba spacji wynosi: ',liczba_sp);
    readln;
END.
ODPOWIEDZ