Błąd w zapisach ułamkowych

0

Witam,

Mam problem z programem (liczby doskonałe):

PROGRAM LDOS;
 
VAR
 pom, i, j, zapis:integer;
 
BEGIN
	for i:=1 to 1000 do
	begin
		pom:=0;
		zapis:=i/2;
		for j:=0 to zapis do
		begin
			if i mod j = 0 then
				pom:=pom+j;
			
			if pom = i AND j = zapis then
			begin
				writeln(pom);
				break;
			end;
		end;
	end;
END.

To są błędy:

prog.pas(10,11) Error: Incompatible types: got "Extended" expected "SmallInt"
prog.pas(16,11) Error: Incompatible types: got "Boolean" expected "LongInt" 

Nie mam pojęcia czy należy zaimportować jakąs bibliotekę - błąd występuje przy przypisywaniu zapis:=i/2; oraz przy warunku if pom = i AND j = zapis then
Z góry informuję, że nie pisałem w Pascalu kupę czasu a teraz mam okazje zarobić na 'flachę' :)

2

AND ma duży priorytet

if (pom = i) AND (j = zapis) then
0

Dzięki za wskazówkę!! :)

A błąd z przypisywaniem zapis:=i/2; ? :)

1

zapis:=i div 2;

0

Powinienem się domyślić: divide, a że Pascal to język, w którym więcej pisze się słownie niż znakami, to reguła również dotyczy dzielenia :D

Poprawiłem i teraz to już kompletnie nie mam pojęcia o co chodzi:

Runtime error 200 at $0804812A
  $0804812A
  $08063793 

'Runtime error 200' to bodajze dzielenie przez 0 ale w programie nie ma prawa do takiego związku - dzielna to 2 a zadne 0.
Próbowałem konwersji typów, przy wcześniejszej zmianie typu zmiennej zapis z Integer na Real ale pojawia się ten sam błąd co wcześniej:
"prog.pas(12,15) Error: Incompatible types: got "Real" expected "SmallInt""

2

A czym wg ciebie jest mod ?
Powiedz jak obliczyć i mod 0 ?

0

No tak, źle przeniosłem z Javy. Miało być j:=1;
Przy poszukiwaniu dzielników nie można szukać 0 bo reguła tego zabrania, mój błąd w przepisaniu.

Działa pięknie! Dzięki wielkie :)

0
NieznajomyPytający napisał(a):

... Miało być j:=1;
Przy poszukiwaniu dzielników nie można szukać 0 bo reguła tego zabrania ...
Na pewno od 1?

0
NieznajomyPytający napisał(a)

Nie mam pojęcia czy należy zaimportować jakąs bibliotekę - błąd występuje przy przypisywaniu zapis:=i/2; oraz przy warunku if pom = i AND j = zapis then

Ehh Wy Javowcy - wszystko byście tylko importowali... A tu jedyne co trzeba było zaimportować to magiczny komponent TBrain, który pozwoliłby na zrozumienie komunikatów błędów;

Spróbuj czasem pobawić się debugerem, a konkretniej oknem Watches, w którym podglądniesz wartości zmiennych; No i debuguj linia po linii patrząc na wartości zmiennych, a bez problemu znajdziesz przyczynę błędów; I czytaj komunikaty, bo one wszystko mówią o problemach.

0

Dzięki za info, ale Pascal mnie mocno odstrasza i dlatego też mało w nim pisałem - napisałem to głównie (i pare innych programow, gdzie tam, co dziwne, wszystko ładnie działało bez Waszej ingerencji) dla koleżanki na zaliczenie ;)
Ale jakbym miał kiedyś znów pisać to pokombinuje z tym debuggerem - bardzo się przyda

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