Ir ao conteúdo

Posts recomendados

Postado

Escreva uma função que computa a potência a^b para valores a (real) e b (inteiro) passados por parâmetro sem usar a função pow. Use a função anterior e crie um programa que imprima todas as potências: 2^0; 2^1; :::; 2^10; 3^0; :::; 3^10; :::; 10^10.

#include <stdio.h>
int main(){
int i, n, pot;
scanf("%d",&n);
pot = 1;
i = 0;

while(i <= n){
printf("2^%d = %d\n",i,pot);
pot = pot *2;

i++;
}

}

só consegui calcular imprimir a potências de 2
Saída:
10
2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512
2^10 = 1024


Esperado:
de 2^0....  até ......10^10.

 

Algum help?


 

 

 

  • Triste 1
Postado
27 minutos atrás, Jose_Luiz disse:

só consegui calcular imprimir a potências de 2

 

Mas por que? você fez quase tudo certo. Basta substituir 2 por a, como pediu a questão. E mover o calculo pra uma função uma própria independente da main. Algo como,

 

float my_pow(const float a, const int n)

 

Apenas lembre-se de que pot deve ser real, float ou double.

  • Obrigado 1
Postado
3 horas atrás, V!OLADOR disse:

 

Mas por que? você fez quase tudo certo. Basta substituir 2 por a, como pediu a questão. E mover o calculo pra uma função uma própria independente da main. Algo como,

 


float my_pow(const float a, const int n)

 

Apenas lembre-se de que pot deve ser real, float ou double.

 

#include <stdio.h>

int potencia(int base, int expoente);
int main(){
  
int bas, exp, resultado;
 printf("Digite a base: ");
 scanf("%d", &b);

 printf("Digite o expoente: ");
 scanf("%d", &e);

 resultado = potencia(bas, exp);

 printf("%d elevado %d eh igual a %d\n", bas, exp, resultado);
 return 0;
}
int potencia(int base, int expoente){
 int temporaria, i;
 temporaria = 1; // atribui o primeiro valor para tmp

while(i < expoente){
  temporaria = temporaria * base;
  i++;
 }
 return temporaria ;
}

 

Acho que é isso, mais ainda falta imprimir todas as potencias do intervalo 2^0; 2^1; :::; 2^10; 3^0; :::; 3^10; :::; 10^10.

Postado

Bom, na verdade, agora há um erro: você guardou a base e o expoente nas variáveis b e e, mas deu as variáveis bas e exp, que estão vazias, pra função potencia. Talvez o que queira seja, por exemplo,

 

scanf("%d", &bas);

 

De fato esse código não deveria compilar porque você também esqueceu de declarar b e e. E por ultimo, o enunciado do problema exige que a base seja um numero real, não um inteiro como está a usar.

 

Por fim, ao invés de ler o expoente, leia um expoente máximo, e use um loop pra varrer os expoentes entre 0 e o máximo desejado.

  • Curtir 1
Postado
1 hora atrás, Jose_Luiz disse:

Acho que é isso, mais ainda falta imprimir todas as potencias do intervalo 2^0; 2^1; :::; 2^10; 3^0; :::; 3^10; :::; 10^10.

 

Depois das correções apontadas pelo @V!OLADOR, crie um loop que vai de 2 até 10 para exibir todas esses potências. Com duas variáveis faça os incrementos no loop para passar os valores delas como argumento da sua função potencia.

 

  • Curtir 1
Postado
3 horas atrás, Jose_Luiz disse:

 

 


#include <stdio.h>

float potencia(float base, int expoente);
int main(){
  
float bas, resultado; 
int exp;
 printf("Digite a base: ");
 scanf("%f", &bas);

 printf("Digite o expoente: ");
 scanf("%d", &exp);

 resultado = potencia(bas, exp);

 printf("%f elevado %d eh igual a %f\n", bas, exp, resultado);
 return 0;
}
float potencia(float base, int expoente){
 int temporaria, i;
 temporaria = 1; // atribui o primeiro valor para tmp

while(i < expoente){
  temporaria = temporaria * base;
  i++;
 }
 return temporaria ;
}

// Corrigido

 

Acho que é isso, mais ainda falta imprimir todas as potencias do intervalo 2^0; 2^1; :::; 2^10; 3^0; :::; 3^10; :::; 10^10.

 

2 horas atrás, Midori disse:

 

Depois das correções apontadas pelo @V!OLADOR, crie um loop que vai de 2 até 10 para exibir todas esses potências. Com duas variáveis faça os incrementos no loop para passar os valores delas como argumento da sua função potencia.

 

int i = 2;

while(i <=10)

......

i++;

 

realmente não estou sabendo implementar essa parte!!

Postado
4 horas atrás, Jose_Luiz disse:

 

int i = 2;

while(i <=10)

......

i++;

 

realmente não estou sabendo implementar essa parte!!

 

Ué, você escreveu o programa por conta própria? Porque aparentemente você não sabe fazer a parte mais simples.

 

Suponha que você queira fazer a potência dos expoentes entre n = 0 até n = 10, e temos uma variável, digamos n_max, pra guardar a potência máxima, n_max = 10. Então, bastaria

 

for (int n = 0; n <= n_max; ++n)
{
	resultado = potencia(bas, n);

	printf("%f elevado a %d eh igual a %f\n", bas, n, resultado);
}

 

Convenientemente, você poderia ler n_max com scanf. O mesmo com a base da potência, se desejar.

  • Obrigado 1
Postado
Em 10/10/2020 às 18:40, Jose_Luiz disse:

float potencia(float base, int expoente){ int temporaria, i; temporaria = 1; // atribui o primeiro valor para tmp

Declare variável temporaria como float para não estourar a capacidade no cálculo, e a variável int i é recomendável iniciar com 0.

 

Em 10/10/2020 às 18:40, Jose_Luiz disse:

int i = 2;

while(i <=10)

......

i++;

 

realmente não estou sabendo implementar essa parte!!

 

Não precisa declarar outra variável,  use as varáveis bas e exp.

 

A estrutura do loop pode ser assim,

 

bas = 2, exp = 0;
    
while(bas<=10){
    while(exp<=10){
        ...
        exp++;
    }
    exp = 0;
    bas++;
}

 

Postado

 

Em 10/10/2020 às 11:32, Jose_Luiz disse:

2^0; 2^1; :::; 2^10; 3^0; :::; 3^10; :::; 10^10.

 

Como fica isso em palavras, nessa altura @Midori tornou trivial, ainda sim, estou com vtd de falar.

 

Seria algo como: A partir {da Base 2 (de 0 até 10) até a Base 10}.

Um ‘loop’ chamado Base (2 até 10)

          Um ‘loop’ chamado Expoente (0 até 10)

 

Interessante é VOCÊ implementar o código com FOR, para vermos como faz.

"

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!