Quass1m Napisano Marzec 4, 2011 Zgłoś Share Napisano Marzec 4, 2011 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 More sharing options...
Adam27 Napisano Marzec 4, 2011 Zgłoś Share Napisano Marzec 4, 2011 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 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 More sharing options...
Quass1m Napisano Marzec 4, 2011 Autor Zgłoś Share Napisano Marzec 4, 2011 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 More sharing options...
Adam27 Napisano Marzec 4, 2011 Zgłoś Share Napisano Marzec 4, 2011 Zamień liczbę na string. Etharnion - 2D RPG Szukam grafika chętnego do współpracy przy projekcie. Link do komentarza Udostępnij na innych stronach More sharing options...
DevPort Napisano Marzec 4, 2011 Zgłoś Share Napisano Marzec 4, 2011 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 More sharing options...
Quass1m Napisano Marzec 5, 2011 Autor Zgłoś Share Napisano Marzec 5, 2011 Wielkie dzięki. Teraz wszystko działa. Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.