Ir para conteúdo
Fórum Script Brasil
  • 0

Operador


Ale

Pergunta

12 respostass a esta questão

Posts Recomendados

  • 0

essa talvez seja uma forma "lusitana", mas e se você fizer um for para o num do expoênte ao qual você quer elevar?

tipo, potência de 5:

for(i=1; i<6; i++) {

novo_num*=num_original;

}

daí você faz as condições para expoente zero, par e impar e essas coisas.

...eu não sei se a estrutura desse meu for tá certa, é q faz um tempão q eu nem olho pra cara do c/c++ ....mas deu pra entender???? ...será q funúncia????? huh.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui está um exemplo de função de potência:

#include <iostream.h>
int enesima (int x, int n){
    int inicial = x;
    if (n == 1){
             return x;
    }    
    else if (n==0){
             return 1;
    }
    else if (n < 0){
             cout<<"não é permitido calcular potencia de numero negativo"<<endl;
             cout<<"O resultado corrente representara nulo."<<endl;
             return '\0';
    }
    else{
           for (int i=2; i <= n; i++){
                             x = x * inicial;
           }
    return x;
	}   
}
int main(){
	int x,n;
	printf("Insira o valor: ");
	scanf("%d",&x);
	printf("Elevado a: ");
	scanf("%d",&n);
	printf("O resultado corrente é: %d\n",enesima(x,n));
	system("pause");
	system("cls");
	return 0;
}

Nesse exemplo, misturei C com C++

cara, se não me engano, existe uma função C que já calcula a potência pra vc. pow (int,int);

Dá uma testada aí...

Link para o comentário
Compartilhar em outros sites

  • 0
cara, se não me engano, existe uma função C que já calcula a potência pra vc. pow (int,int);

Dá uma testada aí...

Como o bono citou alem da funcao que ele descreveu existe um meio mais facil...

Confirmando:

pow(int,int)

Correto!!!

é só...

Link para o comentário
Compartilhar em outros sites

  • 0

tb da pra fazer assim:

int potencia(int num, int exp){
 int result = 1;
 int i;
 if (exp > 0) for (i = 0; i < exp; i++) result *= num;
 else for (i = 0; i > exp; i--) result /= num;
 return result;
}

dependendo da situacao você pode por o codigo dentro da funcao q precisa da poteincia... dai fica ateh mais rapido...

Link para o comentário
Compartilhar em outros sites

  • 0

Que tal relsolver recursivamente? Admito que recursividade não o meu forte (ao contrário, é o meu ponto fraco), mas esse problema é de simples resolução recursiva.

Vamos ao código:

float f( float base, int expoente )

{

  if ( expoente == 0 )

    return 1;

  else

    return ( base * f( base, expoente - 1 ) );

}

E quanto à função pow, acho que o protótipo dela é pow( double, double ).

Até mais!

Link para o comentário
Compartilhar em outros sites

  • 0

// tentei desse jeito mas diz q houve uma referencia indefinida á pow... !?

float pot()
{
float a, b, x;
printf("\nvalor: ");
scanf("%f", &a);
getchar();

printf("elevar á: ");
scanf("%f", &b);
getchar();

if ( b == 0 )
{
printf("\n\tExpoente inválido !");
menu();
}
else
{
x=pow(a,b);
}
printf("\nRESUL: %f\n", x);
}

Link para o comentário
Compartilhar em outros sites

  • 0

// tah incluida ! =)

// ...

// é uma calc q to fzd.

#include <stdio.h>
#include <math.h>

float pot()
{
float a, b, x;
printf("\nvalor: ");
scanf("%f", &a);
getchar();

printf("elevar á: ");
scanf("%f", &b);
getchar();

if ( b == 0 )
{
printf("\n\tExpoente inválido !");
menu();
}
else
{
x=pow(a,b);
}
printf("\nRESUL: %f\n", x);
}

float soma()
{
float a, b, x;
printf("\nvA: ");
scanf("%f", &a);
getchar();

printf("\nvB: ");
scanf("%f", &b);
getchar();

x = a + b;

printf("\nRESUL: %f\n", x);
}

float sub()
{
float a, b, x;
printf("\nvA: ");
scanf("%f", &a);
getchar();

printf("\nvB: ");
scanf("%f", &b);
getchar();

x = a - b;

printf("\nRESUL: %f\n", x);
}

float muti()
{
float a, b, x;
printf("\nvA: ");
scanf("%f", &a);
getchar();

printf("\nvB: ");
scanf("%f", &b);
getchar();

x = a * b;

printf("\nRESUL: %f\n", x);
}

float div()
{
float a, b, x;
printf("\nvA: ");
scanf("%f", &a);
getchar();

printf("\nvB: ");
scanf("%f", &b);
getchar();

x = a / b;

printf("\nRESUL: %f\n", x);
}

int menu()
{
int a;
int m;
printf("\nOpcões: \n\t(1) +\n\t(2) -\n\t(3) *\n\t(4) div\n\t(5) potenciação\n\t(6) sair : ");
scanf("%d", &m);
getchar();

switch (m)
{
case 1:
 soma();
 break; /*Obs.: o comando break fas com que saia da execução do laço*/
case 2:
 sub();
 break;
case 3:
 muti();
 break;
case 4:
 div();
 break;
case 5:
 pot();
 break;
case 6:
 break;

 default: printf("\n\t Escolha uma opcão !");
}

return m; /*Retorna o valor de m*/
}

int main()
{
int a;
printf("\n\n                  Calc C");
do {
a = menu();
}
while (a != 6); /*Chama a função menu() enquanto a != 5*/
return 0;}

Link para o comentário
Compartilhar em outros sites

  • 0

// Use prot[otipos de função antes de mais nada, ex.:

#include <stdio.h>
#include <math.h>


//PROTÓTIPOS:
float pot();
float soma();
float sub();
float muti();
float div();
int menu();

int main()
{
int a;
printf("\n\n                  Calc C");
do {
a = menu();
}
while (a != 6); /*Chama a função menu() enquanto a != 5*/
return 0;}

float pot()
{
float a, b, x;
printf("\nvalor: ");
scanf("%f", &a);
getchar();

printf("elevar á: ");
scanf("%f", &b);
getchar();

if ( b == 0 )
{
printf("\n\tExpoente inválido !");
menu();
}
else
{
x=pow(a,b);
}
printf("\nRESUL: %f\n", x);
}

float soma()
{
float a, b, x;
printf("\nvA: ");
scanf("%f", &a);
getchar();

printf("\nvB: ");
scanf("%f", &b);
getchar();

x = a + b;

printf("\nRESUL: %f\n", x);
}

float sub()
{
float a, b, x;
printf("\nvA: ");
scanf("%f", &a);
getchar();

printf("\nvB: ");
scanf("%f", &b);
getchar();

x = a - b;

printf("\nRESUL: %f\n", x);
}

float muti()
{
float a, b, x;
printf("\nvA: ");
scanf("%f", &a);
getchar();

printf("\nvB: ");
scanf("%f", &b);
getchar();

x = a * b;

printf("\nRESUL: %f\n", x);
}

float div()
{
float a, b, x;
printf("\nvA: ");
scanf("%f", &a);
getchar();

printf("\nvB: ");
scanf("%f", &b);
getchar();

x = a / b;

printf("\nRESUL: %f\n", x);
}

int menu()
{
int a;
int m;
printf("\nOpcões: \n\t(1) +\n\t(2) -\n\t(3) *\n\t(4) div\n\t(5) potenciação\n\t(6) sair : ");
scanf("%d", &m);
getchar();

switch (m)
{
case 1:
soma();
break; /*Obs.: o comando break fas com que saia da execução do laço*/
case 2:
sub();
break;
case 3:
muti();
break;
case 4:
div();
break;
case 5:
pot();
break;
case 6:
break;

default: printf("\n\t Escolha uma opcão !");
}

return m; /*Retorna o valor de m*/
}

Link para o comentário
Compartilhar em outros sites

  • 0

// vlw a todos... agora tah certo... =\

--x--

// eu tinha testado nu win e deu td ok, no gcc da esse erro:

/tmp/ccDmmLko.o(.text+0xcb): In function 'pot':

: undefined reference to 'pow'

collect2: ld returned 1 exit status

// não faco ideia do q seja...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...