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!