
function equaz2gall(esempio)

if nargin < 1
    esempio=2; % SCEGLIERE 1,2,3.
end

switch esempio
    case 1
        a=1; b=2; c=3;
    case 2
        a=3; b=8; c=2;
    case 3
        a=2; b=4; c=2;
    case 4
        a=0; b=1; c=2;
    case 5
        a=3; b=5; c=0;
    case 6
        a=4; b=0; c=3;
    case 7
        a=4; b=0; c=-3;
    case 8
        a=0; b=0; c=2;
    case 9
        a=3; b=0; c=0;
    case 10
        a=0; b=0; c=0;
    case 11
        a=1; b=0; c=-4;
end

fprintf('\n \t ....... ESEMPIO: %3.0f ....... \n',esempio);

[x1,x2,flag]=equaz2gst_sub(a,b,c);

fprintf('\n');



function [x1,x2,flag]=equaz2gst_sub(a,b,c)

%--------------------------------------------------------------------------
% OGGETTO.
%--------------------------------------------------------------------------
% RISOLUZIONE DELL'EQUAZIONE ax^2+bx+c=0 MEDIANTE FORMULA STABILE.
%--------------------------------------------------------------------------

% INIZIALIZZAZIONE.
x1=[]; x2=[]; flag=0;

% CONTROLLI SUI PARAMETRI NULLI.

if a == 0
    fprintf('\n \t Parametro ''a'' nullo');
    flag=1;
end

if b == 0
    fprintf('\n \t Parametro ''b'' nullo');
end

if c == 0
    fprintf('\n \t Parametro ''c'' nullo');
end

% CALCOLO DISCRIMINANTE.
fprintf('\n \t a=%1.15e',a);
fprintf('\n \t b=%1.15e',b);
fprintf('\n \t c=%1.15e \n \n',c);

delta=b^2-4*a*c;

if delta < 0
    fprintf('\n \t Discriminante negativo.');
    flag=2;
end

% Equazione puramente di secondo grado.
% Equazione puramente di secondo grado.
if flag == 0
    if b == 0
        x1=sqrt(-c/a);
        x2=-x1;
        fprintf('\n \t x1=%1.15e',x1);
        fprintf('\n \t x2=%1.15e \n \n',x2);
    else
        x1=(-b-sign(b)*sqrt(delta))/(2*a);
        x2=c/(a*x1);
        fprintf('\n \t x1=%1.15e',x1);
        fprintf('\n \t x2=%1.15e \n \n',x2);
    end
end


% Equazione puramente di primo grado.
if flag == 1
    if b == 0
        if c == 0
            fprintf('\n \t Ogni numero reale risolve l''equazione.');
        else
            fprintf('\n \t Nessuna soluzione.');
        end
    else
        x1=-c/b;
        fprintf('\n \t x1=%1.15e',x1);
    end
end

