Funzione che calcoli una potenza con esponente intero

di Anonimizzato14155 il
1 risposte
Ragzzi, scusatemi Non riesco a capire dov è l errore potete aiutarmi a trovarlo o trovarli se sono più di uno?? grazie mille
/* scrivere una funzione che calcoli una qualunque potenza con esponente intero maggiore o uguale a zero */
#include<stdio.h>
#include<stdlib.h>

int potenza (int, int);

int main() {
    
    int numero, esponente;
    char risposta[2];
    double pot;
    risposta[0] = 's';
    
    while(risposta[0] == 's') {
        printf("Dimmi il numero: ");
        scanf("%d", &numero);
        printf("Dimmi l'esponente: ");
        scanf("%d", &esponente);
        
        pot= potenza (numero, esponente);
        
        if(pot == -1)
            printf("Numero non elevato a potenza\n\n");
            else 
                printf("Il numero %d elevato alla %d e':  %d", numero, esponente, potenza);
        
        
        printf("Vuoi continuare (s/n)? :  ");
        scanf("%s", risposta);
    }
system("PAUSE");
return 0;
}

int potenza (int numero, int esponente) {
    int i, p;
    p = numero;
    int pote=1;
    if(esponente<0) return -1;
    if(esponente== 0) return 1;
    if(esponente== 1) return numero;
    if(esponente>1) {
        for(i=1; i<numero; i++) {
         pote =pote*p; 
        }
        return pote;
    }
} 
        
    
    
    
    

1 Risposte

  • Beh, ma non puoi cominciare tu dicendoci se hai errori (e quali) compilando ed eseguendo??

    In ogni caso, la variabile pot deve essere un intero e non un double

    int pot;

    nella visualizzazione devi usare la variabile pot altrimenti a che serve ?

    printf("Il numero %d elevato alla %d e': %d", numero, esponente, pot);

    e la funzione potenza è da rivedere completamente, così
    
    int potenza (int numero, int esponente) {
        int i;
    	int pote=1;
    
    	if(esponente<0) return -1;
        if(esponente == 0) return 1;
        
    	for(i=1; i<=esponente; i++)
            pote = pote*numero; 
    
    	return pote;
    }
    
Devi accedere o registrarti per scrivere nel forum
1 risposte