Ir para conteúdo
Fórum Script Brasil

ASDFGHJKL

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre ASDFGHJKL

ASDFGHJKL's Achievements

0

Reputação

  1. ASDFGHJKL

    AJUDA

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<string.h> #define MAX 10 typedef struct contratos { int id_contrato; char nome [40]; char id_local[50]; float potencia; int ocupado; } CONTRATOS; CONTRATOS * alocaMem(int n) { CONTRATOS* p; p=(CONTRATOS*)malloc(n*sizeof(CONTRATOS)); if(p==NULL) { printf("Memoria insuficiente"); return NULL;} else{ return p; } } void inicializa(CONTRATOS *p ,int n ) //indica que os n elementos nâo estâo ocupados. Sempre que se inserir CONTRATOS, //ocupado passa a 1 { for (int i=0;i<n;i++); { (*p).ocupado=0; p++; } } int menu() { int op; printf("\n #-------------------------------------------------------------------#"); printf("\n | Inserir CONTRATOS_____________________(1) |"); printf("\n | Apagar CONTRATOS______________________(2) |"); printf("\n | Mostrar CONTRATOS____________________(3) |"); printf("\n | Pesquisar CONTRATOS____________________(4) |"); printf("\n | FICHEIROS |"); printf("\n | Gravar ficheiro texto listaCONTRATOS.txt___________(5) |"); printf("\n | Ler ficheiro texto listaCONTRATOS.txt___________(6) |"); printf("\n | SAIR______________________________(0) |"); printf("\n #-------------------------------------------------------------------#\n"); do { printf("\n\n Qual a sua opcao ? "); scanf("%d", &op); } while ((op < 0) || (op > 6)); return op; } void inserir(CONTRATOS *p ,int n ) { int i=0; while ((i<n)&&((*p).ocupado==1)) { p++; i++; } if (i<n) { fseek(stdin,0,SEEK_END); printf("\nid_contrato:"); scanf("%d",&(*p).id_contrato); fseek(stdin,0,SEEK_END); printf("\nNome do Cliente:"); gets((*p).nome); printf("\nid_local:"); gets((*p).id_local); printf("\nPotencia:"); scanf("%f",&(*p).potencia); (*p).ocupado=1; } else{ printf("\nLista Completa"); } } void apagar( CONTRATOS *p,int n ) { int id_contrato,i=1; printf("\n Qual o id_contrato que quer apagar"); scanf("%d",&id_contrato); while(i<=MAX) if(id_contrato==(*p).id_contrato) { (*p).ocupado=0; } i++; p++; } void mostrar(CONTRATOS *p, int n) { for (int i = 0; i < n; i++) { if ((*p).ocupado == 1) printf("\n \n Id_contrato: %d \n Nome: %s \n Id_local: %s \n Potencia: %f", (*p).id_contrato, (*p).nome, (*p).id_local, (*p).potencia); else printf("\n Indice não ocupado"); p++; } } void pesquisar(CONTRATOS *p ,int n ) { int i; char procura[40]; printf("Introuza o nome de quem pretende pesquisar"); gets(procura); while(i<MAX) { if((*p).nome==procura) { printf("\n\nid_contrato: %d \nNome: %s \nId_local: %s \nPotencia: %f", (*p).id_contrato, (*p).nome,(*p).id_local,(*p).potencia); p++; } else printf("\nNome não encontrado");} } void gravaFichTexto(CONTRATOS *p , int n ) //s� faz sentido gravar elementos ocupados do vetor { FILE *fic; char *nome = "listaCONTRATOSs.txt"; fic=fopen(nome,"w"); if(fic==NULL) fprintf(stderr,"\n Impossivel abrir ficheiro"); else fwrite(p, sizeof(CONTRATOS),n,fic); fclose(fic); } void leFichTexto(CONTRATOS *p , int n ) //s� faz sentido gravar elementos ocupados do vetor { FILE *fic; char *nome = "listaCONTRATOSs.txt"; fic=fopen(nome,"w"); if(fic==NULL) fprintf(stderr,"\n Impossivel abrir ficheiro"); else fread(p, sizeof(CONTRATOS),n,fic); fclose(fic); } void main() { CONTRATOS* CONTRATOS; int opcao; CONTRATOS = alocaMem(MAX); inicializa(CONTRATOS, MAX); do { opcao = menu(); system("cls"); //em Linux e Mac system("clear"); switch (opcao) { case 1: inserir(CONTRATOS,MAX); break; case 2: apagar(CONTRATOS,MAX); break; case 3: mostrar(CONTRATOS,MAX); break; case 4: pesquisar(CONTRATOS,MAX); break; case 5: gravaFichTexto(CONTRATOS,MAX); break; case 6: leFichTexto(CONTRATOS,MAX); break; case 0: break; } printf("\n\n"); } while (opcao != 0); free(CONTRATOS); } alguém me poderia ajudar na funçaõ apagar e pesquisar.
×
×
  • Criar Novo...