Zrobiłem część programu po swojemu. Zadeklarowałem tablice o typie string.
Mam teraz problem z mnożeniem. Pierwsza liczba pod kreską dobrze wychodzi,
ale druga, trzecia i następne już nie. W czym tkwi błąd?
Bardzo prosze o pomoc.
program mnozenie_pisemne;uses crt;type tablica = array[1..12,1..20] of string;var tab: tablica; a,b,la,lb: longint; s: string; i,j,dlgA,dlgB,pom, prze: byte;beginclrscr;{ czytanie 2 liczb }writeln('Podaj pierwszĄ liczb©');readln(a);writeln;writeln('Podaj drugĄ liczb©');readln(b);{ liczenie d�ugo�ci liczb }Str(a,s);dlgA:=length(s);str(b,s);dlgB:=length(s);writeln;writeln('D�ugo�† liczby pierwszej: ',dlgA,'. D�ugo�† liczby drugiej: ',dlgB,'.');{ sprawdzanie czy ujemne }If a<0 then begin a:=a*-1; dlgA:=dlgA-1; tab[1,20-dlgA]:='-'; end;If b<0 then begin b:=b*-1; dlgB:=dlgB-1; tab[2,20-dlgB]:='-'; end;lb:=b;la:=a;{ wpisywanie pierwszej liczby do tabeli }i:=1;for j:=20 downto 21-dlgA do begin pom:= a mod 10; a:= a div 10; str(pom,s); tab[i,j]:=s; end; { wpisywanie drugiej liczby do tabeli }i:=2;for j:=20 downto 21-dlgB do begin pom:= b mod 10; b:= b div 10; str(pom,s); tab[i,j]:=s; end;readln;{znak mnoľenia i podkre�lenie}If dlgA>dlgB then begin i:=3; for j:=20 downto 18-dlgA do begin tab[i,j]:='-'; end; tab[2,18-dlgA]:='X'; end else begin i:=3; for j:=20 downto 18-dlgB do begin tab[i,j]:='-'; end; tab[2,18-dlgB]:='X'; end;prze:=0;If (la=0) or (lb=0) then begin tab[4,20]:='0'; end else begin For j:=1 to dlgB do begin b:=lb mod 10; lb:=lb div 10; For i:=1 to dlgA do begin a:=la mod 10; la:=la div 10; If la=0 then begin la:=a; end; pom:=a*b+prze; prze:=0; If pom>9 then begin prze:=pom div 10; pom:=pom mod 10; end; str(pom,s); tab[3+j,22-i-j]:=s; end; If prze>0 then begin str(prze,s); tab[4,20-i]:=s; end; end; end;writeln('Przeniesienie: ',prze);writeln('b:= ',b);writeln('lb:= ',lb);writeln('la:= ',la);{ wy�witlanie tabeli}for i:= 1 to 12 do begin writeln; for j:= 1 to 20 do begin write(tab[i,j]:1); end; end;readln;end.