Un While che fa quel che vuole!

di il
1 risposte

Un While che fa quel che vuole!

Sera
avrei svariati problemi con questo programmino che ho creato. quello che mi pare più strano è quello del ciclo while! attraverso il ciclo vorrei reiterare tutto il codice centrale, fino a quando l'utente non cambia il valore della variabile a fine ciclo!

un altro problema è la radice quadrata! non riesco ad usarla a dovere.

sapreste aiutarmi? vi posto il codice!
ps: è un semplice programmino che attraverso svariati if else calcola i risultati di una equazione di primo o secondo grado!


#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{

    //variabile di controllo while
    int i=0;

    // variabili equazioni
    float a;
    float b;
    float c;
    float x;


    while (i!=1){
    system("cls");
    printf("########################\n");
    printf("# Risolvi equazioni v1 #\n");
    printf("########################\n");
    printf("# By Lamberto Basti    #\n");
    printf("########################\n\n");

    printf("Inserisci i valori di a, b e c:\n");
    printf("\na="); scanf("%f", &a);
    printf("b="); scanf("%f", &b);
    printf("c="); scanf("%f", &c);

    printf("\n");

    //a=0 Equazione di 1° grado
    if (a==0&&b!=0&&c!=0){
            x=-c/b;
            printf("\n L'equazione ha una sola soluzione: x=%f", x);
    }

    //b=0 Equazione pura
    else if (a!=0&&b==0&&c!=0){
            x=-c/a;

            if (x<0){
                float y=-x;
                y = sqrtf(x);
                printf("\nLequazione ha una soluzione complessa\n\n x=%0.1fi", y);}
            else {
                float y=sqrtf(x);
                printf("L'equazione ha due soluzione reali:\n x=%f\nx=%f", y, -y);}}

    //c=0 equazione spuria
    else if (a!=0&&b!=0&&c==0){
            float x2=-b/a;
            printf("L'equazione ha due soluzioni\n\n x=0\nx=%0.1f", x2);}

    //a=0 b=0 equazione
    else if (a==0&&b==0&&c!=0){
            if (c=0){
                printf("\nLequazione è sempre verificata per ogni valore di x");}
            else{printf("\nL'equazione non è mai verificata");}}

    //Equazione normale
    else if (a!=0&&b!=0&&c!=0){

            float delta=b*b-4*a*c;
            //delta<0
            if (delta<=0){
                float delta1=-delta;
                printf("L'equazione ha 2 soluzione complesse:\n\n");
                printf("(%0.1f-&0.1fi)/(2%0.1f)", -b, sqrtf(delta1), a);
                printf("(%0.1f+&0.1fi)/(2%0.1f)", -b, sqrtf(delta1), a);}
            else if (delta==0){
                printf("L'equazione ha 2 soluzioni reali coincidenti\n\n");
                printf("x=%0.1f", -b/(2*a));}
            else {
                printf("L'equazione ha 2 soluzioni reali\n\n");
                printf("x=%0.1f\n", (-b+sqrtf(delta))/(2*a));
                printf("x=%0.1f", (-b-sqrtf(delta))/(2*a));}}

    //a=0 c=0 b=0
    else if(a==0&&b==0&&c==0){
            printf("L'equazione e' verificata per ogni x");}

    //a=0 c=0 | b=0 c=0
    else {
    printf("L'equazione ha una soluzione\n\nx=0");}
    printf("\n\n");
    printf("> Esci 1\n");
    printf("> Indietro 2\n\n");
    printf(">"); scanf("&d", &i);

    }
return 0;
    }



1 Risposte

  • Re: Un While che fa quel che vuole!

    Ci sono degli errori da correggere:
    
    max@studio:~> gcc -g -Wall prova.c -lm
    prova.c: In function ‘main’:
    prova.c:59:13: warning: suggest parentheses around assignment used as truth value
    prova.c:71:17: warning: too many arguments for format
    prova.c:72:17: warning: too many arguments for format
    prova.c:91:5: warning: too many arguments for format
    max@studio:~>  
    max@studio:~>  
    max@studio:~> cat -n prova.c | grep -E "59|71|72|91"
        59              if (c=0){
        71                  printf("(%0.1f-&0.1fi)/(2%0.1f)", -b, sqrtf(delta1), a);
        72                  printf("(%0.1f+&0.1fi)/(2%0.1f)", -b, sqrtf(delta1), a);}
        91      printf(">"); scanf("&d", &i); 
    max@studio:~>  
    max@studio:~>  
    max@studio:~>  
    
Devi accedere o registrarti per scrivere nel forum
1 risposte