Latest Shouts In The Shoutbox -- View The Shoutbox
The shoutbox is currently offline!

[ Smilies | BBCodes ]
(ddos sopravvive solo con le donazioni, non dimenticarlo...)

matrimonio hosting housing server dedicati auto usate usato sicuro motori automobile motocicletta motorino certificazione lavoro temporaneo windows linux hardware software computer informatica videogiochi discoteca divertimento viaggi cinema teatro televisione elettronica esoterico magia donne alimentati mangiare ristorante grafica orologio vestiti moda abbigliamento risparmio soldi banca affari scommesse calcio totocalcio cavalli sport integratori palestra fitness dimagrire estetica scuola studio esame libri riviste edicola giornale dvd dvd-r cd-r verbatim tdk dual-layer musica cd amore uomini donne amici incontri suonerie cellulari sfondi desktop accessori memoria ram shopping salute lavoro finanza assicurazioni londra cuba arredamento fiera


  Reply to this topicStart new topicStart Poll

programmino: uguaglianza tra equazioni, una di primo grado e l'altra di secondo

Inviato il: Nov 13 2008, 04:53 PM  
Quote Post





Utente Nr.: 8377
Iscritto il: 13-November 08



Gruppo: Members
Messaggi: 2





Questo è il mio massimo.Tutto quello che ho fatto da quando ho iniziato a programmicchiare,escluse un paio di cose relative agli array,è qui dentro.
Per prima cosa viene inserita l'equazione di secondo grado(graficamente verrà fuori uno schifo,vi avviso)e,supponendo si stia lavorando su un piano cartesiano,verrà trovato anche il vertice.
Successivamente si potrà anche inserire l'equazione di primo grado rappresentante una retta.A questo punto il programma si occupa di controllare se suddetta retta attraversa la parabola,è tangente alla parabola o non attraversa mai la parabola.


CODE
#include<stdio.h>

#include<conio.h>

#include<math.h>

#include<stdlib.h>



int main (void)



{   char scelta;

   int a,b,c,m,q,b2,c2; //b2 e c2 nascono dalla somma dei valori rispettivamente di (b e -q) e di (c e -m)

   double delta,x1,x2,radice,verticex,verticey,radice2,iy1,iy2;

 

do{ //ciclo di controllo principale,permette,una volta finita l'esecuzione,di continuare dall'inizio

  do{ // ciclo legato al controllo IF(ramo else)

    do{ //ciclo di controllo che permette di reinserire i valori di a,b e c

     

       printf("\nInserisci valore di a: ");

       scanf("%d", &a);

   

       printf("Inserisci valore di b: ");

       scanf("%d", &b);

   

       printf("Inserisci valore di c: ");

       scanf("%d", &c);



   

       printf("L'equazione inserita e' Y=%dx(2) %dx %d",a,b,c);

   



       delta=pow(b,2)-4*(a*c);   // formula per calcolare il delta,ossia b alla seconda meno 4 a per c

     

         

         if (delta < 0 )

         

         {

            printf("\nL'equazione  e' impossibile poiche' il delta e' inferiore a zero\n");

         }

               

       printf("\nVuoi modificare i valori inseriti?S/N");

       

       scelta=getch();

       

         

       } while ((scelta == 's') || (scelta == 'S'));  //possibilità di scegliere se modificare i valori immessi.Esegue controllo su delta inferiori a zero permettendo cosi di reinserire i valori

     

   

   

         if (delta > 0)

   

          {

              //utilizzo la formula risoutiva delle equazioni di secondo grado

              // -b(+-)radice quadra di b alla seconda meno 4 a per c

                 

             radice=sqrt(delta);

   

           //printf("\nla radice del delta e' %lf",radice);

   

             getch();

   

             x1=((-b)-radice)/(a*2);

             

             x2=((-b)+radice)/(a*2);

   

             printf("\nx1 corrisponde a %lf\nx2 corrisponde a %lf",x1,x2);

             

             verticex = (x1+x2)/2;

             

             verticey = -delta/4*a;

             

             printf("\nIl vertice della parabola e' (%lf:%lf)",verticex,verticey);

   

          }

     

         if (delta == 0)

     

          {

   

             x1=x2=-b/(a*2);

   

             printf("\nEssendo il delta pari a 0,le due soluzioni sono coincidenti.\nInfatti x1 e x2 hanno valore %lf e %lf",x1,x2);

             printf("\nIl vertice della parabola e' (%lf:0)",x1);

          }

   

   

   if (delta >= 0)  //IMPORTANTE,QUANDO IL DELTA è INFERIORE A ZERO,ESEGUE CONTROLLO IN MODO DA IMPEDIRE AL PROGRAMMA DI CONTINUARE

   

   {

   

    //parte riguardante la retta

   

    getch();

   

    printf("\nOra,data una determinata retta,vogliamo trovarne i punti che si \nintersecano assieme alla parabola");



    getch();



    printf("\nInserisci valore di m: ");



    scanf("%d", &m);



    printf("\nInserisci valore di q: ");

    scanf("%d", &q);  

   

    printf("\nL'equazione inserita e' Y=%dx %d",m,q);





    printf("\nNe consegue che: %dx(2)%dx%d=%dx %d",a,b,c,m,q);



    getch();

   

    //poichè devo eguagliare le due equazioni,procedo a sommare i termini simili,facendo attenzione al segno durante lo spostamento

   

    b2=b+(-m);

    c2=c+(-q);



    // ho trovato una nuova equazione di secondo grado,che mi permetterà,una volta risolta,di determinare per quali punti dell'asse delle x si intersecheranno retta e parabola

    printf("\neguagliando le due equazioni se ne ricava:%dx(2) %dx %d",a,b2,c2);



    //getch();

   

   

    delta=pow(b2,2)-4*(a*c2);

   

    // printf("\n%lf delta",delta);   da togliere



   

     if (delta < 0 )

   

          printf("\nnon esiste alcuna retta che passi per la parabola");

     

   

     if (delta > 0)

   

        {

             radice2=sqrt(delta);

   

             getch();

   

             x1=((-b2-radice2)/(a*2));

   



             x2=((-b2+radice2)/(a*2));

   

             printf("\nx1 corrisponde a %lf\nx2 corrisponde a %lf. \nI punti trovati sono le cordinate delle intersezioni sull'asse della x",x1,x2);

   

        }

     

     if (delta == 0)

     

        {

   

             x1=x2=-b2/(a*2);

   

             printf("\nEssendo il delta pari a 0,le due soluzioni sono coincidenti.\nInfatti x1 e x2 hanno valore %lf e %lf",x1,x2);

   

        }

   

   

   iy1=a*(pow(x1,2))+(b*x1)+c;  

   

   iy2=a*(pow(x2,2))+(b*x2)+c;  





   printf("\nSostituendo le x trovate alle due equazioni iniziali,e' possibile risalire \nai due punti che si intersecano sull'asse delle y.");

 

 

     if (iy1 == iy2)

     

        {

             printf("\nLa retta si interseca su un punto solo: %lf; %lf",x1,iy1);



        }



       else



         {



           printf("\n\nIl primo punto in cui la retta si interseca sulla parabola e' %lf; %lf",x1,iy1);

           printf("\n\nIl secondo punto in cui la retta si interseca sulla parabola e' %lf; %lf",x2,iy2);



         }

   

   printf("Vuoi continuare ad inserire altri dati? S/N");

   

   scelta=getch();

   

   system("cls");

   

   }

   

    else

   

    {

      printf("\nEssendo il delta minore di zero non e' possibile proseguire");

     

      printf("\nVuoi re-inserire altri dati? S/N");

     

      scelta=getch();

    }

   

  } while((scelta == 's') || (scelta == 'S'));  

         

    //attenzione a non fare confusione!

   

   } while ((scelta == 's') || (scelta == 'S'));

   

   

getch();

return 0;



}  
 
PMEmail Poster
Top

Utenti totali che stanno leggendo la discussione: 0 (0 Visitatori e 0 Utenti Anonimi)
Gli utenti registrati sono 0 :

Topic Options Reply to this topicStart new topicStart Poll

 



[ Script Execution time: 0.0807 ]   [ 22 queries used ]   [ GZIP Abilitato ]



eXTReMe Tracker