Zdravim, uz se tu druhy den peru s jednou ulohou, a protoze uz mi pomalu dochazi trpelivost, tak vas prosim o pomoc. Program by mel delat to, ze do nej uzivatel zada soucet/rozdil komplexnich cisel s celociselnymi koeficienty (napr. 3+5i-7-1i+2i+1) a ma se vypsat vysledek operace (v tomhle pripade -3 + 6i).
Prikladam zdrojak a vim, ze je asi neuveritelne slozity az hloupy. Bohuzel mi to programovani nejde a predmet jsem si vubec nemel zapisovat, s cimz ted uz ovsem nic moc nenadelam :).
Krom toho mam u Pascala porad nejake problemy s kompatibilitou, procez si napr. nejsem schopny zprovoznit to "krokovani" v debuggeru, takze sice vim, ze nekde "pretikam" mimo pole, ale nevim kde atd., tak uz to tady zkousim metodou pokus/omyl a vidim, ze to nikam nevede, tak budu rad za kazdou pomoc.
program komplexcis;
uses crt;
const zaklad=10;
var zadane:string;
i,j,k,mocnina,vysledek1,vysledek2,cislo,cislo2,p:integer;
prvniakladne:boolean;
begin
clrscr;
writeln('Zadejte pocetni operaci ve tvaru souctu/rozdilu komplex. cisel s celociselnymi koeficienty ');
writeln('(napr. 3+5i-7-1i+2i+1): ');
readln(zadane);
i:=0;
if zadane[1]<>'-' then prvniakladne:=true
else prvniakladne:=false;
repeat
mocnina:=1;
i:=i+1;
if zadane[i]='-' then begin
cislo:=0;
i:=i+1;
j:=i;
while (ord(zadane[j])>=ord('0')) and (ord(zadane[j])<=ord('9')) and (j<length(zadane)) do j:=j+1;
for k:=i to j-1 do begin
p:=j-1-k;
mocnina:=1;
repeat
mocnina:=zaklad*mocnina;
p:=p-1;
until p=0;
cislo:=cislo+((ord(zadane[k])-ord('0'))*mocnina);
end;
i:=j-1;
if zadane[i]='i' then vysledek2:=vysledek2-cislo
else vysledek1:=vysledek1-cislo;
end
else if (zadane[i]='+') or prvniakladne then begin
cislo2:=0;
if not prvniakladne then i:=i+1;
j:=i;
while (ord(zadane[j])>=ord('0')) and (ord(zadane[j])<=ord('9')) and (j<length(zadane)) do j:=j+1;
for k:=i to j-1 do begin
p:=j-1-k;
mocnina:=1;
repeat
mocnina:=zaklad*mocnina;
p:=p-1;
until p=0;
cislo2:=cislo2+((ord(zadane[k])-ord('0'))*mocnina);
end;
i:=j-1;
if zadane[i+1]='i' then vysledek2:=vysledek2+cislo2
else vysledek1:=vysledek1+cislo2;
end;
prvniakladne:=false;
until i=length(zadane);
writeln(vysledek1,' ',vysledek2,'i');
readln;
end.