Skocz do zawartości

[Free Pascal] Błąd: Incompatible Type for arg. no(...)


Quass1m

Polecane posty

Witam wszystkich.

 

Mam problem ze stworzeniem programu w pascalu który najpierw sprawdza czy liczba w danym zakresie jest liczbę pierwszą a następnie sumuje wszystkie jej cyfry. Wszystko działało poprawnie aż dodałem kod do zsumowania. Za każdym razem występuje błąd, bez względu na to jaki typ zmiennej wybiorę. Pracuję nad tym zadaniem w programie Free Pascal.

 

program pierwszy;

uses crt;

var liczba,liczba2,liczbadzielnikow,dzielnik,iloscliczb:integer;
var l1,l2,l3,l4:integer;

begin

liczbadzielnikow:=0;
iloscliczb:=0;
dzielnik:=1;

for liczba:=2 to 1000 do
 begin

   liczbadzielnikow:=0;

      for dzielnik:=1 to 1000 do

               begin
                       if (liczba mod dzielnik = 0) then liczbadzielnikow:=liczbadzielnikow+1;
               end;

      if liczbadzielnikow<3 then
               begin
                       l1:=copy(liczba, 1,1);
                       l2:=copy(liczba, 1,2);
                       l3:=copy(liczba, 1,3);
                       l4:=copy(liczba, 1,4);

                       liczba2:=l1+l2+l3+l4;

                       writeln(liczba2);
               end;

      if liczbadzielnikow<3 then iloscliczb:=iloscliczb+1;

  end;

Writeln('Jest ' ,iloscliczb, ' takich liczb');

readkey;

end.

 

Błąd:

 

zad5_ed12034105.pas(36,40) Error: Incompatible type for arg no. 1: Got "SmallInt", expected "ShortString"

zad5_ed12034105.pas(37,40) Error: Incompatible type for arg no. 1: Got "SmallInt", expected "ShortString"

zad5_ed12034105.pas(38,40) Error: Incompatible type for arg no. 1: Got "SmallInt", expected "ShortString"

zad5_ed12034105.pas(39,40) Error: Incompatible type for arg no. 1: Got "SmallInt", expected "ShortString"

zad5_ed12034105.pas(59) Fatal: There were 4 errors compiling module, stopping

zad5_ed12034105.pas(0) Fatal: Compilation aborted

 

 

Próbowałem już chyba wszystkich typów zmiennej (longint, integer, byte, char, real, string oraz tych które są podane w kodzie błędu. Proszę o poradę.

Link do komentarza
Udostępnij na innych stronach

l1:=copy(liczba, 1,1);
l2:=copy(liczba, 1,2);
l3:=copy(liczba, 1,3);
l4:=copy(liczba, 1,4);

 

Haha, dobre, naprawdę gratuluję pomysłowości :D

 

A tak na serio, to mniej czasu niż napisanie tego posta zajęłoby Ci sprawdzenie, do czego służy funkcja copy(), a jakbyś dobrze poszukał, to dowiedziałbyś się, że tej funkcji używa się dla stringów, nie dla intów. O ile oczywiście rozróżniasz te dwa typy, w co wątpię, patrząc na zamieszczony kod.

 

PS. Aż nie chcę pytać, w którym miejscu Ty "próbowałeś" tych wszystkich wymienionych typów, bo mógłbym się przerazić.

Etharnion - 2D RPG

Szukam grafika chętnego do współpracy przy projekcie.

Link do komentarza
Udostępnij na innych stronach

No tak, zapomniałem dodać że dopiero uczę się programowania ;/ Prosiłem jednak o poradę, a nie posty które nie wnoszą niczego nowego do tematu. Problem wciąż aktualny - jak mogę skutecznie skopiować cyfry z danej liczby?

Link do komentarza
Udostępnij na innych stronach

begin

                       l1:=copy(liczba, 1,1);
                       l2:=copy(liczba, 1,2);
                       l3:=copy(liczba, 1,3);
                       l4:=copy(liczba, 1,4);

                       liczba2:=l1+l2+l3+l4;

                       writeln(liczba2);

               end; Ś-(śn:j7hą+ŹzvąKbjh^(v(Ś2z<,ŹzZaY[][[XJJN[

 

i poczytaj o funkcji IntToStr która znajduje się w module SysUtils.

Tyle...

Prawdziwy programista wiesza sie wraz ze swoim programem.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...