Jump to content

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

Recommended Posts

#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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...