Domanda:
ciao, io ho un problema da risolvere in c !non riesco ad elevare a potenza
riccardo p
2008-08-01 04:45:19 UTC
devo creare un programma che mi elevi alla n(numero deciso dall'utente) il numero 2.
questo è il codice, ma poi non riesco andare avanti:
#include
#include

void main()

{
//dichiarazione variabili
int I; //variabile contatore
int n; //numero inserito dall'utente
int pot;
//acquisizione di n

do
{
cout<<"Inserire il numero delle potenze di 2 che si vogliono visualizzare: "< cin>>n;
}
while(n>2&&n<20);

cout<<"STAMPA DELLE PRIME "<
for(I=3; I<=n; I )
{
pot=pot*I; <------credo che l'errore sia qui...

ASPETTO SUGGERIMENTI..
PREMETTO KE SONO UNO STUDENTE DI 3 PROGRAMMATORI ITC, QUINDI NON FACCIO COSE COMPLESSE, DOVREI FARLO CON CICLI ITERATIVI.
GRAZIE MILLE
Quattro risposte:
TheCellarGuardian
2008-08-01 05:26:40 UTC
Guarda, un semplice programma che stampa il risultato di un elevamento a potenza (con base ed esponente interi) può essere questo:



#include

using namespace std;



int main(){



/* Dichiaro le variabili che mi occorrono */



int base;

int exponent;

bool negative_exponent = false;

double result;



/* Chiedo all'utente di inserire i valori */



cout << "Inserire la base: ";

cin >> base;

cout << endl;



cout << "Inserire l' esponente: ";

cin >> exponent;

cout << endl;



/* Analizzo l'esponente (nota: il programma esegue

SEMPRE almeno uno di questi if */



if(exponent < 0){ // Se l'esponente è negativo

negative_exponent = true; // Lo tengo a mente

exponent = -(exponent); // Cambio segno all' exp.

}



if(exponent == 0){ // Se l'esponente è 0

result = 1; // Conosco il risultato a priori

}



if(exponent > 0){ // Se l'esponente è > 0

result = base;

/* Moltiplico il risultato per la base tante volte quanto

più è grande l'esponente */

for(int i = 0; i < (exponent - 1); i++){

result = result * base;

}

}



if(negative_exponent == true){ // Se l'esponente era negativo

result = 1/result; // Il risultato è l'inv.

}



cout << "Il risultato è " << result << endl;

return 0;

}





Spero di esserti stato utile!
Roberto
2008-08-03 06:33:13 UTC
Siccome devi restituire 2 elevato alla n, la variabile pot dovrebbe essere inizializzata a 1; ossia la dichiari con:

int pot = 1;

nel ciclo for, poi, l'istruzione di incremento potrà essere:

for(I = 3; I <= n; I++)

{

pot = pot * 2;

}



così, nel ciclo for, se n = 1 viene restituito il valore pot = 1 * 2 = 2;

se n = 2 viene restituito il valore 4, e così via...
Tizio 008
2008-08-01 12:12:45 UTC
usa pow.

se per qualche misterioso motivo non puoi usarlo... se puoi usare i logaritmi, usa i logaritmi...

se ti è vietata una qualunque funzione... allora (senza memoizzazione... inefficiente!)





float elevami(int n)

{

int p = 2; int s=0;

if (n==0) return 1;

if (n<0) { s=1; n = -n; }

while (--n > 0)

{

p *= 2;

}

if (s==0) return p;

return 1.0/(float)p;

}





gestisce anche potenze negative, se non ti serve modifica il codice :) spero che sia giusto il loop... ;)
gino89ar
2008-08-01 11:49:11 UTC
è da 3 anni che non uso C ma credo che la potenza sia "pow"


Questo contenuto è stato originariamente pubblicato su Y! Answers, un sito di domande e risposte chiuso nel 2021.
Loading...