Oppure

Loading
28/05/10 18:33
simone97
#include <iostream>
#include <cmath>
using namespace std;


int main(){
	double rad;
	float b, e;

	cout<<"Inserisci la base: ";
	cin>>b;
	cout<<"\nInserisci l'esponente: ";
	cin>>e;
	
	rad = pow(b, 1.0 / e);
	cout<<endl<<"La radice e': "<<rad<<endl;

	system("pause");
}


mi evidenzia POW, eppure la cmath l'ho inclusa, dov'è il problema??
aaa
28/05/10 18:49
nessuno
double rad, b, e;
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
29/05/10 10:51
HeDo

è un problema di cast, nè di pow nè di visual c++ :)
aaa
29/05/10 11:36
simone97
grazie :k:
aaa
07/06/10 8:32
BlueWay
E in ogni caso, se una funzione standard non viene riconosciuta dal compilatore, ti conviene riscrivertela da te. Non era questo il caso (qui l'errore era tuo), ma la funzione pow potrebbe essere riscritta così:
template<class T> double pow2(T &num, int exp)
{
	double num2;
	int i = 0;
	for(i = 0; i < exp; i++)
	{
		num2 = num * num;
	}
	return num2;
}


In questo modo, non avresti piu il problema del tipo: la funzione accetterebbe qualunque tipo e ritornerebbe sempre un double. Unico problema: accetterebbe anche un tipo non numerico, e li sarebbe da implementare meglio, ma al momento puo bastare
aaa
07/06/10 8:45
nessuno
Non credo che sia una buona idea riscrivere le funzioni (già scritte e ottimizzate) della libreria standard.

Se un compilatore non le prevede, non è proprio così standard e quindi non è da utilizzarsi (ma da buttare nel secchio).

Anche perchè si fanno tanti errori nel riscrivere le funzioni già esistenti ... come hai fatto tu ...

Nella riga

num2 = num * num;

infatti, num2 sarà sempre uguale al quadrato di num, per quanto tu possa farla eseguire all'interno di un ciclo (a questo punto, inutile).

Un consiglio ... non riscropriamo l'acqua calda ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
07/06/10 8:48
HeDo
Postato originariamente da BlueWay:

E in ogni caso, se una funzione standard non viene riconosciuta dal compilatore, ti conviene riscrivertela da te. Non era questo il caso (qui l'errore era tuo), ma la funzione pow potrebbe essere riscritta così:
template<class T> double pow2(T &num, int exp)
{
	double num2;
	int i = 0;
	for(i = 0; i < exp; i++)
	{
		num2 = num * num;
	}
	return num2;
}


In questo modo, non avresti piu il problema del tipo: la funzione accetterebbe qualunque tipo e ritornerebbe sempre un double. Unico problema: accetterebbe anche un tipo non numerico, e li sarebbe da implementare meglio, ma al momento puo bastare


Mah... quel codice non porta nessuna parte :)


int temp = 1;

for (int n = 0; n < exp; n++) {
    
    temp *= num;
    
} 

return temp;



aggiungo una piccola nota: prima di reimplementare librerie almeno si dedichi 10 minuti al testing...
aaa
07/06/10 10:40
BlueWay
Ops..... ho pubblicato un codice sbagliato :d Chiedo scusa :d
Ecco il codice corretto:

template<class T> double pow2(T &num, int exp)
{
    double num2 = 1;
    int i = 0;
    for(i = 0; i < exp; i++)
    {
        num2 *= num;
    }
    return num2;
} 
Ultima modifica effettuata da BlueWay 07/06/10 10:42
aaa