Witam, były ktoś w stanie wytłumaczyć mi kod tego programu :
program wielomiany;
uses crt, sysutils, strutils;
const
max_stopien = 10;
type
vect = array[0..(2*max_stopien)] of integer;
{wspolczynniki w tablicy przechowywane sa w kolejnosci od wyrazu wolnego do najwyzszego stopnia}
procedure odczytaj_linie(var v : vect; linia : string);
var
temp : vect;
i, j, kod : integer;
begin
for i := 0 to max_stopien do
begin
val(extractword(i + 1, linia, [' ']), temp[i], kod);
if kod <> 0 then
break;
end;
j := 0;
i := i - 1;
while i >= 0 do
begin
v[j] := temp[i];
i := i - 1;
j := j + 1;
end;
end;
procedure wczytaj_plik(var zrodlowy_a, zrodlowy_b : vect);
var
f : Text;
linia : string;
begin
if not (fileexists('wielomiany.txt')) then
begin
writeln('Plik wielomiany.txt nie istnieje!');
halt(1);
end;
assign(f, 'wielomiany.txt');
reset(f);
readln(f, linia);
odczytaj_linie(zrodlowy_a, linia);
readln(f, linia);
odczytaj_linie(zrodlowy_b, linia);
close(f);
end;
procedure dodawanie(zrodlowy_a, zrodlowy_b : vect; var wynikowy : vect);
var
i : integer;
begin
for i := 0 to max_stopien do
wynikowy[i] := zrodlowy_a[i] + zrodlowy_b[i];
end;
procedure odejmowanie(zrodlowy_a, zrodlowy_b : vect; var wynikowy : vect);
var
i : integer;
begin
for i := 0 to max_stopien do
wynikowy[i] := zrodlowy_a[i] - zrodlowy_b[i];
end;
procedure mnozenie(zrodlowy_a, zrodlowy_b : vect; var wynikowy : vect);
var
i, j : integer;
begin
for i := 0 to max_stopien do
for j := 0 to max_stopien do
wynikowy[i + j] := wynikowy[i+j] + zrodlowy_a[i] * zrodlowy_b[j];
end;
procedure wyswietl(wynikowy : vect);
var
i : integer;
begin
write('Wynikowy wielomian: ');
for i := (2 * max_stopien) downto 2 do
if wynikowy[i] <> 0 then
if wynikowy[i] >= 0 then
write('+', wynikowy[i], 'x^', i)
else
write(wynikowy[i], 'x^', i);
if wynikowy[1] <> 0 then
if wynikowy[1] >= 0 then
write('+', wynikowy[1], 'x')
else
write(wynikowy[1], 'x');
if wynikowy[0] <> 0 then
if wynikowy[0] >= 0 then
write('+', wynikowy[0])
else
write(wynikowy[0]);
writeln;
writeln('Wciśnij [enter] aby powrócić do menu');
readln;
end;
var
zrodlowy_a, zrodlowy_b, wynikowy : vect;
wybor : integer;
i : integer;
begin
for i := 0 to (2 * max_stopien) do
begin
zrodlowy_a[i] := 0;
zrodlowy_b[i] := 0;
end;
wczytaj_plik(zrodlowy_a, zrodlowy_b);
repeat
//clrscr;
for i := 0 to (2 * max_stopien) do
wynikowy[i] := 0;
writeln('1 - dodawanie wielomianow');
writeln('2 - odejmowanie wielomianow');
writeln('3 - mnozenie wielomianow');
writeln('0 - wyjscie');
readln(wybor);
if wybor = 0 then
break
else if wybor = 1 then
begin
dodawanie(zrodlowy_a, zrodlowy_b, wynikowy);
wyswietl(wynikowy);
end
else if wybor = 2 then
begin
odejmowanie(zrodlowy_a, zrodlowy_b, wynikowy);
wyswietl(wynikowy);
end
else if wybor = 3 then
begin
mnozenie(zrodlowy_a, zrodlowy_b, wynikowy);
wyswietl(wynikowy);
end;
until false;
end.
Głównie chodzi mi o mnożenie wielomianów.Z góry dziękuję za pomoc.