for (int i=0; i<anno; i++)
{
somma = somma * (1 + tasso / 100);
anno++;
}
cout << "Dopo "<< anno <<" anni, la somma sara' "<< somma <<" \n";
Togli anno++ perchè in questo modo entra in un ciclo infinito (a meno che anno == 0 e non esegue il ciclo)
...
Per il while
codice:
int i = 0
while ( i<anno)
        {
           somma = somma * (1 + tasso / 100);
           i++;
        }
..
Purtroppo sono negato per questo tipo di esercizi, quindi, non posso darti una mano per risolvere gli errori semantici ma solo quelli sintattici, ho notato:
1 + tasso / 100
questo pezzo di codice esegue tasso/100 e poi incrementa il risultato di 1, non so se va bene, ma so che spesso è un errore (magari volevi scrivere (tasso+1)/100)...
...
double valore_futuro(double p);
{
double b = somma * pow(1 + p / 100, anno);
return b;
}
anno e somma sono globali ? (ossia dichiarate prima del main)
se non lo sono (credo di aver capito che nn lo sono: "ho dichiarato le 3 variabili tra i 3cout e cin e poi ho chiuso in questo modo") mettile globali: prima della dichiarazione del prototipo è la "convenzione"