1
resposta

Calculo de potencia

# include <stdio.h>
#include <stdlib.h>

void potencia(int x, int y){

int resultado = x;

switch (y){
    case 0:
    resultado = 1;
break;
}

for(int i=1; i<y; i++){
    resultado *=x;
}

printf("%d ^ %d = %d\n", x, y,resultado );

}

int main(){

int a = 2;
a = abs(a); 
int b = 10;
b = abs(b);

potencia(a,b);

}
1 resposta

Olá!

Pelo código que você compartilhou, parece que você está tentando implementar uma função para calcular a potência entre dois números. No entanto, notei que o seu código possui um switch case que só trata o caso em que y é igual a 0, atribuindo 1 ao resultado.

Para calcular a potência corretamente, você precisa fazer um loop para multiplicar x por ele mesmo y vezes. No seu código, você já está fazendo isso com o loop for, mas você está multiplicando x por ele mesmo y-1 vezes, pois o loop começa em 1 e vai até y-1. Para corrigir isso, você pode alterar a condição do loop para i <= y.

Além disso, notei que você está usando a função abs() para garantir que os valores de a e b sejam positivos. No entanto, nesse caso, não é necessário, pois a função abs() retorna o valor absoluto de um número, ou seja, o seu código já está considerando a e b como positivos.

Aqui está o código corrigido:

#include <stdio.h>

void potencia(int x, int y) {
    int resultado = 1;

    for (int i = 1; i <= y; i++) {
        resultado *= x;
    }

    printf("%d ^ %d = %d\n", x, y, resultado);
}

int main() {
    int a = 2;
    int b = 10;

    potencia(a, b);

    return 0;
}

Agora o código deve calcular corretamente a potência entre a e b. Por exemplo, com os valores a = 2 e b = 10, o resultado será 1024.

Espero ter ajudado e bons estudos!