Newsgroup: it.comp.lang.c++
Titolo: fibonacci e potenze

problema 1:
#include <iostream.h>
main()
{
    int val,a,b,ris,esp;
    cout<<"Dammi il valore: ";
    cin>>val;
    cout<<"Dammi l'esponente: ";
    cin>>esp;
    for(a=val,b=0;b<=esp;b++){
        ris=(val)*(val);
        cout<<" "<<ris<<endl;
        }
}
Dovrei scrivere un programma che riceve 2 valori: un numero e l'esponente a
cui deve essere elevato,
ho provato cosě ma ottengo sempre il numero elevato alla seconda dove
sbaglio?
problema 2:
Ho provato anche a scrivere un programma che
calcoli i primi dieci numeri di fibonacci con la formula:
f(1)=1;
f(2)=1;
f(n)=f(n-2)+f(n-1);
per f(1) e f(2) ok ma poi mi spara dei numeri incredibili,mi potreste
aiutare?
Grazie mille

 aiutare?
ti conviene affrontare il problema con una funzione ricorsiva.
--
Lupin85©
Azzurranet IRC: +#afiad, @#fils - ICQ: 91528290
Mail: Remove PAN to contact me
- "It is not important what you believe, only that you believe." -

 per f(1) e f(2) ok ma poi mi spara dei numeri incredibili
    La serie di Fibonacci cresce con andamento esponenziale, quindi se usi
degli interi vai rapidamente out of range.
    La formula doppiamente ricorsiva e' inefficiente.
    Se ti servono tutti i numeri della serie troncata, metteli in un array
man mano li calcoli.
    Se invece ti serve solo l'ennesimo termine, memorizza gli ultimi due
numeri della serie in due variabili temporanee,
metti la loro somma in una terza variabile e shifta le variabili (cioè copia
la terza al posto della seconda e la seconda al posto della prima).

 [fibonacci]
-----begin code
#include <iterator>
#include <iostream>
#include <algorithm>
class fibo {
private:
  unsigned long penultimo;
  unsigned long ultimo;
public:
  fibo() : penultimo(0), ultimo(0) {}
  unsigned long operator() () {
    unsigned long questo = ultimo ? ultimo + penultimo : 1;
    penultimo = ultimo;
    return ultimo = questo;
  }
};
int main() {
  const unsigned int number(10);
  std::cout << "I primi " << number << " numeri di Fibonacci sono: ";
  std::generate_n(std::ostream_iterator<unsigned long>(std::cout, " "),
                  number, fibo());
  std::cout << std::endl;
}
-----end code
ricorda che, quando presenti il compito, devi spiegare a puntino TUTTO
quello che c'e' ...
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy          loreti at pd dot infn dot it


#include<iostream.h>
int fib (int n) {
 if (n==1) return 0;
 if (n==2) return 1;
 return fib (n-1) + fib(n-2);
}
void main () {int n;
 cout<<"inserire l'ennesimo numero del qualse si desidera la successione di
Fibonacci"<<endl;
 cin>>n;
 for (int i=1; i<=n; i++)
  cout<<i<<'\t'<<fib(i)<<endl;
}


Non ci posso credere.......funziona........
Per favore semmai ti dovessi trovare a dover dare una risposta del genere a
me, non lo fare!
Starei settimane a capire cosa hai fatto, meglio l'ignoranza alla
confusione!
Emanuele

 void main () {
int main() {
Queste cose vengono ripetute 2-3 volte al giorno, basterebbe leggere
i messaggi delle ultime ore per evitare di postare sempre gli stessi
errori e insegnare cose sbagliate.
        Mauro

 confusione!
bé, pensaci un attimo:
perché il prof. Loreti ha dato questa soluzione al tipo in questione?


 aiutare?
int fibo (int n)
{
        if (n == 1 || n == 2)
                return n;
        else
                return f (n - 2) + f (n - 1);
}
-- 
Andrea Bergia - studente          Linux Registred User #281550
Per favore non mandatemi allegati in Word o PowerPoint.
Si veda 
http://www.fsf.org/philosophy/no-word-attachments.html

Grazie mille a tutti