VictoOr 0 Denunciar post Postado Novembro 18, 2014 #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> // Funcao que calcula o fatorial de um numero int fatorial(int numero) { int fat = 1; int i; for(i = numero; i > 1; i--){ fat *= i; } return fat; //Funcao que calcula a Raiz Quadrada com 2 poisicoes decimais float raiz_quadrada(float valorRaiz) { float resultado_1,subtrai_1,passo_1; float resultado_2,subtrai_2,passo_2; float resultado_3,subtrai_3,passo_3; float raiz; subtrai_1 = 1; passo_1 = 0; passo_2 = 0; passo_3 = 0; resultado_1 = valorRaiz; while (resultado_1 >= subtrai_1){ resultado_1 = resultado_1 - subtrai_1; subtrai_1 = subtrai_1 + 2; passo_1 = passo_1 + 1; } if (resultado_1 != 0) { resultado_2 = resultado_1 * 100; subtrai_2 = (passo_1 * 20) + 1; passo_2 = 0; while (resultado_2 >= subtrai_2) { resultado_2 = resultado_2 - subtrai_2; subtrai_2 = subtrai_2 + 2; passo_2 = passo_2 + 1; } if (resultado_2 != 0){ resultado_3 = resultado_2 * 100; subtrai_3 = (((passo_1 * 10) + passo_2) * 20) + 1; passo_3 = 0; while (resultado_3 >= subtrai_3){ resultado_3 = resultado_3 - subtrai_3; subtrai_3 = subtrai_3 + 2; passo_3 = passo_3 + 1; } } } else { passo_2 = 0; passo_3 = 0; } raiz = ((passo_1 * 100) + (passo_2 * 10) + passo_3) / 100; return raiz; } int potencia (int base,int expoente){ int resultado = 1; do { resultado *= base; expoente--; }while (expoente > 0); return resultado; } int main(int argc, char*argv[]) { int numero1, numero2, resultado, fat; int base, expoente; int binario[8]; float numeroPorcentagem,resultadoPorcentagem; float valorRaiz,resultadoRaiz; char oper; do { // Menu //printf("\t\t\t\tCALCULADORA\n\n"); system("title ATPS 02: CALCULARODA V1.0"); system("color 8e"); printf("\t\t\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD"); printf("\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB\n"); printf("\t\t\t\xBA C A L C U L A D O R A \xBA\n"); printf("\t\t\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD"); printf("\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC\n"); printf("\n\n"); printf("\t(+) - Soma\t\t\t(P) - Porcentagem\n"); printf("\t(-) - Subtracao\t\t\t(F) - Fatorial\n"); printf("\t(*) - Multiplicacao\t\t(B) - Conversao Binario -> Decimal\n"); printf("\t(/) - Divisao\t\t\t(D) - Conversao Decimal -> Binario\n"); printf("\t(E) - Exponenciacao\t\t(S) - Sair\n"); printf("\t(R) - Raiz quadrada\n"); printf("\tOpcao: "); oper = getche(); // Operações switch( oper ) { case '+': printf("\n\n\tS O M A"); printf("\n\n\tPrimeiro valor: "); scanf("%d", &numero1); printf("\tSegundo valor: "); scanf("%d", &numero2); resultado = numero1 + numero2; printf("\n\t%d + %d = %d", numero1, numero2, resultado); break; case '-': printf("\n\n\tS U B T R A C A O"); printf("\n\n\tPrimeiro valor: "); scanf("%d", &numero1); printf("\tSegundo valor: "); scanf("%d", &numero2); resultado = numero1 - numero2; printf("\n\t%d - %d = %d", numero1, numero2, resultado); break; case '*': printf("\n\n\tM U L T I P L I C A C A O"); printf("\n\n\tPrimeiro valor: "); scanf("%d", &numero1); printf("\tSegundo valor: "); scanf("%d", &numero2); resultado = numero1 * numero2; printf("\n\t%d * %d = %d", numero1, numero2, resultado); break; case '/': printf("\n\n\tD I V I S A O"); printf("\n\tPrimeiro valor: "); scanf("%d", &numero1); printf("\tSegundo valor: "); scanf("%d", &numero2); if(numero2 == 0) { printf("\n\tErro divisao por zero"); printf ("\n\n\topcao invalida"); break; } resultado = numero1 / numero2; printf("\n\t%d / %d = %d", numero1, numero2, resultado); break; case 'e': case 'E': printf("\n\n\tE X P O N E N C I A C A O"); printf("\n\n\tBase: "); scanf("%d", &base); printf("\tExpoente: "); scanf("%d", &expoente); if (expoente == 0){ resultado = 1; } else { resultado = potencia(base,expoente); } printf("\n\t%d elevado a %d = %d", base, expoente, resultado); break; case 'r': case 'R': printf("\n\n\tR A I Z Q U A D R A D A"); printf("\n\n\tValor: "); scanf("%f", &valorRaiz); resultadoRaiz = raiz_quadrada(valorRaiz); printf("\n\tRaiz quadrada de %.0f = %.0f", valorRaiz, resultadoRaiz); break; case 'p': case 'P': printf("\n\n\tP O R C E N T A G E M"); printf("\n\n\tValor: "); scanf("%d", &numero1); printf("\tPorcentagem: "); scanf("%d", &numero2); resultado = (numero1 * numero2) / 100; printf("\n\t%d %% de %d = %d", numero2, numero1, resultado); break; case 'f': case 'F': printf("\n\n\tF A T O R I A L"); printf("\n\n\tValor: "); scanf("%d", &numero1); resultado = fatorial(numero1); printf("\n\tO fatorial de %d = %d", numero1, resultado); break; case 'b': case 'B': printf("\n\n\tB I N A R I O P A R A D E C I M A L"); printf("\n\n\tDigite o numero binario(8 bits): "); scanf("%d", &numero1); resultado = binario_decimal(numero1); printf("\n\tEquivalente em Decimal: %d", resultado); break; case 'd': case 'D': printf("\n\n\tD E C I M A L P A R A B I N A R I O"); printf("\n\n\tDigite o numero em decimal(256): "); scanf("%d", &numero1); resultado = decimal_binario(numero1); printf("\n\tEquivalente em Binario: %d", resultado); break; case 's': case 'S': printf("\n\n\tPrograma finalizado"); break; default: printf("\n\n\tOpcao Invalida"); } printf("\n\n\t"); system("PAUSE"); system("cls || clear"); }while(oper != 'S' && oper != 's'); return 0; } Aparece o seguinte erro: In function 'fatorial': [Error] expected declaration or statement at end of input Compartilhar este post Link para o post Compartilhar em outros sites
Dan Borges 26 Denunciar post Postado Novembro 18, 2014 O teu "return" está fora das chaves int fatorial(int numero) { int fat = 1; int i; for(i = numero; i > 1; i--){ fat *= i; } return fat; Tem que ficar dentro, não? Coloque uma chave de fechamento no fim da função. int fatorial(int numero) { int fat = 1; int i; for(i = numero; i > 1; i--){ fat *= i; } return fat; } Compartilhar este post Link para o post Compartilhar em outros sites
VictoOr 0 Denunciar post Postado Novembro 18, 2014 deu outros erros deu mais 5 erros :'( vc tem o devc ++ pra testar e ver oq eh para me ensinar pf ? Compartilhar este post Link para o post Compartilhar em outros sites
Dan Borges 26 Denunciar post Postado Novembro 18, 2014 Eu não sei C/C++, mas poste os erros mesmo assim, Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 18, 2014 Por favor, da próxima vez que postar códigos, use a tag CODE. Está do lado direito do botão pra incluir imagem no Richtext.... Leia o tópico fixo do fórum sobre system e pare de usar isso e a conio.h. Getche é uma função fora do padrão também. Evite essas coisas. Reorganizei um pouco a coisa, porque um main desse tamanho é tenso de ler.... #include <stdio.h> #include <math.h> #include <ctype.h> /* Por definição não existe fatorial de número negativo. */ unsigned long fatorial(unsigned int numero) { unsigned long fat = 1; unsigned int i; for(i=numero; i; i--) fat *=i; return fat; } float raiz_quadrada(float valorRaiz) { float resultado_1,subtrai_1,passo_1; float resultado_2,subtrai_2,passo_2; float resultado_3,subtrai_3,passo_3; float raiz; subtrai_1 = 1; passo_1 = 0; passo_2 = 0; passo_3 = 0; resultado_1 = valorRaiz; while (resultado_1 >= subtrai_1){ resultado_1 = resultado_1 - subtrai_1; subtrai_1 = subtrai_1 + 2; passo_1 = passo_1 + 1; } if (resultado_1 != 0) { resultado_2 = resultado_1 * 100; subtrai_2 = (passo_1 * 20) + 1; passo_2 = 0; while (resultado_2 >= subtrai_2) { resultado_2 = resultado_2 - subtrai_2; subtrai_2 = subtrai_2 + 2; passo_2 = passo_2 + 1; } if (resultado_2 != 0){ resultado_3 = resultado_2 * 100; subtrai_3 = (((passo_1 * 10) + passo_2) * 20) + 1; passo_3 = 0; while (resultado_3 >= subtrai_3){ resultado_3 = resultado_3 - subtrai_3; subtrai_3 = subtrai_3 + 2; passo_3 = passo_3 + 1; } } } else { passo_2 = 0; passo_3 = 0; } raiz = ((passo_1 * 100) + (passo_2 * 10) + passo_3) / 100; return raiz; } long potencia (int base,int expoente){ long resultado = 1; long i; for(i=expoente; i; i--) { resultado *= base; } return resultado; } void menu() { puts("*********** CALCULADORA *************"); printf("\t(+) - Soma\t\t\t(P) - Porcentagem\n"); printf("\t(-) - Subtracao\t\t\t(F) - Fatorial\n"); printf("\t(*) - Multiplicacao\t\t(B) - Conversao Binario -> Decimal\n"); printf("\t(/) - Divisao\t\t\t(D) - Conversao Decimal -> Binario\n"); printf("\t(E) - Exponenciacao\t\t(S) - Sair\n"); printf("\t(R) - Raiz quadrada\n"); } void menu_soma() { int numero1, numero2; puts("---- SOMA ----"); printf("\n\n\tPrimeiro valor: "); scanf("%d", &numero1); printf("\tSegundo valor: "); scanf("%d", &numero2); printf("\n\t%d + %d = %d", numero1, numero2, numero1+numero2); } void menu_subtracao() { int numero1, numero2; printf("\n\n\tS U B T R A C A O"); printf("\n\n\tPrimeiro valor: "); scanf("%d", &numero1); printf("\tSegundo valor: "); scanf("%d", &numero2); printf("\n\t%d - %d = %d", numero1, numero2, numero1-numero2); } void menu_multiplicacao() { int numero1, numero2; printf("\n\n\tM U L T I P L I C A C A O"); printf("\n\n\tPrimeiro valor: "); scanf("%d", &numero1); printf("\tSegundo valor: "); scanf("%d", &numero2); printf("\n\t%d * %d = %d", numero1, numero2, numero1*numero2); } void menu_divisao() { float numero1, numero2; printf("\n\n\tD I V I S A O"); printf("\n\tPrimeiro valor: "); scanf("%f", &numero1); printf("\tSegundo valor: "); scanf("%f", &numero2); if(numero2 == 0) { printf("\n\tErro divisao por zero"); } else { printf("\n\t%.2f / %.2f = %.2f", numero1, numero2, float(numero1)/float(numero2)); } } void menu_exponenciacao() { int base, expoente; int resultado = 1; printf("\n\n\tE X P O N E N C I A C A O"); printf("\n\n\tBase: "); scanf("%d", &base); printf("\tExpoente: "); scanf("%d", &expoente); if (expoente) { resultado = potencia(base,expoente); } printf("\n\t%d elevado a %d = %d", base, expoente, resultado); } void menu_raiz_quadrada() { float valorRaiz, resultadoRaiz; printf("\n\n\tR A I Z Q U A D R A D A"); printf("\n\n\tValor: "); scanf("%f", &valorRaiz); resultadoRaiz = raiz_quadrada(valorRaiz); printf("\n\tRaiz quadrada de %.0f = %.0f", valorRaiz, resultadoRaiz); } void menu_porcentagem() { int numero1, numero2; float resultado; printf("\n\n\tP O R C E N T A G E M"); printf("\n\n\tValor: "); scanf("%d", &numero1); printf("\tPorcentagem: "); scanf("%d", &numero2); resultado = (numero1 * numero2) / 100.0; printf("\n\t%d %% de %d = %.2f", numero2, numero1, resultado); } void menu_fatorial() { int numero1; printf("\n\n\tF A T O R I A L"); printf("\n\n\tValor: "); scanf("%d", &numero1); printf("\n\tO fatorial de %d = %ul", numero1, fatorial(numero1)); } void menu_conversao_binario_decimal() { int binario[8]; printf("\n\n\tB I N A R I O P A R A D E C I M A L"); printf("\n\n\tDigite o numero binario(8 bits): "); scanf("%d", &numero1); printf("\n\tEquivalente em Decimal: %d", binario_decimal(numero1);); } void menu_conversao_decimal_binario() { int numero1; printf("\n\n\tD E C I M A L P A R A B I N A R I O"); printf("\n\n\tDigite o numero em decimal(256): "); scanf("%d", &numero1); printf("\n\tEquivalente em Binario: %d", decimal_binario(numero1);); } int main(int argc, char*argv[]) { float numeroPorcentagem,resultadoPorcentagem; float valorRaiz,resultadoRaiz; char oper; do { menu(); printf("\tOpcao: "); scanf("%c", &oper); switch(tolower(oper)) { case '+': menu_soma(); break; case '-': menu_subtracao(); break; case '*': menu_multiplicacao(); break; case '/': menu_divisao(); break; case 'e': menu_exponenciacao(); break; case 'r': menu_raiz_quadrada(); break; case 'p': menu_porcentagem(); break; case 'f': menu_fatorial(); break; case 'b': menu_conversao_binario_decimal(); break; case 'd': menu_conversao_decimal_binario(); break; case 's': printf("\n\n\tPrograma finalizado"); break; default: printf("\n\n\tOpcao Invalida"); } printf("\n\n\t"); }while(tolower(oper) != 's'); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
VictoOr 0 Denunciar post Postado Novembro 19, 2014 Ainda esta dando erro [Error] expected expression before 'float' C:\Users\Victor\Desktop\calculadora.c In function 'menu_divisao': C:\Users\Victor\Desktop\calculadora.c In function 'menu_conversao_binario_decimal': 183 18 C:\Users\Victor\Desktop\calculadora.c [Error] 'numero1' undeclared (first use in this function) 183 18 C:\Users\Victor\Desktop\calculadora.c [Note] each undeclared identifier is reported only once for each function it appears in 184 66 C:\Users\Victor\Desktop\calculadora.c [Error] expected ')' before ';' token C:\Users\Victor\Desktop\calculadora.c In function 'menu_conversao_decimal_binario': 192 70 C:\Users\Victor\Desktop\calculadora.c [Error] expected ')' before ';' token Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 19, 2014 Eu simplesmente organizei seu código, sem fazer nenhuma alteração. É p/ você continuar a pensar sobre o exercício ao invés de esperar que a gente entregue um código final funcional a cada tag CODE postada. Se você leu as mensagens, sabe que tem que declarar as variáveis locais nas funções mencionadas. Compartilhar este post Link para o post Compartilhar em outros sites
Mateus GP 13 Denunciar post Postado Novembro 20, 2014 Eu sugiro uma versão menos complexa para calcular a raiz quadrada, mais especificamente utilizando o método babilônico. Por exemplo: double sqrt (double x) { double k = x / 2.f; int prec = 0; while(prec++ < 20) { k = (k + x / k) / 2.f; } return k; } Atenção: Os erros de lógica não foram corrigidos, esta parte será sua! #include <stdio.h> #include <math.h> #include <ctype.h> /* // Alternativa 2 à raiz_quadrada inline unsigned int pell (unsigned int x) { unsigned int i = 1, k = 0; while(x >= i) { x -= i; i += 2; k++; } return k; } double raiz_quadrada (double x) { return pell(x * 10000.f) / 100.f; } */ double raiz_quadrada (double x) { double k = x / 2.f; int prec = 0; while(prec++ < 20) { k = (k + x / k) / 2.f; } return k; } /* Por definição não existe fatorial de número negativo. */ unsigned long fatorial(unsigned int numero) { unsigned long fat = 1; unsigned int i; for(i=numero; i; i--) fat *=i; return fat; } /* float raiz_quadrada(float valorRaiz) { float resultado_1,subtrai_1,passo_1; float resultado_2,subtrai_2,passo_2; float resultado_3,subtrai_3,passo_3; float raiz; subtrai_1 = 1; passo_1 = 0; passo_2 = 0; passo_3 = 0; resultado_1 = valorRaiz; while (resultado_1 >= subtrai_1){ resultado_1 = resultado_1 - subtrai_1; subtrai_1 = subtrai_1 + 2; passo_1 = passo_1 + 1; } if (resultado_1 != 0) { resultado_2 = resultado_1 * 100; subtrai_2 = (passo_1 * 20) + 1; passo_2 = 0; while (resultado_2 >= subtrai_2) { resultado_2 = resultado_2 - subtrai_2; subtrai_2 = subtrai_2 + 2; passo_2 = passo_2 + 1; } if (resultado_2 != 0){ resultado_3 = resultado_2 * 100; subtrai_3 = (((passo_1 * 10) + passo_2) * 20) + 1; passo_3 = 0; while (resultado_3 >= subtrai_3){ resultado_3 = resultado_3 - subtrai_3; subtrai_3 = subtrai_3 + 2; passo_3 = passo_3 + 1; } } } else { passo_2 = 0; passo_3 = 0; } raiz = ((passo_1 * 100) + (passo_2 * 10) + passo_3) / 100; return raiz; }*/ long potencia (int base,int expoente){ long resultado = 1; long i; for(i=expoente; i; i--) { resultado *= base; } return resultado; } void menu() { puts("*********** CALCULADORA *************"); printf("\t(+) - Soma\t\t\t(P) - Porcentagem\n"); printf("\t(-) - Subtracao\t\t\t(F) - Fatorial\n"); printf("\t(*) - Multiplicacao\t\t(B) - Conversao Binario -> Decimal\n"); printf("\t(/) - Divisao\t\t\t(D) - Conversao Decimal -> Binario\n"); printf("\t(E) - Exponenciacao\t\t(S) - Sair\n"); printf("\t(R) - Raiz quadrada\n"); } void menu_soma() { int numero1, numero2; puts("---- SOMA ----"); printf("\n\n\tPrimeiro valor: "); scanf("%d", &numero1); printf("\tSegundo valor: "); scanf("%d", &numero2); printf("\n\t%d + %d = %d", numero1, numero2, numero1+numero2); } void menu_subtracao() { int numero1, numero2; printf("\n\n\tS U B T R A C A O"); printf("\n\n\tPrimeiro valor: "); scanf("%d", &numero1); printf("\tSegundo valor: "); scanf("%d", &numero2); printf("\n\t%d - %d = %d", numero1, numero2, numero1-numero2); } void menu_multiplicacao() { int numero1, numero2; printf("\n\n\tM U L T I P L I C A C A O"); printf("\n\n\tPrimeiro valor: "); scanf("%d", &numero1); printf("\tSegundo valor: "); scanf("%d", &numero2); printf("\n\t%d * %d = %d", numero1, numero2, numero1*numero2); } void menu_divisao() { float numero1, numero2; printf("\n\n\tD I V I S A O"); printf("\n\tPrimeiro valor: "); scanf("%f", &numero1); printf("\tSegundo valor: "); scanf("%f", &numero2); if(numero2 == 0) { printf("\n\tErro divisao por zero"); } else { printf("\n\t%.2f / %.2f = %.2f", numero1, numero2, (float)numero1/(float)numero2); // Erro float(numero1)/float(numero2) } } void menu_exponenciacao() { int base, expoente; int resultado = 1; printf("\n\n\tE X P O N E N C I A C A O"); printf("\n\n\tBase: "); scanf("%d", &base); printf("\tExpoente: "); scanf("%d", &expoente); if (expoente) { resultado = potencia(base,expoente); } printf("\n\t%d elevado a %d = %d", base, expoente, resultado); } void menu_raiz_quadrada() { float valorRaiz, resultadoRaiz; printf("\n\n\tR A I Z Q U A D R A D A"); printf("\n\n\tValor: "); scanf("%f", &valorRaiz); resultadoRaiz = raiz_quadrada(valorRaiz); printf("\n\tRaiz quadrada de %.0f = %.0f", valorRaiz, resultadoRaiz); } void menu_porcentagem() { int numero1, numero2; float resultado; printf("\n\n\tP O R C E N T A G E M"); printf("\n\n\tValor: "); scanf("%d", &numero1); printf("\tPorcentagem: "); scanf("%d", &numero2); resultado = (numero1 * numero2) / 100.0; printf("\n\t%d %% de %d = %.2f", numero2, numero1, resultado); } void menu_fatorial() { int numero1; printf("\n\n\tF A T O R I A L"); printf("\n\n\tValor: "); scanf("%d", &numero1); printf("\n\tO fatorial de %d = %lu", numero1, fatorial(numero1)); } int binario_decimal (int k) { puts("Função não implementada."); return 0; } int decimal_binario (int k) { puts("Função não implementada."); return 0; } void menu_conversao_binario_decimal() { int /*binario[8], */numero1; printf("\n\n\tB I N A R I O P A R A D E C I M A L"); printf("\n\n\tDigite o numero binario(8 bits): "); scanf("%d", &numero1); printf("\n\tEquivalente em Decimal: %d", binario_decimal(numero1)); // Função inexistente } void menu_conversao_decimal_binario() { int numero1; printf("\n\n\tD E C I M A L P A R A B I N A R I O"); printf("\n\n\tDigite o numero em decimal(256): "); scanf("%d", &numero1); printf("\n\tEquivalente em Binario: %d", decimal_binario(numero1)); } int main(int argc, char*argv[]) { /*float numeroPorcentagem,resultadoPorcentagem; float valorRaiz,resultadoRaiz;*/ char oper; do { menu(); printf("\tOpcao: "); scanf("%c", &oper); switch(tolower(oper)) { case '+': menu_soma(); break; case '-': menu_subtracao(); break; case '*': menu_multiplicacao(); break; case '/': menu_divisao(); break; case 'e': menu_exponenciacao(); break; case 'r': menu_raiz_quadrada(); break; case 'p': menu_porcentagem(); break; case 'f': menu_fatorial(); break; case 'b': menu_conversao_binario_decimal(); break; case 'd': menu_conversao_decimal_binario(); break; case 's': printf("\n\n\tPrograma finalizado"); break; default: printf("\n\n\tOpcao Invalida"); } printf("\n\n\t"); }while(tolower(oper) != 's'); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites