Discussione: Esercizio C++
View Single Post
Old 18-08-2011, 13:45   #1
morpheus89
Senior Member
 
L'Avatar di morpheus89
 
Iscritto dal: Aug 2006
Città: Monaco di Baviera
Messaggi: 3233
Esercizio C++

Salve a tutti, mi sto esercitando con alcuni esercizi proposti da un libro per un esame di C++, dato che non ho trovato un thread ufficiale di questo linguaggio di programmazione vi chiedo qualche aiuto da qui.

Ho appena finito di leggere la teoria e sto cominciando a cimentarmi con un po' di esercizi.
In questo esercizio devo leggere un numero intero da tastiera e determinare se si tratta di un numero perfetto. Questo è quello che sono riuscito a combinare fino ad ora

Codice:
#include <iostream>
#include <math.h>
using namespace std;
bool perf (int a)
{
     int i=1;
     double p;
     vero: return true;
     while (i==a)
     {
           p = pow(2,i)*(pow(2,(i+1))-1);
           if (p==a) goto vero; break;
           i++;
     }
}
int main ()
{
    int n;
    bool v;
    cout << "Inserire un numero intero: ";
    cin >> n;
    v = perf(n);
    if (v == true) cout << "Il numero " << n << " e' un numero perfetto!\n";
    if (v == false) cout << "Il numero " << n << " NON e' un numero perfetto\n";
    system ("pause");
    return 0;
}
Ovviamente manca la parte in cui il programma avverte che la stringa digitata non è un numero (nel caso in cui si digitasse per sbaglio una lettera) e il return false nel caso non si riesca a trovare un valore 2^n · (2^(n+1) - 1) corrispondente.
Il programma restituisce come output "Il numero n e' un numero perfetto!" anche se questo non lo è.

Quali errori logici e di programmazione ho fatto?
morpheus89 è offline   Rispondi citando il messaggio o parte di esso