|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 121
|
[C] ciclo while e sqrt()
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! Codice:
#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;
}
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
Il problema sta nell'acquisizione del dato
tu hai scritto Codice:
scanf("&d", &i);
Codice:
scanf("%d", &i);
non ho capito che problema hai con la radice quadrata |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 121
|
che errore stupido xP grazie mille!
la radice ora mi ridà |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:16.



















