RISOLTO [C++] Sqrt not declared in this scope

Pubblicità

Daviyk

Nuovo Utente
Messaggi
2
Reazioni
0
Punteggio
2
Salve ragazzi, inanzitto mi presento mi chiamo Davide, stavo creando un semplice programma solo che ho riscontrato un errore...
Stavo svolgendo un problema molto semplice che riguarda lo stampare delle soluzioni di un'equazione di secondo grado, solo che mi da il problema:
main.cpp:29:28: error: ‘sqrt’ was not declared in this scope.
Sapreste dirmi come risolvere ciò?

C:
#include <iostream>

using namespace std;

int main()
{
float a, b, c, soluzione1, soluzione2, delta;
    cout<<"inserisci il primo valore dell'equazione di secondo grado: "<<endl;
        cin>>a;
    cout<<"inserisci il secondo valore dell'equazione di secondo grado: "<<endl;
        cin>>b;
    cout<<"inserisci il terzo valore dell'equazione di secondo grado: "<<endl;
        cin>>c;
    delta=(b*b)-4 + (a*c);
    if (delta<0)
    {
        cout<<"numeri non reali, soluzioni impossibili"<<endl;
    }else
        cout<<"ok, i numeri sono reali"<<endl;
 
    soluzione1= (b*(-1))+ (sqrt(delta))/2
    soluzione2= (b*(-1))- (sqrt(delta))/2
    cout<<"le soluzioni sono: "<<soluzione1<<soluzione2<<endl;
 
     
     
 
    return 0;
}
 
Ultima modifica da un moderatore:
Stavo svolgendo un problema molto semplice che riguarda lo stampare delle soluzioni di un'equazione di secondo grado, solo che mi da il problema:
main.cpp:29:28: error: ‘sqrt’ was not declared in this scope.
Sapreste dirmi come risolvere ciò?


#include <iostream>

using namespace std;

int main()
{
float a, b, c, soluzione1, soluzione2, delta;
cout<<"inserisci il primo valore dell'equazione di secondo grado: "<<endl;
cin>>a;
cout<<"inserisci il secondo valore dell'equazione di secondo grado: "<<endl;
cin>>b;
cout<<"inserisci il terzo valore dell'equazione di secondo grado: "<<endl;
cin>>c;
delta=(b*b)-4 + (a*c);
if (delta<0)
{
cout<<"numeri non reali, soluzioni impossibili"<<endl;
}else
cout<<"ok, i numeri sono reali"<<endl;

soluzione1= (b*(-1))+ (sqrt(delta))/2
soluzione2= (b*(-1))- (sqrt(delta))/2
cout<<"le soluzioni sono: "<<soluzione1<<soluzione2<<endl;




return 0;
}
Ciao ti chiedo di modificare il titolo gentilmente, usa uno un po' più sintetico, ad esempio:
[C++] Sqrt not declared in this scope
dovrebbe essere più che significativo.
Inoltre il forum mette a disposizione i tag
[CODE'=C][/CODE']

Questi permettono l'interpretazione del testo come codice c (C++ non c'è). Dovrai rimuovere l'apice singolo dopo code per farsì che funzionino
Il problema in questo caso è che non hai incluso la libreria cmath, dovresti fare un include come fatto per iostream.
Inoltre non vorrei essere pignolo, ma in caso di delta negativo, le soluzioni non sono impossibili, ci sono, ma in altri insiemi(lasciando perdere i coefficienti). La print corretta sarebbe: Non esistono soluzioni appartenenti ad R.

Un'altra soluzione che posso darti oltre quella di importare l'intera libreria per una funzione banale è suggerirti di considerare la radice n-esima di un numero come l'inverso dell'elevamento a potenza. Data la semplicità dell'esercizio potresti optare per questa via...
 
Ultima modifica:
Ciao ti chiedo di modificare il titolo gentilmente, usa uno un po' più sintetico, ad esempio:
[C++] Sqrt not declared in this scope
dovrebbe essere più che significativo.
Inoltre il forum mette a disposizione i tag
[CODE'=C++][/CODE']
Questi permettono l'interpretazione del testo come codice c++. Dovrai rimuovere l'apice singolo dopo code per farsì che funzionino
Il problema in questo caso è che non hai incluso la libreria cmath, dovresti fare un include come fatto per iostream
Grazie mille
 
A parte le correzioni suggerite, c’è un errore nel calcolo del Delta, c’è una somma invece di una moltiplicazione.

Per la cronaca, “#include” Non include la libreria matematica ma solo un file con le definizione.
 
qualche suggerimento:
- usa double invece di float
soluzione1= (b*(-1))+ (sqrt(delta))/2
soluzione2= (b*(-1))- (sqrt(delta))/2
mmmh, richiami 2 volte la funzione del calcolo di radice quadrata, basta farlo una volta (a proposito, manca il ";" alla fine dell'istruzione);
non fare la moltiplicazione per (-1), basta cambiare il segno a b
C++:
double r = sqrt(delta);
soluzione1= (-b-r)/2;
soluzione1= (-b+r)/2;
 
Pubblicità
Pubblicità
Indietro
Top