Drobny problem z Algorytmem

0

Mam taki jeden problem otóż mam do napisania program który z takiego działania 6x^2+7x-13=0
wyznaczy a,b,c ogólnie sam wiem jak to sie robi tylko mama problem z wykonaniem algorytmu w programie ,
w przypadku tego dzialania wartosci poszczegolnych zmiennych powinny miec wartosc a=6 , b=7 , c=-13
a tu caly algorytm

Uses CRT;
 var
 a,b,c:array[1..4]of integer;
 dz,dza,dzb,dzc:string;
 blada,bladb,bladc:byte;
 blada1,blada2:byte;
 bladb1,bladb2:byte;
 bladc1,bladc2,bladc3:byte;
 blad,i:byte;

 Procedure literaa;
  Begin
   if dz[1]='x' then a[1]:=1 else
   Begin
   val(dz[1],a[2],blada1);
   val(dz[2],a[3],blada2);
   blada:=blada1+blada2;
    if blada=0 then 
	 Begin
	 dza:=dz[1]+dz[2];
	 val(dza,a[1],blad)
	 end else
	a[1]:=a[2];
  end;
  end;
  
  PROCEDURE literab;
   Begin
    i:=0;
  Repeat
   inc(i);
  until (dz[i]='+') or (dz[i]='-');
 
 if dz[i+1]='x' then 
  Begin
  if dz[i]='-' then b[1]:=-1;
  if dz[i]='+' then b[1]:=1;
  end else
  Begin
   val(dz[i+1],b[2],bladb1);
   val(dz[i+2],b[3],bladb2);
   bladb:=bladb1+bladb2;
    if bladb=0 then 
	 Begin
	 dzb:=dz[i+1]+dz[i+2];
	 val(dzb,b[1],blad)
	 end else
	b[1]:=b[2];
   end;
   end;
   
  PROCEDURE literac;
   Begin
    i:=1;
 while dz[i]='=' do inc(i);
  while (dz[i]='+') or (dz[i]='-') do dec(i);
  inc(i);
   Begin 
    val(dz[i],c[2],bladc1);
	val(dz[i+1],c[3],bladc2);
	val(dz[i+2],c[4],bladc3);
	bladc:=bladc1+bladc2+bladc3;
	 if bladc=2 then c[1]:=c[2] ;
	 if bladc=1 then 
	  Begin
	   dzc:=dz[i]+dz[i+1];
	   val(dzc,c[1],blad);
	  end;
	 if bladc=0 then
	  Begin
	   dzc:=dz[i]+dz[i+1]+dz[i+2];
	   val(dzc,c[1],blad);
	  end;
   end;
   end;
 
 
Begin
 Writeln('Podaj działanie');
 readln(dz);  //Wczytanie Działania

 literaa;
 literab;
 literac;
 Writeln('a=',a[1]);
 Writeln('b=',b[1]);
 Writeln('c=',c[1]);
  readln;
 end.
    
  

W wyniku dostaje a prawidłowe lecz b i c wychodzi zerowe

0

wyznaczy a,b,c ogólnie sam wiem jak to sie robi tylko mama problem z wykonaniem algorytmu w programie ,

Duży problem.

a,b,c:array[1..4]of integer;
dz,dza,dzb,dzc:string;
blada,bladb,bladc:byte;
blada1,blada2:byte;
bladb1,bladb2:byte;
bladc1,bladc2,bladc3:byte;
blad,i:byte;

De fuq? Po co ci tyle zmiennych?!

I co to za algorytm? Wywal go i napisz to normalnie używając funkcji jak Pos,Copy,StrToInt (lepsze niż val - a zresztą to po co to przerabiasz na numer skoro tylko to wyświetlasz) i to chyba wszystko co ci potrzebne...

Wiem że jesteś newbie, ale ja o dziwo nigdy takiego kodu nie produkowałem (może i nie był najlepszy ale naprawdę, miał sens).

0

Skoro wiesz jak to się robi, to najpierw napisz pseudo kod. Może bd Ci łatwiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1