Ir ao conteúdo
  • Cadastre-se
Gabriel Hijazi

C Exercicio prova da faculdade

Recommended Posts

Pessoal, meu professor passou um trabalho da faculdade valendo como prova, o problema era criar um sistema de gerenciamente de estoque, porém quando fui submeter no portal a saida do código precisa ser identica a saida pré configurada pelo professor.

a saida que deve sair no programa é esta http://prntscr.com/lu74w4, a minha saida está assim http://prntscr.com/lu75cm que está errado ! alguem poderia me ajudar com o código para a saida como pedido ficar igual ? 

meu código e este, ficaria muito grato se me ajudassem preciso muito deste trabalho 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PRODUTOS 100

struct s_produtos {
    char nome[50];
    int id,volume;
    float preco;
};

struct s_produtos produtos[MAX_PRODUTOS];
int i;
int n_produtos = 0;

void cadastraProduto(struct s_produtos produto) {
    produtos[n_produtos] = produto;
    n_produtos++;
}

struct s_produtos leDados() {
    struct s_produtos auxiliar;
    printf("\n\n");

    printf("\nid:");
    fflush(stdin);
    scanf("%d",&auxiliar.id);

    printf("\nnome:");
    fflush(stdin);
    scanf("%s",auxiliar.nome);

    printf("\npeso:");
    fflush(stdin);
    scanf("%d",&auxiliar.volume);

    printf("\npreco:");
    fflush(stdin);
    scanf("%f", &auxiliar.preco);
    return auxiliar;
}

void imprimeProdutos() {
    for (i=0; i<n_produtos; i++) {
        printf("\nid:%d\n", produtos[i].id);
        printf("nome: %s\n", produtos[i].nome);
        printf("peso:%d", produtos[i].volume);
        printf("\npreco:%.f\n\n", produtos[i].preco);
       // printf("\n\nCodigo: %d\n", i+1)


    }
}

int menu() {
    int opcao;
    printf("\n\n");
    printf("1 - Adicionar \n");
    printf("2 - Listar \n");
    printf("3 - Deletar \n");
    printf("0 - Sair. \n");
    scanf("%d", &opcao);
    return opcao;
}

void remover(int posicao) {
    int indice = posicao - 1;
    int i = 0;

    if ((posicao < 1) || (posicao > n_produtos)) {
        printf("\nPosicao invalida!\n");
        return;
    }

    if (posicao == n_produtos) {
        n_produtos--;
        return;
    }

    for (i=indice; i<n_produtos; i++) {
        produtos[i] = produtos[i+1];
    }
    n_produtos--;
}

int main()
{
    int opcao_selecionada;
    int rem = 0;
    struct s_produtos novo_produto;
    int r;

    do {
        opcao_selecionada = menu();
        switch(opcao_selecionada) {
            case 0: break;

            case 1:
                if (n_produtos == MAX_PRODUTOS) {
                    printf("\nEstoque lotado !\n");
                    break;
                }
                novo_produto = leDados();
                cadastraProduto(novo_produto);
                break;
            case 2:
                imprimeProdutos();
                break;
            case 3:
                printf("Digite o ID do produto para DELETAR ");
                scanf("%d", &r);
                remover(r);
                break;
            default:
                printf("OPCAO INVALIDA");
        }
    }
    while (opcao_selecionada != 0);
    return 0;
}

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabriel Hijazi     a saída é o que a função imprimeProdutos faz , então precisa imprimir se a id existe ou não , então seu código com algumas modificações poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PRODUTOS 100

struct s_produtos {
    char nome[50];
    int id,volume;
    float preco;
};

struct s_produtos produtos[MAX_PRODUTOS];
int n_produtos,i;

void cadastraProduto(struct s_produtos produto) {
    produtos[n_produtos] = produto;
    n_produtos++;
}

struct s_produtos leDados(){
    struct s_produtos auxiliar;
    printf("\n\n");

    printf("\nid:");
    fflush(stdin);
    scanf("%d",&auxiliar.id);

    printf("\nnome:");
    fflush(stdin);
    scanf("%s",auxiliar.nome);

    printf("\npeso:");
    fflush(stdin);
    scanf("%d",&auxiliar.volume);

    printf("\npreco:");
    fflush(stdin);
    scanf("%f", &auxiliar.preco);
    return auxiliar;
}

void imprimeProdutos(){
    int g[3],w,flag;
    printf("informe o id de tres produto para Listar ");
    scanf("%d %d %d",&g[0],&g[1],&g[2]);
    for(w=0;w<3;w++){
        flag=0;
        for(i=0;i<n_produtos;i++){
            if(produtos[i].id==g[w]){
                printf("existe!\n");
                flag=1;
                break;
            }
        }
        if( flag ){
            /*for (i=0; i<n_produtos; i++){*/
            printf("id ------: %d\n"  , produtos[i].id    );
            printf("nome ----: %s\n"  , produtos[i].nome  );
            printf("preco ---: %.2f\n", produtos[i].preco );
            printf("peso ----: %d\n\n", produtos[i].volume);
        }
        else{
            printf("nao existe!\n");
            printf("produto com id %d deletado!\n\n",g[w]);
        }
    }
}

int menu() {
    int opcao;
    printf("\n\n"           );
    printf("1 - Adicionar\n");
    printf("2 - Listar\n"   );
    printf("3 - Deletar\n"  );
    printf("0 - Sair.\n"    );
    scanf("%d", &opcao      );
    return opcao;
}

void remover(int posicao) {
    int indice = posicao - 1,i;

    if ((posicao < 1) || (posicao > n_produtos)){
        printf("\nPosicao invalida!\n");
        return;
    }

    if(posicao == n_produtos){
        n_produtos--;
        return;
    }

    for(i=indice; i<n_produtos; i++){
        produtos[i] = produtos[i+1];
    }
    n_produtos--;
}

int main(){
    int opcao_selecionada;
    int rem = 0,r;
    struct s_produtos novo_produto;
    do{
        opcao_selecionada = menu();
        switch(opcao_selecionada){
            case 0:
                break;
            case 1:
                if(n_produtos == MAX_PRODUTOS) {
                    printf("\nEstoque lotado !\n");
                    break;
                }
                novo_produto = leDados();
                cadastraProduto(novo_produto);
                break;
            case 2:
                imprimeProdutos();
                break;
            case 3:
                printf("Digite o ID do produto para DELETAR ");
                scanf("%d", &r);
                remover(r);
                break;
            default:
                printf("OPCAO INVALIDA");
        }
    }
    while(opcao_selecionada != 0);
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

é desse jeito mesmo, mas eu acabei de receber uma atualização por conta do professor que os menus tem que ser interno! pois quem irá testar o programa é um bot como resolvo isso ? usando os menus internamente a resolução está corretissima só falta agora esses menus interno

adicionado 0 minutos depois

Agradeço muito sua atenção desde ja estou no desespero

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabriel Hijazi    o menu interno seria dentro da função main , então coloque  as funções dentro da função main , e isso pode ser assim  :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PRODUTOS 100

struct s_produtos {
    char nome[50];
    int id,volume;
    float preco;
};
int main(){
    system("cls");
    struct s_produtos produtos[MAX_PRODUTOS];
    int n_produtos=0,i=0;
    int g[3],w,flag,indice=0;
    int opcao_selecionada;
    int rem = 0,r=0;
    int opcao,j;
    do{
        system("cls");
        printf("\n\n"           );
        printf("1 - Adicionar\n");
        printf("2 - Listar\n"   );
        printf("3 - Deletar\n"  );
        printf("0 - Sair.\n"    );
        scanf("%d", &opcao      );
        opcao_selecionada = opcao;
        switch(opcao_selecionada){
            case 0:
                break;
            case 1:
                if(n_produtos == MAX_PRODUTOS) {
                    printf("\nEstoque lotado !\n");
                    printf("    Tecle !");
                    getch();
                    break;
                }
                printf("\n\n\nid:");
                fflush(stdin);
                scanf("%d",&produtos[n_produtos].id);

                printf("\nnome:");
                fflush(stdin);
                scanf("%s",produtos[n_produtos].nome);

                printf("\npeso:");
                fflush(stdin);
                scanf("%d",&produtos[n_produtos].volume);

                printf("\npreco:");
                fflush(stdin);
                scanf("%f", &produtos[n_produtos].preco);
                n_produtos++;
                break;
            case 2:
                printf("\ninforme o id de tres produto para Listar ");
                scanf("%d %d %d",&g[0],&g[1],&g[2]);
                for(w=0;w<3;w++){
                    flag=0;
                    for(i=0;i<n_produtos;i++){
                        if(produtos[i].id==g[w]){
                            printf("existe!\n");
                            flag=1;
                            break;
                        }
                    }
                    if( flag ){
                        /*for (i=0; i<n_produtos; i++){*/
                        printf("id ------: %d\n"  , produtos[i].id    );
                        printf("nome ----: %s\n"  , produtos[i].nome  );
                        printf("preco ---: %.2f\n", produtos[i].preco );
                        printf("peso ----: %d\n\n", produtos[i].volume);
                    }
                    else{
                        printf("\nnao existe!\n");
                        printf("produto com id %d deletado!\n\n",g[w]);
                    }
                }
                printf("    Tecle !");
                getch();
                break;
            case 3:
                printf("Digite o ID do produto para DELETAR ");
                scanf("%d", &r);
                indice = r;

                if((r < 1) || (r > n_produtos)){
                    printf("\nPosicao invalida!\n");
                    break;
                }

                if(r == n_produtos){
                    n_produtos--;
                    break;
                }

                for(i=indice; i<n_produtos; i++){
                    produtos[i] = produtos[i+1];
                }
                n_produtos--;
                break;
            default:
                printf("OPCAO INVALIDA");
        }
    }
    while(opcao_selecionada != 0);
    printf("\n\n");
    return 0;
}

 

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

×