Ir para conteúdo
Fórum Script Brasil
  • 0

AJUDA


ASDFGHJKL

Pergunta

#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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

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

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...