Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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;
}

 

Postado

é 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
Postado

@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;
}

 

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