Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
#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
deu outros erros deu mais 5 erros :'( vc tem o devc ++ pra testar e ver oq eh para me ensinar pf ?
Eu não sei C/C++, mas poste os erros mesmo assim,
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");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););
} 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;
}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
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.
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 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");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;
} 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);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));
} /*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;
}
O teu "return" está fora das chaves
int fatorial(int numero)
{
Tem que ficar dentro, não? Coloque uma chave de fechamento no fim da função.
int fatorial(int numero)
{