Problema calcolo potenza

di il
13 risposte

Problema calcolo potenza

Ho trovato l'algoritmo che calcola la potenza data una base e un esponente di numeri interi positivi, l'unico probelma è che non capisco la parte relativa al ciclo. Posto sotto il codice con le parti che non capisco commentate. Potete aiutarmi per favore? Grazie in anticipo.

#include <iostream>
#include <stdlib.h>
using namespace std;

int base;
int esponente;
int i;
int potenza;

main()
{    do{
        cout<<"Inserisci la base: ";     
        cin>>base;
      }while(base<2);
            do{
             cout<<endl<<"Inserisci l'esponente: ";
             cin>>esponente;
            }while(esponente<0);
            cout<<"le potenze sono: 1";
            if(esponente!=0)
            {
                potenza = base;                    //Non capisco questo assegnamento.In che senso la base viene assegnata al valore finale della potenza?
                cout<<","<<base;
                for(i=1; i<esponente; i= i+1)           //Il valore dell'incremento della i cosa significa nel programma? In che modo con questo ciclo la base                            
                {                                                    //viene moltiplicata tante volte quanto è l'esponente?
                    
                    potenza = potenza*base;         //Non capisco questa operazione:per quale valore della potenza viene moltiplicata la base?
                    cout<<","<<potenza;
                }

            }
  system("pause");
  return 0;
}

13 Risposte

  • Re: Problema calcolo potenza

    A prescindere dal programma in C, tu sai come si ottiene la potenza di di

    base elevato ad esponente

    ?

    Quali sono i passi che faresti "a mano"?
  • Re: Problema calcolo potenza

    E' proprio questo che mi intrippa, se mi chiedessero di fare tutti i passi a amno non saprei neanche da dove cominciare. Per caso è una tecnica complessa oppure ci si arriva intuitivamente magari sfruttando la matematica. Sò che un algoritmo deve essere composto da un numero finito di istruzioni semplici, quindi mi chiedo quali sarebbero questi semplici passi da fare per moltiplicare un numero a b-volte.
  • Re: Problema calcolo potenza

    Perdonami ... ma io ti chiedevo il metodo che si studia a scuola ...

    Tu sai cosa è una potenza ... altrimenti è ovvio che non comprendi l'algoritmo e il codice ... non è una questione di programmazione ...
  • Re: Problema calcolo potenza

    Si la potenza è composta da una base e un'esponente e l'eponente indica quante volte la base và moltiplicata per se stessa per esempio se la base è 2 e l'esponente è 3 significa moltiplicare il due su se stesso per 3 volte il che dà 8. Il problema è capire come spiegare questo calcolo al computer.Come avrai capito da altri post non mi riesce facile a lavorare con i cicli specialmente quando trovo dei codici già pronti con variabili definite da altri senza spiegazioni. Come dovrei guidare passo a passo il programma per fare questo calcolo?
  • Re: Problema calcolo potenza

    Quindi, nel tuo esempio, se

    base = 2
    esponente = 3

    devi fare un ciclo usando la variabile esponente (perché devi fare 3 volte il prodotto ...) e il ciclo è
    for(i=1; i<esponente; i= i+1)
    in cui i conta da 1 a esponente

    e devi moltiplicare sempre per base accumulando il valore nella variabile potenza, ovvero
    potenza = potenza*base;
    questa sarà ripetuta 3 volte in questo modo

    potenza = 1 * 2
    potenza = 2 * 2
    potenza = 4 * 2

    risultato 8
  • Re: Problema calcolo potenza

    Ahh adesso ho capito grazie mille chiarissimo come sempre nelle spiegazioni, ma solo io ho queste difficoltà nell'impostare i cicli per risolvere i problemi? Un consiglio per superare questo PROBLEMA?
  • Re: Problema calcolo potenza

    Studia la parte teorica (mi sembra che tu non lo faccia), scomponi i problemi in piccoli sotto problemi, fai tanti esercizi.

    Non c'è un modo "magico" per riuscire. Ci vuole tempo, studio e pazienza. Poi dipende dai tuoi obiettivi finali
  • Re: Problema calcolo potenza

    Scusa ancora ma ho trovato un altro codice che calcola la potenza senza asseganre la base al valore finale della potenza prima del ciclo for.Come mai funziona? Se metto prima del for risultato=b mi dà grossi errori, non capisco la differenza logica tra i due codici. A volte non capisco come funzionano sti programmi pazzerelli.
    
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    int main(){
    
    int x = 0;    //base
    int y = 0;    //esponente
    int risultato = 1;
    
    cout<<"Inserisci la base\n";
    cin>>x;
    cout<<"inserisci l'esponente\n";
    cin>>y;
    cout<<"\n";
                                                 // qui manca risultato=base
    for(int i = 0; i < y; i++)
    {
        risultato *= x;
    }
    
    cout << result << endl;
    
    	system("PAUSE");
    	return 0;
    }
    
    
    
  • Re: Problema calcolo potenza

    Risultato è inizializzato a 1 e il ciclo for parte da i = 0, quindi al primo ciclo farà 1*base = base.
  • Re: Problema calcolo potenza

    Grazie per il chiarimento, quindi se non specifico il valore di una variabile e sott'inteso 0?
  • Re: Problema calcolo potenza

    No
    for(int i = 0; i < y; i++)
    Come puoi notare la variabile i è stata inizializzata a 0
  • Re: Problema calcolo potenza

    @olegfresi, ti conviene usare un approccio basato piu' sullo studio che non sull'analisi del codice pescato su Internet.

    C'e' un modo INFINITAMENTE piu' efficiente di calcolare la potenza:

    1) con il tuo metodo, per calcolare 2^1000 (non si puo' calcolare con gli interi, i long o i float, ma si puo' calcolare con i double), devi eseguire il cliclo la bellezza di 1000 (MILLE) volte
    2) esiste un metodo alternativo, che sfrutta il fatto che i numeri possono essere rappresentati in forma binario, che esegue il ciclo SOLO 10 volte

    Cioe' il secondo metodo e' CENTO VOLTE PIU' EFFICIENTE del tuo

    Quindi, la domanda che ti dovresti porre e': QUALE e' questo metodo e PERCHE" funziona?
  • Re: Problema calcolo potenza

    Bhe, penso qualcosa come elevo prima a 10 ed esegue i cicli poi di nuovo a 10 ed eseguo i cicli e poi di nuovo a dieci.Se c'è un metodo avanzato, io ancora sono alle basi quindi non lo capirei.
Devi accedere o registrarti per scrivere nel forum
13 risposte