domenica 17 novembre 2013

Equazione di secondo grado, con utilizzo di funzioni


#include <stdio.h>
#include <cmath>

int a;
int b;
int c;
int x1;
int x2;
int delta;
int funzdelta(int x, int y, int z);   //funzione per il calcolo del delta (parametri a,b,c)
int funzx1(int x, int y, int z);   //funzione per il calcolo di x1 (parametri b,delta,a)
int funzx2(int x, int y, int z);   //funzione per il calcolo di x2 (parametri b,delta,a)

using namespace std;

int main()
{
    printf("Inserisci il valore di 'a':  ");
    scanf("%d",&a);
    printf("\nInserisci il valore di 'b':  ");
    scanf("%d",&b);
    printf("\nInserisci il valore di 'c':  ");
    scanf("%d",&c);
    delta=funzdelta(a,b,c);   //chiamata funzione per calcolo delta
    if(delta>=0)
               delta=sqrt(delta);   //se delta >=0 esegui radice quadrata del valore delta
    else
               printf("\nDELTA NEGATIVO");   //altrimenti visualizza che delta è negativo
    printf("\n\nIl valore del DELTA e': %d",delta);
    if(delta>0)   //se delta>0 calcola x1 e x2
    {
               x1=funzx1(b, delta, a);   //chiamata funzx1 con passaggio parametri
               x2=funzx2(b, delta, a);   //chiamata funzx2 con passaggio parametri
               printf("\n\nIl valore di x1 e' %d e il valore di x2 e': %d",x1,x2);
    }
    else  
               if(delta==0)   //se delta=0 x1=x2 quindi esegui solo funzx1
               {
                          printf("\n\nIl valore di x1 e x2 e' coincidente: %d",funzx1);   //visualizza valore return funzx1
               }
               else
                          if(delta<0)   //se delta <0 non ci sono soluzioni
                          printf("\n\nIl valore di X non è determinabile");
}

int funzdelta(int x, int y, int z)
{
int delta;
delta=((y*y)-(4*x*z));   //((b^2)-(4*a*c))
return delta;
}

int funzx1 (int x, int y, int z)
{
int risultato;
risultato=((-1)*(x)+y)/(2*z);   //((-b)+√∆)/(2*a))
return risultato;
}

int funzx2 (int x, int y, int z)
{
int risultato;
risultato=((-1)*(x)-y)/(2*z);   //((-b)-√∆)/(2*a))
return risultato;
}



Nessun commento:

Posta un commento