allora, ecco a cosa sn arrivato: con i pari funziona, ma coi dispari sn nei problemi:
codice:
program CICLO;
uses
crt; {Richiamo la unit CRT}
var
NUMERO, R, R2: integer;
RISPOSTA: string;
procedure procedura_pari; {questo funziona bene...}
begin
while (NUMERO <> 1) do
begin
NUMERO := NUMERO div 2;
writeln (NUMERO);
end;
writeln ('------------------------------');
writeln ('FINITO!!');
end;
procedure procedura_dispari;
begin
while (NUMERO <> 1) do {finchè il numero è diverso da 1}
begin
R2 := NUMERO mod 2;
while (R2 <> 0) do {ficnhè il numero è dispari (resto diverso da 0)}
begin
NUMERO := ((NUMERO*3)+1) div 2;
writeln(NUMERO);
end;
procedura_pari;
end;
end;
begin
clrscr;
writeln('Questo programma Š stato orgogliosamente realizzato da Kilin');
writeln('per ovviare alla mancanza di materia grigia di KleRoi.');
writeln;
readln;
writeln('Via su, dammi ir numero... non nell''occhio, o'' duro!');
read(NUMERO);
R:= NUMERO mod 2;
if(R=0) then {Se il resto Š 0, il numero Š pari....}
begin
procedura_pari;
readln;
end
else
procedura_dispari;
readln;
end.
parte a ruota con un dispari, spara numeri che nn capisco... c'è qualcosa che nn va... ma cosa?