PDA

View Full Version : [Pascal] problema somma vettori. attenzione e complicato!


imfede
08-07-2010, 14:59
sono giorni che mi scervello: ho tentato di scrivere un programma che faccia somme di numeri con molte cifre semplicemente caricando due array e facendo i conti in colonna. il problema è che sputa fuori risultati come "10-78" anche se gli chiedo esplicitamente con un writeln una variabile intera. ecco il programma:

program somma_vettori;
uses EmptyPlaceHolderUnit;

var add1,add2:string[50];
var ad1,ad2,sum:array[0..50]of integer;
var i,x:integer;
var esc:char;


function myint(mychar:char):integer;
begin
myint:=ord(mychar)-48;
end;


begin
for i:=0 to 50 do write('-');
for i:=0 to 6 do writeln;
repeat
write('a='); readln(add1);
write('b='); readln(add2);



(*---- Caricamento vettori---*)

x:=length(add1);
for i:=0 to x do
begin
ad1[i]:=myint(add1[i]);
end;


(*---control---*)
writeln; for i:=x downto 0 do write(ad1[i]); writeln;
(*---end control---*)


x:=length(add2);
for i:=0 to x do
begin
ad2[i]:=myint(add2[i]);
end;

if length(add1)>length(add2) then x:=length(add1);

writeln('a+b=');



(*----- Somma-----*)

for i:=x downto 0 do
begin
sum[i]:=ad1[i]+ad2[i];
if sum[i]>9 then
begin
sum[i]:=sum[i]-10;
ad1[i-1]:=ad1[i-1]+1;
end;
end;

for i:=x downto 0 do write(sum[i]);
writeln;
write('Ancora? [S/N]'); readln(esc);
until (esc='n')or(esc='N');
end.