Ir para conteúdo

ajuda cm codigo em c ... como ajuste da inclusão de forma a impossibilitar fármacos repetidos... nao sei o que usar pra fazer isso


Jungjhope Jhope

Posts Recomendados

#include <stdio.h> #include <stdlib.h> //usado system #include <ctype.h> //usado toupper #include <string.h> //usado strcmp struct TpFarma{ char Nome[20]; float Preco; int QEstoque; }; typedef struct TpFarma TpFARMA; TpFARMA RgFarma; FILE *ArqFarma; long int Tamanho=20*sizeof(char)+sizeof(float)+sizeof(int); void Incluir() { char R; do{ system("cls"); printf("*** inclusao ***\n\n"); printf("Nome: "); scanf("%s",RgFarma.Nome); printf("Preco: "); scanf("%f",&RgFarma.Preco); printf("Estoque: "); scanf("%d",&RgFarma.QEstoque); fseek(ArqFarma,0,2); fwrite(&RgFarma,Tamanho,1,ArqFarma); printf("\nNova inclusao? S/N "); scanf(" %c",&R); R=toupper(R);} while (R!='N'); return;} void Excluir(){ } long int TArquivo(){ fseek(ArqFarma,0,2); long int R=ftell(ArqFarma)/Tamanho; return R;} void Alterar(){ if (TArquivo()!=0){ fclose(ArqFarma); ArqFarma=fopen("Famacos.dat","r+b"); system("cls"); printf("*** alterar ***\n\n"); fseek(ArqFarma,0,0); printf("Qual farmaco? "); char Farmaco[20]; scanf("%s",Farmaco); int Achou=0; do { fread(&RgFarma,Tamanho,1,ArqFarma); if (strcmp(RgFarma.Nome,Farmaco)==0){ Achou=1; printf("Nome: %s\n",RgFarma.Nome); printf("Valor: %f\n",RgFarma.Preco); printf("Estoque: %d\n",RgFarma.QEstoque);}} while (!feof(ArqFarma)&&(Achou==0)); if (Achou==0) printf("Registro inexistente!"); else{ printf("Qual o novo preco? \n"); scanf("%f",&RgFarma.Preco); printf("Qual a nova quantidade? \n"); scanf("%d",&RgFarma.QEstoque); fseek(ArqFarma,-Tamanho,1); fwrite(&RgFarma,Tamanho,1,ArqFarma); printf(">>> Alteracao efetuada com sucesso! <<<\n");} system("pause"); fclose(ArqFarma); ArqFarma=fopen("Famacos.dat","a+b");} else{ printf("Arquivo Vazio. Nao existem dados a alterar."); system("pause");} return;} void Consultar() { system("cls"); printf("*** consulta ***\n\n"); fseek(ArqFarma,0,0); printf("Qual farmaco? "); char Farmaco[20]; scanf("%s",Farmaco); int Achou=0; do { fread(&RgFarma,Tamanho,1,ArqFarma); if (strcmp(RgFarma.Nome,Farmaco)==0){ Achou=1; printf("Nome: %s\n",RgFarma.Nome); printf("Valor: %f\n",RgFarma.Preco); printf("Estoque: %d\n",RgFarma.QEstoque);}} while (!feof(ArqFarma)&&(Achou==0)); if (Achou==0) printf("Registro inexistente!"); system("pause"); return;} void LTodos() { system("cls"); printf("*** lista todos ***\n\n"); fseek(ArqFarma,0,0); do { fread(&RgFarma,Tamanho,1,ArqFarma); if (!feof(ArqFarma)){ printf("Nome: %s\n",RgFarma.Nome); printf("Valor: R$%.2f\n",RgFarma.Preco); printf("Estoque: %d\n",RgFarma.QEstoque); printf("***\n\n");}} while (!feof(ArqFarma)); system("pause"); return;} int main(){ ArqFarma=fopen("Famacos.dat","a+b"); char Opcao; do{ system("cls"); printf("\n\n> > > Pague Pouco < < < \n\n"); printf("Que deseja fazer? \n\n"); printf("I - Incluir \n"); printf("E - Excluir \n"); printf("A - Alterar \n"); printf("C - Consultar \n"); printf("T - Listar Todos \n"); printf("S - Sair \n\n"); scanf(" %c", &Opcao); Opcao=toupper(Opcao); switch (Opcao){ case 'I': Incluir(); break; case 'E': Excluir(); break; case 'A': Alterar(); break; case 'C': Consultar(); break; case 'T': LTodos(); break;}} while (Opcao != 'S'); fclose(ArqFarma); return 0;}

Link para o comentário
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...