Newsgroup: it.comp.lang.c++
Titolo: Programmino...

Salve a tutti. Dove è sbagliato questo programma per trovare le radici di un
equazione di 2° grado? Mi ritorna sempre che non ci sono soluzioni reali!!
Grazie
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
void main ()
{
float a, b, c, d, DELTA = ((b*b)-(4*a*c));
cout << "Inserire il coefficiente a  ";
cin >> a;
cout << "Inserire il coefficiente b  ";
cin >> b;
cout << "Inserire il coefficiente c  ";
cin >> c;
d = sqrt (DELTA);
if ( DELTA > 0 ) {
float x1 = (-b-d)/(2*a), x2 = (-b+d)/(2*a);
cout << "I valori di x sono  ";
cout << x1   ;
cout << x2  <<endl;
                 }
else if ( DELTA = 0 )  {
float x = (-b)/(2*a);
cout << "La soluzione doppia e'  ";
cout << x <<endl;
                       }
else {
cout << "Non ci sono soluzioni reali " <<endl;
     }
system ("PAUSE");
}

Hai gia' postato questa domanda e ti e' pure gia' stato risposto. Che
posti a fare allora?
Ciao,
Nicola

 Grazie
Nuovamente ? Ma mettere qualche cout di debug per vedere se
i valori sono tutti quelli che ti aspetti ti sembra una cattiva idea ?
Ti era gia stato risposto mi spieghi perche' posti allora?
Ciao
Gaetano.
-- 
Posted from 
nts-03.mm.eutelsat.org
 [194.214.173.15] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Scusate.....
Ma se fanno tutti come voi che parlano parlano ma non spiegano niente, io
non ci capisco un acca!! Come la volta scorsa! Ad esempio non so di cosa
stai parlando quando dici "mettere qualche cout di debug "! E poi non mi
sembra che questo newsgroup si chiami it.comp.lang.c++professional!!!!
Vi ringrazio.
E poi dimenticavo. Su questo newsgroup ci sono 300000 post al giorno. Si
deve fare economia!!
Ma ci faccia il piacere!!!!!!


 > [CUT]
Ma se non sai neanche quotare... che ti lamenti se non sai programmare... 
8/
-- 
Luc.

Quotare????
Va bč va. Allora siete proprio cretini...
E tu per primo!!!



 Ti sei mai chiesto perche' tutti rispondono sotto il mess originale
invece che sopra come fai tu ?
In questo modo chi apre un post riesce a seguire il discorso
legendo dall'alto verso il basso e non al contrario.


 ha scritto nel messaggio
news:019b01c16dde$041496b0$4aeafea9@GMENDOLA2...


 L'altra volta era un programma per la ricerca del minimo!!!
Quota bene bimbo, come faccio io...
-- 
Luc.

aaaaaaaa....
un altro scienziato qui!!
"Luc" <XXX...@katamail.comXXX> ha scritto nel messaggio
news:MPG.165e0e89...@news.enter.it...


Grazie
Mi sembra che "DELTA" assegnato all'inizio sia sempre =0 (si deve
assegnare *dopo* che i valori di a, b, c sono assegnati);
in un if c'era DELTA = 0 invece di DELTA==0 (e il compilatore ci aiuta
con i warning);
Non capisco la "pause" finale.
Non sono un esperto di c++ (è il primo o il secondo programma che
faccio in c++ ) così mi scuso per gli errori.
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
void main ()
{
float a, b, c, d, delta;
cout << "Data l'equazione ax^2+bx+c=0 \n";
cout << "Inserire il coefficiente a: ";
cin >> a;
cout << "Inserire il coefficiente b: ";
cin >> b;
cout << "Inserire il coefficiente c: ";
cin >> c;
delta=((b*b)-(4*a*c));
if(delta>0)  d=sqrt(delta);
if(a==0 && b==0 && c==0) { cout << "Tutto R è soluzione." <<endl;}
else if(a==0 && b!=0){ cout << "La soluzione unica e' x=";
                                     cout << -c/b <<endl;
                                   }
else if ( delta>0 && a!=0) {
           cout << "I valori di x sono \n";
           cout << "x1=" << (-b-d)/(2*a) << endl;
           cout << "x2=" << (-b+d)/(2*a) << endl;
                                        }
else if ( delta==0 && a!=0){
           cout << "La soluzione doppia e' x=";
           cout << (-b)/(2*a) <<endl;
                                         }
else {
           cout << "Non ho trovato soluzioni reali " <<endl;
        }
}
Saluti

On Thu, 15 Nov 2001 18:30:25 GMT, hy...@sro.non.esiste (timmi) wrote:
oppure
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
void main ()
{
float a, b, c, d, delta;
char risposta;
for(;;)
{
 cout << "\nIo calcolo l'incognita x dell'equazione axı+bx+c=0\n";
 risposta='h';
 while ( risposta != 's' && risposta != 'n' ) {
                 cout <<"Devo continuare?(s/n) ";cin >> risposta;
                                                                }
 if(risposta=='n')return;
 cout << "\nInserire il coefficiente a: "; cin >> a;
 cout << "\nInserire il coefficiente b: "; cin >> b;
 cout << "\nInserire il coefficiente c: "; cin >> c;
 delta=((b*b)-(4*a*c));
 if(delta>0)  d=sqrt(delta);
 if(a==0 && b==0 && c==0) { 
              cout << "\nTutto R e' soluzione.\n" <<endl;
                                             }
 else if(a==0 && b!=0){ cout << "\nLa soluzione unica e' x=";
              cout << -c/b <<endl;
                                    }
 else if ( delta>0 && a!=0) {
           cout << "\nI valori di x sono \n";
           cout << "x1=" << (-b-d)/(2*a) << endl;
           cout << "x2=" << (-b+d)/(2*a) << endl;
                                        }
 else if ( delta==0 && a!=0){
           cout << "\nLa soluzione doppia e' x=";
           cout << (-b)/(2*a) <<endl;
                                           }
 else if(delta<0 && a!=0){
           cout<< "\nLe due soluzioni sono complesse coniugate:\n";
           cout<<"x1=["<<-b<<"-radice("<<delta<<")]/ "<<2*a<< endl;
           cout<<"x1=["<<-b<<"+radice("<<delta<<")]/ "<<2*a<< endl;
                                      }
 else{
           cout << "\nNon ho trovato soluzioni \n" <<endl;
        }
 }
}
Uno dei problemi che non sono riuscito a risolvere è svuotare il
buffer dello stream di input; come si fa???

buffer dello stream di input; come si fa???
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
int prendi_float(double *q)
{char ch, c[80];
 int n=0, led=0, i;/*mette in c[80] numeri e + e - e . una volta sola
                    trascurando gli spazi*/
 while((ch=(char)getchar())!=EOF && ch!='\n' && n<80)
    if(((ch>='0' && ch<='9')|| ch=='.'|| ch=='-'|| ch=='+') && led==0)
                                                      {c[n]=ch; n++;
                                                      }
    else 
     if(((ch>='0'&&ch<='9')||ch=='.'|| ch=='-'|| ch=='+' ) && led==1) 
                                                     {led=3; break;}
    else if(ch!=' ' &&  ch!='\t')  {led=3; break;}
    else if(n>0 && (ch==' ' ||  ch=='\t')) led=1;
 
 c[n]='\0';
 if(ch!='\n') while(getchar()!='\n');
            /*scarrica eventualmente il buffer*/
 if(led==3) return 0;
 led=0;
 for(i=0;i<n;i++){/*controlla il vettore*/
                  if((c[i]=='-'||c[i]=='+')&& i!=0) return 0;
                  if(c[i]=='.'&& led==0) led=1;
                  else if(c[i]=='.' && led==1) return 0;
                 }
 *q=atof(c);
 if(n<80 && n>=1 )return 1;
 else return 0;
}
void prendif(double *q)
{while(!prendi_float(q)) cout<<"Si richiede un numero; riprova: ";
}
void prendi_char(char a[],char b,char c, char *q)
{char ch, risposta;
for(;;)
 {cout <<a; 
  cin >> ch; 
  while( cin.get(risposta) && (risposta==' '|| risposta=='\t') );
  if((ch==b || ch==c )&& risposta=='\n') {risposta=ch; break;}
  if(risposta!='\n') while(cin.get(risposta)&& risposta!='\n'); 
 }
*q=risposta;
}
void main ()
{
double a, b, c, d, delta;
char risposta;
for(;;)
{
 cout << "\nIo calcolo l'incognita x dell'equazione axý+bx+c=0 \n";
 prendi_char("Devo continuare?(s/n) ",'s','n', &risposta);
 if(risposta=='n')return;
 cout << "\nInserire il coefficiente a: "; prendif(&a);
 cout << "\nInserire il coefficiente b: "; prendif(&b);
 cout << "\nInserire il coefficiente c: "; prendif(&c);


>Uno dei problemi che non sono riuscito a risolvere è ...
Ho ridifinito (limitatamente alla mia persona) la scala dei non-ot in
un gruppo che parla di un linguaggio di programmazione.
Sono in tema in ordine di importanza:
1) I programmi scritti in tale linguaggio
2) I programmi scritti in un altro linguaggio
3) Lo 'speudo codice' o la descrizione di procedure
4) Discussioni e critiche sugli aspetti del particolare linguaggio o
dei particolari programmi.
5) Richieste di aiuto per procedure o programmi.
Che ne pensate?

legendo dall'alto verso il basso e non al contrario.
E' un troll, lasciatelo perdere.
-- 
The Follet

 Che ne pensate?
Che basta e avanza il manifesto del newsgroup.
Ciao,
Nicola