/* equa2.mar */
/* soluzione e discussione equazione 2 grado */
/* valori interi o reali */

nowarnings
domains
predicates
azione
opera
tasto
verifica(real,real,real,real)
elabora(integer)
calcola
goal azione.
clauses
azione:-makewindow(1,5,1,"",1,1,20,78),opera.
opera:-
 clearwindow,
 write("scrivi 1 per calcolo equazione"),nl,
 write("scrivi 0 per finire"),nl,
 readint(N),clearwindow,
 elabora(N).
  elabora(1):-calcola.
  elabora(0):-exit.
 calcola:- 
 write("soluzione equazione 2 grado "),nl,
 write("ax^2+bx+c "),nl,
 write("scrivi valori ,seguiti da enter"),nl,
 write("a="),readreal(A),
 write("b="),readreal(B),
 write("c="),readreal(C),
 D=B*B-4*A*C,
 write("discriminante=",D),nl,
 verifica(D,A,B,C).
 
 verifica(D,A,B,C):-
 D>0,
 R=sqrt(D),
 X1=(-B+R)/(2*A),
 X2=(-B-R)/(2*A),
 write("soluzione equazione:"),nl,
 write("x1=",X1),nl,
 write("x2=",X2),nl,tasto,opera;
 
 D=0,
 X1=-B/(2*A),
 X2=X1,
 write("soluzione equazione:"),nl,
 write("x1=x2=",X1),nl,tasto,opera;
 
 D<0,
 write("soluzione con radici complesse "),nl,
 tasto,opera. 
 
 tasto:-
 makewindow(3,3,2,"",20,60,3,15),
 write("premi enter"),
 readchar(_),removewindow,gotowindow(1).

 

+------------------------------------
¦+-----------------------------------
+¦soluzione equazione 2 grado
+¦ax^2+bx+c
¦¦scrivi valori ,seguiti da enter
¦¦a=2
¦¦b=4
¦¦c=2
¦¦discriminante=0
¦¦soluzione equazione:
¦¦x1=x2=-1
¦¦
¦¦
+-----------------------------------
¦+----------------------------------
+¦soluzione equazione 2 grado
+¦ax^2+bx+c
¦¦scrivi valori ,seguiti da enter
¦¦a=2
¦¦b=4
¦¦c=-3
¦¦discriminante=40
¦¦soluzione equazione:
¦¦x1=0.58113883008
¦¦x2=-2.5811388301
¦¦
¦¦
+-----------------------------------
¦+----------------------------------
+¦soluzione equazione 2 grado
+¦ax^2+bx+c
¦¦scrivi valori ,seguiti da enter
¦¦a=2
¦¦b=3
¦¦c=8
¦¦discriminante=-55
¦¦soluzione con radici complesse
¦¦
¦¦
ritorna