Programma c++ per equazioni di secondo grado

di il
53 risposte

53 Risposte - Pagina 2

  • Re: Programma c++ per equazioni di secondo grado

    Lo switch controlla il valore di una variabile ed esegue pezzi di codice corrispondenti ai case.
    Ovvero usa una variabile che tu devi avere impostato PRIMA di eseguire lo switch.
  • Re: Programma c++ per equazioni di secondo grado

    olegfresi ha scritto:


    Dunque ho capito che in questo tipo di programma lo switch non funziona quindi devo usare tutta una cascata di if else. L'input è dato dai 3 coefficienti
    Anche io avevo pensato di riprovare con gli if...else, solo che mi dice: http://prntscr.com/fseou

    Il codice in C è qui sotto ed ho fatto un paio di modifiche come per esempio:
    1) int a;
    int b;
    int c;
    int d;
    int x1;
    int x2;

    dove x1 ed x2 sono le due radici dell'equazione di secondo grado;
    a,b,c sono i coefficienti;

    senza le altre variabili (secondo me sono inutili);

    2) sostituire lo switch che sinceramente non centra perchè è una funzione di selezione multipla dove tu imposti dei casi predefiniti in base al valore della variabile (che tu avevi messo tipoDiEquazione e tra l'altro l'avevi impostata sul valore 0...) e che il compilatore riconosce e per quanto io ne sappia (sono ancora alle prime armi con il C) nello switch ci devi mettere oltre il CASE: anche il DEFAULT: ....

    Riporto il codice, se qualcuno mi corregge le parentesi posso continuare perchè non sono d'accordo sul printscreen (o meglio non riesco a trovare l'errore). Grazie e ciao! ....
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int main( void )
    {
        int a;
        int b;
        int c;
        int d;
        int x1;
        int x2;
    
        puts( "Inserisci il coefficiente della x al quadrato: \n" );
        scanf( "%d", &a );
        puts( "Inserisci il coefficiente della x: \n" );
        scanf( "%d", &b );
        puts( "Inserisci il coefficiente della c: \n" );
        scanf( "%d", &c );
    
        if (a==0) {
            puts( "L'equazione non e' di secondo grado" );
            x1=x2=-(b/a);
            puts( "x1<<endl" );
        } else {
            if(c==0) {
                puts( "L'equazione e' spuria" );
                x1 = 0;
                x2 = -(b/a);
                puts( "x1" );
                puts( "x2" );
            } else {
              if(b==0) {
                  puts( "L'equazione e' pura" );
                  x1 = -sqrt(-c/a);
                  x2 = sqrt(-c/a);
                  puts( "x1" );
                  puts( "x2" );
              } else {
                  if((a && b && c)!=0) {
                      d= (b*b)-4*a*c;
                      if(d>0) {
                          x1 = ((-b)-sqrt(d))/2*a;
                          x2 = ((-b)+sqrt(d))/2*a;
                      }
                      if(d==0) {
                          x1 = (-b)/2*a;
                      }
                      if(d<0) {
                          puts( "Questa equazione e' impossibile in R ma ha due soluzioni complesse in C" );
                      }
                }
              }
          }
    }
    
  • Re: Programma c++ per equazioni di secondo grado

    @oligfresi ... Fra l'altro il crossposting qui è vietato dal regolamento.

    Se ne stai discutendo contemporaneamente su

    "https://www.matematicamente.it/forum/viewtopic.php?f=15&t=176608&p=8286621&hilit=programma#p8286621"

    si fa solo confusione.
  • Re: Programma c++ per equazioni di secondo grado

    @Jackie ... se indenti meglio il codice trovi l'errore facilmente.
  • Re: Programma c++ per equazioni di secondo grado

    Ok, dunque in questo caso uso semplicemente if ed else poichè lo switch non può funzionare.
  • Re: Programma c++ per equazioni di secondo grado

    Non è che non funziona in questo caso, non ha senso!

    Rivedi il suo funzionamento nel libro.
  • Re: Programma c++ per equazioni di secondo grado

    Ho ho tolto lo switch e messo if else ma rimane un problemino...se in un'equazione pura il numero sotto radice è negativo che condizione devo mettere nell'if?Una curiosità: quale sarebbe un'eventuale algoritmo che controlla se un numero sotto radice è un quadrato perfetto?
  • Re: Programma c++ per equazioni di secondo grado

    Sono incappato in un altro errore: quando l'equazione non è completa il programma mi dà la soluzione ma poi ricade nel cout del caso dell'equazione completa. Provate a compilare il codice e mettete a = 0 o un'equazione spuria o pura e poi vedrete l'errore che non dovrebbe stampare.
  • Re: Programma c++ per equazioni di secondo grado

    X olegfresi: qui il cross posting non è ammesso.
    Se vuoi continuare su questo forum metti un backlink verso questa discussione e convoglia tutto qui.
    Se vuoi continuare nell'altro forum, qui chiudo.

    Fammi sapere
  • Re: Programma c++ per equazioni di secondo grado

    Continuo qui ma cos'è un backlink
  • Re: Programma c++ per equazioni di secondo grado

    Il backlink è un link entrante.

    Nei forum la netiquette è la seguente:
    Si pubblica un ultimo post (nel forum in cui si vuole troncare la discussione) e si scrive che la discussione continua su un altro forum specificando il link di destinazione che in questo caso è:
    "https://www.iprogrammatori.it/forum-programmazione/cplusplus/programma-per-equazioni-secondo-grado-t31856.html"
  • Re: Programma c++ per equazioni di secondo grado

    Ok fatto
  • Re: Programma c++ per equazioni di secondo grado

    Posta nuovamente il codice corretto così si fanno le prove di cui parli.
  • Re: Programma c++ per equazioni di secondo grado

    Eccolo qui:


    #include <iostream>
    #include <cmath>
    #include <stdlib.h>
    using namespace std;

    float a;
    float b;
    float c;
    float x1;
    float x2;
    float d;

    int main (){

    cout<<"Inserisci a:";
    cin>>a;
    cout<<"inserisci b:";
    cin>>b;
    cout<<"Inserisci c:";
    cin>>c;

    if(a==0)
    {
    x1=x2=-(c/b);
    cout<<"l'equazione e' di primo grado\n";
    cout <<x1;
    }

    if(b==0)
    {
    x1 = sqrt(-(c/a));
    x2 = -sqrt(-(c/a));
    cout<<"l'equazione e' pura\n";
    cout <<x1<<endl;
    cout <<x2<<endl;

    }

    if(c==0)
    {
    x1 = 0;
    x2 = -(b/a);
    cout <<"l'equazione e' spuria\n";
    cout<<x1<<endl;
    cout <<x2<<endl;
    }
    system("PAUSE");
    return 0;

    if ((a && b && c)!=0)
    {
    d = sqrt((b*b)-(4*a*c));


    if (d>0){

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

    cout << "L'equazione ha due radici reali distinte"<<endl;
    cout << "La prima soluzione e':"<<x1<<endl;
    cout << "La seconda soluzione e':"<<x2<<endl;
    }

    if (d<0){

    cout <<"Impossibile in R, ha due soluzioni in C";
    }
    if (d==0){

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

    cout <<"x1"<<endl;

    }
    system("PAUSE");
    return 0;
    }
    }
  • Re: Programma c++ per equazioni di secondo grado

    Questa linea

    if ((a && b && c)!=0)

    non si scrive in quel modo. Rivedila.
Devi accedere o registrarti per scrivere nel forum
53 risposte