Ir ao conteúdo
  • Cadastre-se

C Programa de cadastro de produtos


Posts recomendados

Linguagem C

Uma estrutura para representar Produtos com os seguintes dados: Código, Descrição, Fornecedor, Quantidade, Preço de Venda e Preço de Compra. Crie um vetor para armazenar os dados de no máximo N produtos, sendo N informado previamente pelo usuário.

Implemente as seguintes funções:

a. Procedimento para imprimir na tela um menu de opções, conforme abaixo, o qual lê do usuário a opção informada e a retorna:

b. Se o usuário informou a opção 1 invoque uma função para ler as informações e cadastrar o produto;

c. Se o usuário informou a opção 2 invoque uma função para listar todos os produtos cadastrados;

d. Se o usuário informou a opção 3 implemente uma função que solicita o código do produto e o remove (lógica ou fisicamente, você escolhe) do vetor de produtos;

e. Se o usuário informou a opção 4 implemente uma função que receba os produtos cadastrados e salve-os em um arquivo texto chamado “produtos.txt”;

f. Se o usuário informou a opção 5 o programa deve ser encerrado.

Todas as funções acima devem ser invocadas a partir do programa (função)

Link para o post
Compartilhar em outros sites
  • 2 semanas depois...

@devair1010 Eu estou com problema na leitura da descrição e do fornecedor, se eu coloco os números usando virgula para separar o preço ele não lê corretamente a parte de descrição e fornecedor nem o preço de venda, ai vira uma bagunça e sai errado, porém se eu coloco com ponto ele lê corretamente. Queria saber como corrigir isso pra ele executar normalmente tanto com um quanto com o outro 

 

 

#include <stdio.h>
#include <string.h>
#include <locale.h>
#define MAX 80

int main(){

    int escolha,lin,col, total_prod=0,num_cadastro=0,zerar_col;
    int a = 0;

    float produtos[3][3], codigo;
    char descricao[50][50], fornecedor[50][50];


    char linha[MAX];
    FILE *pba;
    char *nome = "tarefa_Rodney.txt";

    while(escolha!=5){

    printf("Escolha uma das opções abaixo \n");
    printf("1-Cadastar produto \n");
    printf("2-listar todos os produtos \n");
    printf("3-Remover produto \n");
    printf("4-salvar produtos em arquivo texto \n");
    printf("5-Sair\n");
    scanf("%d", &escolha);

    switch(escolha){

        case 1:
            printf("Quantos produtos vai cadastrar? \n");
            scanf("%d",&num_cadastro);

            for (lin=0; lin<num_cadastro; lin++) {
                    total_prod++;
                for(col=0; col<4;) {
                    do{
                    printf("[%d]-[%d]Qual o codigo do produto? O codigo tem que ser diferente de 0 \n",lin, col);
                    scanf("%f",&produtos[lin][col]);
                    }while(produtos[lin][col] == 0);

                    col++;
                    do{
                    printf("[%d]-[%d]Qual a quantidade? a quantidade tem que ser diferente de 0 \n", lin, col);
                    scanf("%f",&produtos[lin][col]);
                    }while(produtos[lin][col]== 0);
                    col++;
                    printf("[%d]-[%d]Qual o preco de venda? \n", lin, col);
                    scanf("%f", &produtos[lin][col]);
                    col++;
                    printf("[%d]-[%d]Qual o preco de compra? \n", lin, col);
                    scanf("%f", &produtos[lin][col]);
                    col++;

                }
                    printf("Qual a descricao?\n");
                    scanf("%s",&descricao[lin]);

                    printf("Qual o fornecedor? \n");
                    scanf("%s", &fornecedor[lin]);

            }


            break;


        case 2:
            if(total_prod==0){
                printf("Não ha nenhum produto cadastrado\n");
                break;
            }

            for (lin=0; lin<num_cadastro; lin++){
                for (col=0; col<4;){
                printf("Codigo do produto m[%d][%d] = %.2f \n", lin, col, produtos[lin][col]);
                col++;
                printf("Quantidade m[%d][%d] = %.2f \n", lin, col, produtos[lin][col]);
                col++;
                printf("Preco de venda m[%d][%d] = %.2f \n", lin, col, produtos[lin][col]);
                col++;
                printf("Preco de compra m[%d][%d] = %.2f \n", lin, col, produtos[lin][col]);
                col++;
                }
                printf("Forncedor: %s\n",fornecedor[lin]);
                printf("Descricao: %s\n", descricao[lin]);
            }

        break;

        case 3:

            printf("Qual o codigo do produto?\n");
            scanf("%f", &codigo);

                for(lin=0; lin<num_cadastro; lin++){
                        zerar_col=lin;
                    for(col=0; col<4; col++){
                        if(codigo==produtos[lin][col]){

                                for(col=0; col<4; col++){
                                    produtos[zerar_col][col] = 0;

                                }
                            strcpy(fornecedor[zerar_col], " ");
                            strcpy(descricao[zerar_col], " ");

                            total_prod= total_prod - 1;
                            break;
                        }else{
                        printf("produto nao encontrado\n");
                        break;
                        }

                    }

                }
        break;

        case 4:
            if((pba=fopen(nome,"w+")) == NULL){
               printf ("\n\nNao foi possivel abrir o arquivo.\n\n");
               return 1;
            }

             for(lin=0; lin<num_cadastro; lin++){
                    for(col=0; col<4; col++){
                        fprintf(pba,"Codigo do produto m[%d][%d] = %.2f \n", lin, col, produtos[lin][col]);
                        col++;
                        fprintf(pba,"Quantidade m[%d][%d] = %.2f \n", lin, col, produtos[lin][col]);
                        col++;
                        fprintf(pba,"Preco de venda m[%d][%d] = %.2f \n", lin, col, produtos[lin][col]);
                        col++;
                        fprintf(pba,"Preco de compra m[%d][%d] = %.2f \n", lin, col, produtos[lin][col]);
                        col++;
                    }
                    fprintf(pba,"Descricao produto: %s\n", descricao[lin]);
                    fprintf(pba, "Fornecedor: %s\n", fornecedor[lin]);
             }

             fclose(pba); // fecha arquivo
             printf("\nArquivo %s gravado com sucesso!\n", nome);
             return 0;


        case 5://teste
            printf("Obrigado por usar este programa");
        break;

    }

}

}

Link para o post
Compartilhar em outros sites

@Rodney Junior    para usar tanto virgula como ponto , precisa fazer uma verificação do que foi digitado ,  e você pode pegar uma string pois elas aceitam qualquer caractere e depois converter essa string para float com o comando atof , e poderia ser assim :

// funcao converte string para float
float str_to_float(char prod[16])
{
    for (int i = 0; i < strlen(prod); i++)
        if (prod[i] == ',')
            prod[i] = '.';
    return atof(prod);
}
//-----------------------------------------------------------
switch (escolha)
{
    case 1:
        printf("Quantos produtos vai cadastrar? \n");
        scanf("%d", &num_cadastro);
        for (lin = 0; lin < num_cadastro; lin++)
        {
            total_prod++;
            char prod[16];
            for (col = 0; col < 4;)
            {
                do
                {
                    printf("[%d]-[%d]Qual o codigo do produto? O codigo tem que ser diferente de 0 \n", lin, col);
                    scanf("%s", prod);
                    while (char c = fgetc(stdin) != '\n');    // limpar o buffer do teclado
                    produtos[lin][col] = str_to_float(prod);  // converte string para float
                } while (produtos[lin][col] == 0);
                col++;
                do
                {
                    printf("[%d]-[%d]Qual a quantidade? a quantidade tem que ser diferente de 0 \n", lin, col);
                    scanf("%s", prod);
                    while (char c = fgetc(stdin) != '\n');    // limpar o buffer do teclado
                    produtos[lin][col] = str_to_float(prod);  // converte string para float
                } while (produtos[lin][col] == 0);
                col++;
                printf("[%d]-[%d]Qual o preco de venda? \n", lin, col);
                scanf("%s", prod);
                while (char c = fgetc(stdin) != '\n');    // limpar o buffer do teclado
                produtos[lin][col] = str_to_float(prod);  // converte string para float
                col++;
                printf("[%d]-[%d]Qual o preco de compra? \n", lin, col);
                scanf("%s", prod);
                while (char c = fgetc(stdin) != '\n');   // limpar o buffer do teclado
                produtos[lin][col] = str_to_float(prod); // converte string para float
                col++;
            }
            printf("Qual a descricao?\n");
            scanf("%s", &descricao[lin]);
            printf("Qual o fornecedor? \n");
            scanf("%s", &fornecedor[lin]);
        }
        break;
    
    

 

Link para o post
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...

Redes-Wi-Fi-capa-3d-newsletter.png

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!