Ir ao conteúdo
  • Cadastre-se
Jessé P. de Melo

C Orientação sobre otimização de codigos

Recommended Posts

Boa tarde.

Estou estudando C para manusear microcontroladores e sei que são bem limitados. Como sei que o códio esta bem otimizado? E quando sei que já chegou no limite máximo de otimização?

Como exemplo vou dar um exercício que fiz, não esta otimizado porque a intenção era só fazer funcionar.

Exercício:

Faca um programa para armazenar um livro de receitas e:
• Crie um vetor de 5 receitas, que deve ter nome (maximo 25 letras), quantidade de 
ingredientes e ingredientes.
• Para cada receita, leia seu nome e a quantidade de ingredientes. então crie e leiao vetor de ingredientes, sendo que cada ingrediente contem nome e quantidade. 
• Procure receita por nome, mostrando seus ingredientes se encontrar. Se não encontrar, informe ao usuário. Repita o processo ate digitar uma string vazia. 

Segue código: *testei antes de por no loop infinito e por o if para dar exit.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void main(void){
    char nome_proc[26];

    struct lista_ing{
        char nome[26];
        int qtd_ing;
        char ing[200];
    };

    struct lista_ing receita[5];

    for(int x=0;x<5;x++){                           /*Populando strings*/
        printf("Digite o nome de uma receita: ");
        scanf("%26[^\n]",&receita[x].nome);
        fflush(stdin);
        printf("Qual a quantidade de ingredientes? ");
        scanf("%i",&receita[x].qtd_ing);
        fflush(stdin);
        char ingredientes[receita[x].qtd_ing][16];
            for(int y=0;y<receita[x].qtd_ing;y++){
                printf("Digite o ingrediente %i da receita %i: ",y+1,x+1);
                scanf("%16[^\n]",&ingredientes[y]);
                fflush(stdin);
            }
        int tam=0;                                  /*Aquisição de quantidade de ingredientes*/
            for(int y=0;y<receita[x].qtd_ing;y++){
                tam++;
            }
        char ing0[200]="  ";                        /*Colocando tudo em uma só strings para salvar no vetor do tipo struct*/
            for(int y=0;y<tam;y++){
                strcat(ing0," ");
                strcat(ing0,ingredientes[y]);
            }
            strcpy(receita[x].ing,ing0);
    }
    for(;;){                                        /*Parte que pesquisa */
        printf("Digite a receita que procurando: ");
        scanf("%s",&nome_proc);
        fflush(stdin);
        int test = strcmp(nome_proc," ");
        if(test==0){
            exit(0);
        }
        for(int x=0;x<5;x++){
            char *encontrou=NULL;
            encontrou=strstr(receita[x].nome,nome_proc);
            if (encontrou!=NULL){
                printf("Nome: %s\tQuantidade de ingredientes: %i\nLista de ingredientes: %s",receita[x].nome,receita[x].qtd_ing,receita[x].ing);
            }
        }
    }
    strcpy(nome_proc," ");
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×