Informática, perguntado por zeravhatake, 5 meses atrás

*por favor me ajuda a resolver isso em c*
Faça um algoritmo para calcular um valor A elevado a um expoente B. Os valores A e B deverão
ser lidos. Não usar A** B.

Soluções para a tarefa

Respondido por annelivia
1

Resposta:

include <stdio.h>

int main()

{

int a, b, res = 1, aux;

printf("Digite o valor de a: ");

scanf("%d", &a);

printf("Digite o valor de b: ");

scanf("%d", &b);

aux = b;

// enquanto aux for diferente de 0

while(aux--) {

res*=a;

}

printf("%d ^ %d = %d", a, b, res);

return 0;

}

Explicação:

o processo do cálculo de A elevado a B está sendo efetuado dentro do while, onde realiza-se a multiplicação do valor A, B vezes.

o valor de B é decrementado a cada loop. ao ser igual a 0, o loop será finalizado. 0 == false.

lembrando que o decremento (--) após a variável, permite que o valor atual da variável seja avaliado primeiro para então realizar o decremento do valor.

exemplo do funcionamento do algoritmo:

A = 2

B = 3

while B(3)--

res(1)*=A(2); // res será 2

while B(2)--

res(2)*=A(2); // res será 4

while B(1)--

res(4)*=A(2); // res será 8

while B(0)--, não entra no laço, pois 0 é igual a falso.

res terminou portanto com o valor de 8.


zeravhatake: por qual motivo você utilisou o aux??, não tem problema declarar a variavel e ao mesmo tempo colocar um valor nela ?
annelivia: o aux foi utilizado apenas como variável auxiliar, para não decrementar o valor diretamente na variável b. E não tem problema declarar variável e já armazenar um valor.
zeravhatake: entendi, muito obrigado pela ajuda
annelivia: :)
Perguntas interessantes