Ir ao conteúdo
  • Cadastre-se

Programação estruturada 1


Posts recomendados

#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® - 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;

 

}

 

esta dando os seguintes erros 

 

1- calc.c In function 'fatorial':

2-[Error] expected declaration or statement at end of input

 

me ajudem por favor !! 

Link para o comentário
Compartilhar em outros sites

agora esta dando outros erros : [Error] ld returned 1 exit status

undefined reference to `binario_decimal'

undefined reference to `decimal_binario'

In function `main':

 

 

 


#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® - 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;

 

}
Link para o comentário
Compartilhar em outros sites

Elaborar um esboço do programa, listando cada ação a ser executada e analisando criteriosamente quais os dados envolvidos, bem como os tipos de variáveis que melhor se adéquam para armazená-los. As funcionalidades da 1ª etapa são:
 (+) Soma
 (-) Subtração
 (*) Multiplicação
 (/) Divisão
 (E) Exponenciação
 ® Raiz Quadrada
 (P) Porcentagem

 

Nessa etapa o programa deve ser acrescido das operações: (F) Fatorial, (B) Conversão Binário para Decimal e (D) Conversão Decimal para Binário.

 

fazer uma calculadora com esses processos de opções e menu.

Link para o comentário
Compartilhar em outros sites

Para deixar o código mais organizado, o melhor a fazer é criar funções para cada operação.

Fiz um programa simples que calcula apenas três operações para você ter uma ideia.

Você pode tentar adaptar para o seu caso, acrescentando as outras operações/funções.

#include <stdio.h>#define SOM     1#define SUB     2#define MUL     3#define SAIR    4int soma(int a, int {    return a + b;}int subtrai(int a, int {    return a - b;}int multiplica(int a, int {    return a * b;}int menu(){    int i = 0;    char *m[] = {        "\n1 - Somar\n",        "2 - Subtrair\n",        "3 - Multiplicar\n",        "4 - Sair\n",        ": "    };    while(i < SAIR+1)        printf(m[i++]);        scanf("%d", &i);    return i;}int main(){        int op, v1, v2, res;        while((op = menu()) != SAIR){        printf("Valor1: ");        scanf("%d", &v1);        printf("Valor2: ");        scanf("%d", &v2);        switch(op){                    case SOM: res = soma(v1, v2); break;            case SUB: res = subtrai(v1, v2); break;            case MUL: res = multiplica(v1, v2); break;            default:                puts("opcao invalida");        }        printf("\n\nResultado = %d\n", res);    }    return 0;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!