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.
Pergunta
ASDFGHJKL
#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.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.