Ale Postado Abril 22, 2004 Denunciar Share Postado Abril 22, 2004 // Como faco para fazer potenciacao em C ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thuran Postado Abril 23, 2004 Denunciar Share Postado Abril 23, 2004 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????? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bonoddr Postado Abril 23, 2004 Denunciar Share Postado Abril 23, 2004 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í... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest H i R o Postado Abril 23, 2004 Denunciar Share Postado Abril 23, 2004 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ó... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fbafelipe Postado Abril 23, 2004 Denunciar Share Postado Abril 23, 2004 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wicker Man Postado Abril 23, 2004 Denunciar Share Postado Abril 23, 2004 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Ale Postado Abril 23, 2004 Autor Denunciar Share Postado Abril 23, 2004 // 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); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fbafelipe Postado Abril 23, 2004 Denunciar Share Postado Abril 23, 2004 verifica se você n esqueceu de incluir a math.h:#include <math.h> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Ale Postado Abril 23, 2004 Autor Denunciar Share Postado Abril 23, 2004 // 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;} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Abril 24, 2004 Denunciar Share Postado Abril 24, 2004 //Não entendi uma parte do seu programa, na função pot(), tem um comando que é: if ( b == 0 ) { printf("\n\tExpoente inválido !"); menu(); } // A minha dúvida é como você consegue chamar a função menu() antes de declará-la??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Abril 24, 2004 Denunciar Share Postado Abril 24, 2004 // se eu declarar como global:int menu();// não resolve ? euvi isso num tuto, mas não me// lembro bem agora... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Abril 25, 2004 Denunciar Share Postado Abril 25, 2004 // 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*/ } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Ale Postado Abril 25, 2004 Autor Denunciar Share Postado Abril 25, 2004 // 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Ale
// Como faco para fazer potenciacao em C ?
Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
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.