|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2009
Città: Saviano(NA)
Messaggi: 1018
|
[C]problemi con radice e loop for
#include <stdio.h>
#include <stdlib.h> #include <math.h> float a,b,c,delta,x0,x1,x2,x; main() { printf("inserire i tre coefficienti\n"); for(; { scanf("%f%f%f",&a,&b,&c); delta=(b*b)-(4*a*c); printf("%.2f\n",delta); system("PAUSE"); if(delta<0) printf("nessuna soluzione reale il delta e' %.2f\n\n",delta); else { if(delta=0) { x0= -b/2*a; printf("un unica soluzione %.2f",x0); } else { x1= (-b-delta)/2*a; x2= (-b+delta)/2*a; printf("ha due soluzioni %.2f e %.2f",x1,x2); } } scanf("%d",x); if(x==0)break; } } questo e il mio programmino per calcolare la soluzioni di un equazione di secondo grado i problemi sono prevalentemente due 1) non so come si fa la radice quadrata in c sapevo si dovesse implemetare math.h ma poi con sqrt non mi da i risultati sperati 2)per il programma dopo avermi dato le soluzioni non ritorno al punto di partenza col loop for grazie a chi mi sara di aiuto e scusate lo scempio ma e il mio terzo programma (fra 5 giorni ho un esame aiutooooooo)
__________________
Un GRAZIE a tutti voi del forum che ogni giorno mi tirate fuori dai casini .......... Sto giocando a : Hitman Codename 47 |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 250
|
C'erano un bel pó di errori.. Qua c'é una correzione:
Per la libreria matematica non so su windows, ma su unix si aggiunge -lm da riga di comando in compilazione. Codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float a,b,c,delta,x0,x1,x2;
int x;
main(){
for(;;){
printf("inserire i tre coefficienti\n");
scanf("%f%f%f",&a,&b,&c);
delta=sqrt((b*b)-(4*a*c));
printf("%.2f\n",delta);
//system("PAUSE"); Non va su unix.
if(delta<0)
printf("nessuna soluzione reale il delta e' %.2f\n\n",delta);
else if(delta==0){
x0 = -b/2*a;
printf("un unica soluzione %.2f",x0);
}
else{
x1= (-b-delta)/(2*a);
x2= (-b+delta)/(2*a);
printf("ha due soluzioni %.2f e %.2f",x1,x2);
}
printf("\n0 per terminare");
scanf("%d",&x);
if(x==0)break;
}
}
PS Usa i tag quote per il codice. Ultima modifica di blackgin : 06-02-2010 alle 10:57. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2009
Città: Saviano(NA)
Messaggi: 1018
|
ah okkei allora per la radice basta fare sqrt mi potresti indicare gli altri errori scusami ma sono alle prime armi
ps se la faccio gia dal delta non mi da problemi in caso di delta negativo ah e come si mette in tag code?
__________________
Un GRAZIE a tutti voi del forum che ogni giorno mi tirate fuori dai casini .......... Sto giocando a : Hitman Codename 47 |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 250
|
l'if col break mi pare che fosse fuori dal ciclo.
Poi c'era un errore di parentesi. Deve essere (-b+sqrt(delta))/(2*a) e non /2*a. Poi non c'é bisogno di mettere un if dentro un if per valutare il delta. Basta mettere if.. else if.. else.. Poi non ricordo sinceramente. Il tag CODE lo inserisci mettendo il testo dentro [*CODE]il testo va qui[/code] (senza *), oppure premendo l'apposito simbolo # nella barra degli strumenti del messaggio. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2009
Città: Saviano(NA)
Messaggi: 1018
|
grazie mille illuminate direi mi rimane solo un piccolissimo dubbio non ho ben capito la differenza nell' else if come l'hai usato tu e come avevo fatto io mi sebra che l'unica differenza e che io uso quache parentesi graffa in piu o mi sfugge qualkosa
ps grazie mille per il tempo dedicatomi
__________________
Un GRAZIE a tutti voi del forum che ogni giorno mi tirate fuori dai casini .......... Sto giocando a : Hitman Codename 47 Ultima modifica di peppozzolo : 06-02-2010 alle 13:19. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 769
|
Se non sbaglio anche per delta==0 devi mettere x0=-b/(2*a)
|
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Oct 2007
Messaggi: 250
|
Quote:
Ah e quello che dice Ale88 é vero. Va corretto anche lá.. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2009
Città: Saviano(NA)
Messaggi: 1018
|
beh sono agli inizi e poi avro sbagliato la sintassi non saro pulitissimo ma in generale mi apre che non si possa fare diversamente o sbaglio?
__________________
Un GRAZIE a tutti voi del forum che ogni giorno mi tirate fuori dai casini .......... Sto giocando a : Hitman Codename 47 |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 250
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Nov 2009
Città: Saviano(NA)
Messaggi: 1018
|
tu dici if annidato scusa c'e un altro modo per faro lo stesso programma senza annidare?
__________________
Un GRAZIE a tutti voi del forum che ogni giorno mi tirate fuori dai casini .......... Sto giocando a : Hitman Codename 47 |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 250
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2009
Città: Saviano(NA)
Messaggi: 1018
|
saro scemo io o forse non ci capiamo mma o scrivo else if o else{if istruzioni } non e uguale? e si tratta sempre di annidamento?
__________________
Un GRAZIE a tutti voi del forum che ogni giorno mi tirate fuori dai casini .......... Sto giocando a : Hitman Codename 47 |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 250
|
se scrivi else { if } l'if é annidato
invece nella sintassi Codice:
if(..){
..
}
else if(..){
..
}
else(..){
..
}
Invece in Codice:
if(..){
..
}
else(..){
if(..){
..
}
}
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Nov 2009
Città: Saviano(NA)
Messaggi: 1018
|
grazie mille adesso ho capito scusami per il disturbo e grazie ancora
__________________
Un GRAZIE a tutti voi del forum che ogni giorno mi tirate fuori dai casini .......... Sto giocando a : Hitman Codename 47 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:52.




















