Calcolatrice in c++

Be_CiccioMsn
Buonasera,ho dei problemi con questo programma che mi calcoli le disequaioni di primo e secondo grado. In quelle di primo grado mi dice che utilizzo la variabile x senza inizializzarla; in quelle di secondo nel momento in cui metto a<0 nelle soluzioni mi porta l'intervallo sbagliato.Potete aiutarmi a trovare l'errore? Sono ore che ci sbatto ma niente,grazie mille per l'attenzione.

#include <iostream>
#include <math.h>
#include <time.h>
#include <stdlib.h>
#include <cstdlib>
#include <string>


using namespace std;



void dis_di_primo_grado()
{
  	float a,b,x1,x;

    
cout << "Inserisci il coefficiente"<<endl;
cin >> a;
cout << "Inserisci il termine noto "<<endl;
cin >> b;

if(a*x>-b)	
{
	if(a>0)
{
		x1 >-b/a; 
      
		cout << "il risultato è x> " << x1 <<endl;
 }

else if (a<0)
{  
	x1 <b/a;
	cout<<"il risultato è x<"<< x1 <<endl;
}
}

if(a*x<-b)
{
	if(a>0)
{
		x <-b/a; 
      
		cout << "il risultato è : " << x <<endl;
 }

else if (a<0)
{  
	x >-b/a;
	cout<<"il risultato è:"<< x <<endl;
}
}

system ("pause");
}

void dis_di_secondo_grado()
{
	float a, b, c,  delta,delta1, x1, x2,x ;

 cout<<"inserisci a"<<endl;
 cin>>a;

 cout<<"inserisci b"<<endl;
 cin>>b;

 cout<<"inserisci c"<<endl;
 cin>>c;
 
 delta=(b*b - 4.*a*c);
 
 
 cout<<"il delta è:"<<delta<<delta1<<endl;
  
  cout<<"Disequazione generale di riferimento: ax^2 + bx + c > 0"<<endl;
  
  if(a>0)
  {
    if( delta < 0 )
	{
      cout<<"la disequazione assume tutti valori reali di x"<<endl;
 
    }
 
    else if(delta>0)
	{
        
		x1 = (-b - sqrt(delta)) / (2.*a);
        
		x2 = (-b + sqrt(delta)) / (2.*a);
     
		cout<<"le soluzioni sono x <  " << x1 <<   "  x >"<<x2<<endl;
        
	
	}
 
 else if(delta==0)
   {
        x=-b/2.*a;
	
	    cout<<"ogni X appartenete a R -  "<<x<<endl;
   }
  }	

  
    
  if(a<0)
{
  if(b>0 && c>0)
{
 
        x1 = (b - sqrt(delta)) / (-2.*a);
        
		x2 = (b + sqrt(delta)) / (-2.*a);
     
		cout<< x1  << "<x<" << x2 <<endl;
        
	
}
  if(b<0 && c>0)
  {    
	    x1 = (b - sqrt(delta)) / (-2.*a);
        
		x2 = (b + sqrt(delta)) / (-2.*a);
     
		cout<<  x1   << " < x <" <<   x2  <<endl;
        
  }
 
  }
 
 system("pause");
}

Risposte
DajeForte
Allora io non sono un esperto.

Per prima cosa quando scrivi un codice ti conviene includerlo nei
[/code] che si capisce meglio.<br />
<br />
Per il primo è vero non hai inizializato x e quindi quando fai if(ax>b) va in palla.<br />
Daltronde non credo sia necessaria una cosa del genere (o meglio dipende dal programma che vuoi fare).<br />
<br />
Io farei una cosa del tipo:<br />
<br />
[code]
cout "Questo progr risolve le diseq di primo nella forma ax>b \n"
Inserisci a
b

if a>0
l'insieme delle sol è x>b/a

if ....

Be_CiccioMsn
mmm capito,ma come la dovrei inizializzare allora? volevo fare così per essere ordinato

vict85
"the world":
mmm capito,ma come la dovrei inizializzare allora? volevo fare così per essere ordinato


C'é il pulsante Code se sei nella modalità avanzata. Altrimenti lo puoi fare manualmente come scritto sotto.

[code]scrivi qui dentro il tuo codice.

P.S: L'indentazione la devi fare tu con gli spazi.
[/code]

Be_CiccioMsn
Non ho capito; io mi riferivo a fare ordinato il programma!

vict85
E a cosa pensi mi sia riferito io? Ti ho detto qual'è il tag da usare.

Be_CiccioMsn
Non ho capito...

hamming_burst
"the world":
Non ho capito...

vict85 ti consigliava (te lo consiglio pure io) di circondare il tuo codice del primo post con i tag [code], così da renderlo almeno leggibile. Se lo lasci così, come puoi vedere anche te, è inguardabile e non mantiene l'indentazione. E' per aiutare chi cerca di aiutarti a non perder ore a capire dove inizia uno scoping e finisce l'altro.

Be_CiccioMsn
Ah, scusate.... per identazione che si intende??

vict85
Per una definizione: http://it.wikipedia.org/wiki/Indentazione

Comunque il tuo codice ha poco senso. A mio avviso ti conviene passare ad un problema più piccolo come risolvere equazioni di primo grado, renderlo compilabile e poi passare alle disequazioni. Comunque manca il main.

Be_CiccioMsn
Le soluzioni delle disequazioni di primo grado escono a metà perché non riesco a far scegliere quale risolvere se quella ax+b>0 o

vict85
"the world":
Le soluzioni delle disequazioni di primo grado escono a metà perché non riesco a far scegliere quale risolvere se quella ax+b>0 o

Ci sono vari metodi: usare un enumerazione per esempio in input (che è meglio di usare i vari cout a mio avviso per qualcosa che sembra una libreria). Un altro consiste nel caricare in una stringa quello che scrive l'utente e “analizzarla”. Ma ce ne sono altri.

Be_CiccioMsn
ad esempio cin>>premi1 per risolvere ax+b>0,2 per risolvereax+b<2;?

vict85
Si, quello era un metodo... Anche se ci metterei un cout per quello e un cin per leggere il numero.

P.S: Di tutte quelle librerie usi solamente iostream e stdlib (e quest'ultimo solo per il pressoché inutile system("pause"))...

Be_CiccioMsn
mettendo il cout e il cin non mi funziona....devo percaso mettere qualcosa vicino a "if(ax+b)" affinché funzioni il cout??

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.