Ir ao conteúdo

C Teste do programa e sugestões


Ir à solução Resolvido por GBMelkor,

Posts recomendados

Postado
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>

// Uso das funções para inserção de cabeçários e tabela
void imprime_bemvindo(void){
		printf("==============================================================\n");
		printf("========BEM-VINDO AO RNE - RÓTULO NUTRITIVO ELETRÔNICO========\n");
		printf("==============================================================\n");
	}

void inserir_dados(void){
        printf("=================INSERÇÃO DE DADOS==================\n");
}

void imprime_dados(void){
        printf("=======================IMPRESSÃO DE DADOS=======================\n");
}

void imprime_tabelanutritiva(void){
        printf("====================================================\n");
        printf("=======TABELA REFERENCIAL - QUANTIDADE MÁXIMA=======\n");
        printf("====================================================\n");
        printf("| Nutriente             || Quantidade Máxima       |\n");
        printf("|==================================================|\n");
        printf("| Proteínas             || 150 gramas              |\n");
        printf("|==================================================|\n");
        printf("| Carboidratos          || 150 gramas              |\n");
        printf("|==================================================|\n");
        printf("| Lipídios              || 150 gramas              |\n");
        printf("|==================================================|\n");
        printf("| Gorduras Totais       || 100 gramas              |\n");
        printf("|==================================================|\n");
        printf("| Gorduras Saturadas    || 150 gramas              |\n");
        printf("|==================================================|\n");
        printf("| Sódio                 || 2400 miligramas         |\n");
        printf("|==================================================|\n");
        printf("| Ferro                 || 14 gramas               |\n");
        printf("|==================================================|\n");
        printf("| Cálcio                || 800 gramas              |\n");
        printf("|==================================================|\n");
        printf("| Energia               || 2000 caloria            |\n");
        printf("|==================================================|\n");
        printf("| Colesterol            || 30 gramas               |\n");
        printf("|==================================================|\n");
        printf("| Fibras                || 30 gramas               |\n");
        printf("|==================================================|\n");
}

void imprime_fichanutritiva(void){
        printf("=====================================================\n");
        printf("==================FICHA NUTRITIVA====================\n");
        printf("=====================================================\n");
}

void imprime_diagnutritivo(void){
        printf("=====================================================\n");
        printf("================DIAGNÓSTICO NUTRITIVO================\n");
        printf("=====================================================\n");
}



//*Função principal do programa*
// Atribuição e inserção de dados
int main(){
	setlocale(LC_ALL, "Portuguese");

	// Definição
    const int maxproteina=150, maxlipidios=150, maxcarboidratros=150, maxenergia=2000, maxgordurasT=100;
    const int maxgordurasS=25, maxcolesterol=150, maxfibra=30, maxcalcio=800, maxferro=14, maxsodio=2400;

    // Variação
	char nome_nutriente[20];
	int maxnutriente, quant_nutriente, i = 1, valor_diario;
	int proteinas, lipidios, carboidratos, energia, gordurasT, gordurasS, colesterol, fibra, ferro, sodio, calcio;
	int vdproteinas, vdlipidios, vdcarboidratos, vdenergia, vdgordurasT, vdgordurasS, vdcolesterol, vdfibra, vdferro, vdsodio, vdcalcio;
    int resposta;
    int opcao = 0;

	// Estrutura do Programa
	//- Deve inserir os dados de cada nutriente, incluindo a quantidade máxima deste elemento.
	imprime_bemvindo();
	imprime_tabelanutritiva();
	printf("\n");
	inserir_dados();
	for(i=1;i<5;i++){
		printf("Digite o %iº nutriente: ", i);
		setbuf(stdin, NULL);
		scanf("%49[^\n]s", nome_nutriente);

		printf("Digite a quantidade máxima de %s: ", nome_nutriente);
		scanf("%i", &maxnutriente);

		printf("Digite a quantidade apresentada de %s : ", nome_nutriente);
		scanf("%i", &quant_nutriente);

		valor_diario = ((quant_nutriente/maxnutriente)*100);
		printf("\n");
	}

    system("cls");
	system("Color A");

    // Impressão de dados
    imprime_dados();
    printf("\n");
    imprime_fichanutritiva();

    for(i=1;i<5;i++){
            printf("| Nutriente: %s. || Valor diário do nutriente (porc.): %i.\n", nome_nutriente, valor_diario);
            printf("=====================================================\n");
        }

    printf("*Observações: para sódio = mg.\n");
    printf("\t      para energia = cal.\n");
    printf("\n\n\n");

    // Análise de quantidades e impressão do prontuário nutritivo
    //- Deve inserir o número da opção para realizar o diagnóstico, e, posteriormente, inserir a quantidade
    //presente no produto novamente.
    imprime_diagnutritivo();

    do{
        printf("Escolha uma das opções a seguir: \n");
        printf("[1] - Energia\n");
        printf("[2] - Gorduras e Colesterol\n");
        printf("[3] - Minerais e Fibra\n");
        printf("[4] - Sódio\n");
        printf("\n");
        scanf("%i", &opcao);


        switch(opcao){


            case 1: printf("Você escolheu a opção 1 - Energia\n\n");
                    printf("Digite novamente a quantidade de Energia (em cal): ");
                    scanf("%i", &energia);

                    vdenergia = (energia/maxenergia)*100;
                    printf("\n");


                    if (vdenergia >= 90){
                        printf("O(A) paciente obteve aumento do peso.\n");
                        printf("Recomendação: é necessário que o paciente realize exercícios físicos\n");
                        printf("a fim de diminuir para o peso ideal.\n\n");
                    }

                    else if ((vdenergia < 90) && (vdenergia >= 60)){
                        printf("O(A) paciente não apresenta ganho ou perda de peso.\n\n");
                    }

                    else {
                        printf("O(A) paciente obteve diminuição do peso.\n");
                        printf("Recomendação: é necessário que o paciente se alimente de nutrientes ricos em carboidratos\n");
                        printf("para chegar ao peso ideal. \n\n");
                    }
                    break;
                    printf("\n");




            case 2: printf("Você escolheu a opção 2 - Gorduras e Colesterol\n\n");
                    printf("Digite novamente a quantidade de Gorduras Totais (em g): ");
                    scanf("%i", &gordurasT);
                    printf("Digite novamente a quantidade de Gorduras Saturadas (em g): ");
                    scanf("%i", &gordurasS);
                    printf("Digite novamente a quantidade de Coelsterol (em g): ");
                    scanf("%i", &colesterol);

                    vdgordurasT = (gordurasT/maxgordurasT)*100;
                    vdgordurasS = (gordurasS/maxgordurasS)*100;
                    vdcolesterol = (colesterol/maxcolesterol)*100;
                    printf("\n");


                    if ((vdgordurasT >= 90) || (vdgordurasS >= 90) || (colesterol >= 90)){
                        printf("O(A) paciente apresenta quantidades diárias dos nutrientes acima da média.\n");
                        printf("Quando ultrapassar, pode ocasionar uma série de problemas de saúde, \n");
                        printf("como problemas cardíacos, entupimento das veias, ou\n");
                        printf("uma possível parada cardíaca.\n");
                        printf("Recomendação: É necessário que o(a) paciente realize atividades físicas \n");
                        printf("para reduzir as quantidades de alimento consumidas.\n\n");
                    }

                    else if((vdgordurasT < 90) && (vdgordurasT >= 60) && (vdgordurasS < 90) && (vdgordurasS >= 60) && (colesterol < 90) && (colesterol >= 60)) {
                        printf("O(A) paciente apresenta quantidades diárias dos nutrientes dentro do valor permitido.\n");
                        printf("Ou seja, não apresenta problemas de saúde.\n\n");
                    }

                    else {
                        printf("O(A) paciente apresenta quantidades diárias dos nutrientes abaixo da média. \n");
                        printf("Quando for inferior em relação à média, pode ocasionar uma série de problemas de saúde, \n");
                        printf("como oxidação de carboidratos, exaustão precoce e carência de vitaminas lipossolúveis (A,D,E e K). \n");
                        printf("Recomendação: É necessário consumir alimentos que contenham \n");
                        printf("gorduras poli-insaturadas, como salmão, e/ou monoinsaturadas, como nozes, castanhas, amêndoas. \n\n");
                    }
                    break;
                    printf("\n");




            case 3: printf("Você escolheu a opção 3 - Minerais e Fibra\n\n");
                    printf("Digite novamente a quantidade de Ferro (em g): ");
                    scanf("%i", &ferro);
                    printf("Digite novamente a quantidade de Cálcio (em g): ");
                    scanf("%i", &calcio);
                    printf("Digite novamente a quantidade de Fibras (em g): ");
                    scanf("%i", &fibra);

                    vdferro = (ferro/maxferro)*100;
                    vdcalcio = (calcio/maxcalcio)*100;
                    vdfibra = (fibra/maxfibra)*100;
                    printf("\n");


                    if ((vdferro >= 90) && (vdcalcio >= 90) && (vdfibra >= 90)){
                        printf("O(A) paciente pode apresentar uma quantidade de nutrientes acima da média. \n");
                        printf("O aumento da quantidade diária de nutrientes, pode ocasionar \n\n");
                        printf("problemas de saúde, como \n");
                    }

                    else if ((vdferro < 90) && (vdferro >= 60) || (vdcalcio < 90) && (vdcalcio >= 60) || (vdfibra < 90) && (vdfibra >= 60)){
                        printf("O(A) paciente apresenta uma quantidade de nutrientes dentro do solicitado. \n");
                        printf("O(A) paciente não apresentou problemas nutricionais\n\n.");
                    }

                    else {
                        printf("O(A) paciente pode apresentar uma quantidade de nutrientes abaixo da média. \n");
                        printf("A redução da quantidade de nutrientes consumida, pode ocasionar \n");
                        printf("problemas de saúde, como anemia, ospteoporose, \n\n");
                    }
                    break;
                    printf("\n");




            case 4: printf("Você escolheu a opção 4 - Sódio\n\n");
                    printf("Digite novamente a quantidade de Sódio (em mg): ");
                    scanf("%i", &sodio);

                    vdsodio = (sodio/maxsodio)*100;
                    printf("\n");


                    if (vdsodio >= 90){
                        printf("O(A) paciente pode apresentar pressão alta - excesso na quantidade de sódio ingerida no corpo.\n");
                        printf("Recomedação: O paciente deve consumir em quantidades menores do elemento.\n");
                        printf("Deve também consumir líquidos, como, por exemplo, água.\n\n");
                    }

                    else if ((vdsodio < 90) && (vdsodio >= 60)){
                        printf("O(A) paciente não apresenta nenhum problema de saúde a respeito da quantidade diária ingerida do sódio.\n");
                        printf("Recomendação: O paciente deve continuar mantendo a quantidade de sódio.\n\n");
                    }

                    else {
                        printf("O(A) paciente pode apresentar pressão baixa - carência de sódio ingerida no corpo.\n");
                        printf("Recomendação: O paciente deve consumir uma quantidade mínima do elemento.\n\n");
                    }
                    break;
                    printf("\n");




            default: printf("Opção inválida.\n");
                     printf("\n\n");


        }
        printf("Gostaria de inserir outra opção? [0/1]\n");
        printf("\n");
        scanf("%i", &resposta);

    }while (resposta == 1);

    system("cls");
    printf("Obrigado por usar o RNE\n");
    printf("Finalizando o programa. . . . . .\n");



    return 0;

}

Aqui está.

  • Curtir 1
  • Solução
Postado

@NhemonF O programa está bem legal! Não olhei a fundo, então não verifiquei erros de lógica ou trechos que podem ser melhorados, mas as sugestões que te dou são relativas à legibilidade do programa.

-----------

Tente modularizar mais, isso vai deixar o programa mais "reutilizável". Por exemplo, você pode criar uma função só para imprimir as linhas:

// Função que imprime uma linha horizontal na tela, usando sinais de =
void imprime_Linha(void){
	printf("====================================================\n");
}

São boas práticas para obter maior legibilidade:

  • Modularizar as partes do programa (Inserção de dados / Cálculos / Menus)
  • Somente deixar na main a chamada de funções, ou criar um menu chamando as funções, e chamar este menu na main. Ex:
    • [1] Inserir dados;
    • [2] Calcular x quantidade; (...)
  • Comentar o que faz cada função, ex:
    • // Função usada para fazer tal coisa
  • Usar poucas variáveis, e com nomes pequenos.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!