Ir ao conteúdo
  • Cadastre-se

C Structs "Banco de Dados"


Visitante

Posts recomendados

Em um loop de entrada, o usuário informará a descrição do produto, a quantidade em estoque e o valor unitário de cada produto. Caso a descrição do produto não seja informada (ENTER), não deve se pedir a quantidade em estoque nem o valor unitário E o loop de entrada deve ser interrompido.

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

int main(){

    struct produtos_estoque{

        int id;
        char produto[50];
        float qtd_estoque;
        float val_unit;

    };
        struct produtos_estoque estoque[10];
        int i;

    printf("\n|--------------------Estoque--------------------|");
    printf("\n|-----------------------------------------------|\n");
    for(i=0; i<10; i++){



    fflush(stdin);
    printf("\n|Produto...................: ");
    gets(estoque[i].produto);

    printf("|Quantidade em estoque.....: ");
    scanf(" %f",&estoque[i].qtd_estoque);

    printf("|Valor do produto.....: ");
    scanf(" %f", &estoque[i].val_unit);

    }
    printf(" ---------------Valores do Estoque--------\n\n\n");
}

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, VictóriaS2 disse:

Em um loop de entrada, o usuário informará a descrição do produto, a quantidade em estoque e o valor unitário de cada produto. Caso a descrição do produto não seja informada (ENTER), não deve se pedir a quantidade em estoque nem o valor unitário E o loop de entrada deve ser interrompido

 

Isso quer dizer que há duas maneiras de sair desse modo de entrada: 

  • a descrição do produto não foi informada, então vai parar de ler
  • atingiu o limite de produtos que foi estabelecido, e não tem para onde ler

Seu programa deve claro tratar os dois casos.

 

É bem possível 🤔 que precise saber a cada momento quantos produtos tem no estoque, não apenas na leitura ou seu programa não vai servir para nada.

 

A primeira função que deve escrever é uma que mostra o que tem dentro desse Estoque. Ou sequer vai saber se leu direito. 

 

Considere que algo assim seria mais esperto:

 

typedef struct
{
    int id;
    char produto[50];
    float qtd_estoque;
    float val_unit;

}   Produto;


typedef struct
{
    int quant;
    Produto     p[MAX_P_];

}   Estoque;

 

Assim cada Estoque tem sua quantidade de produtos DENTRO e tudo fica mais fácil

 

Exemplo de como usar

 

#define     MAX_P_  5 // maximo de produtos nesse teste
#include <stdio.h>

typedef struct
{
    int id;
    char produto[50];
    float qtd_estoque;
    float val_unit;

}   Produto;

typedef struct
{
    int quant;
    Produto     p[MAX_P_];

}   Estoque;


int main()
{
    Estoque outro = 
    {
        .quant = 3,
        .p[0] = { 1, "lata", 12, 5.38 },
        .p[2] = {
            .val_unit = 0.12,
            .id = 12,
            .qtd_estoque = 11.2,
            .produto = "outra coisa"
        },
        .p[1] = { 100, "latinha", 5., 15.38 }
    };

    printf( "\n==> %d produtos no estoque 'outro'\n\n", outro.quant );
    printf("O terceiro produto: \
\"%s\": Cod = %d custa R$%6.2f, estoque = %6.2f\n",
    outro.p[2].produto,
    outro.p[2].id,
    outro.p[2].val_unit,
    outro.p[2].qtd_estoque );


    return 0;
}

 

e que mostra

 

==> 3 produtos no estoque 'outro'

O terceiro produto: "outra coisa": Cod = 12 custa R$  0.12, estoque =  11.20


Entenda que assim você declara um Estoque: 

 

    Estoque um;
    um.quant = 0;

 

E começa vazio para a fase de leitura.

 

E você pode inicializar um pequeno estoque para ir testando ao invés da interminável leitura de 4 valores por produto para um estoque de teste que vai levar a vida toda. 

 

Quando o programa estiver ok você coloca a leitura, que é trivial.

 

NUNCA use gets(). É proibida em todo lugar, escolas e empresas. Não é aceita em todos compiladores. Seu compilador sempre vai reclamar. E é bobagem, porque como gets() não tem como informar o tamanho do campo pode cancelar seu programa a toa se estourar algum campo...

 

 

 

Link para o comentário
Compartilhar em outros sites

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