Buscar

cria um algoritmo que descreve uma agenda?

💡 4 Respostas

User badge image

Andre Smaira

Para a resolução da questão foram usados conhecimentos em C e algoritmos, com conceitos de arquivos e struct.


#include <stdio.h>

#include <stdlib.h>

#include <ctype.h>

#include <conio.h>

#include <string.h>

typedef struct agenda

{

char nome[20];

int telefone;

}agenda;

FILE *arq;

agenda contato;

char menu()

{

printf("1 - Adicionar contato\n");

printf("2 - Mostrar lista de contatos\n");

printf("3 - Procurar contato pelo nome\n");

printf("4 - Procurar contato pelo numero\n");

printf("5 - Modificar contato\n");

printf("6 - Remover contato\n");

printf("0 - Sair\n");

printf("\n");

printf("> ");

return (toupper(getche()));

}

int verifica(char nome[])

{

fread(&contato,sizeof(agenda),1,arq);

while(!feof(arq))

{

if (strcmp(contato.nome,nome) == 0)

{

fseek(arq,-sizeof(agenda),SEEK_CUR);

return 1;

}

fread(&contato,sizeof(agenda),1,arq);

}

return 0;

}

int verifica_num(int num)

{

fread(&contato,sizeof(agenda),1,arq);

while(!feof(arq))

{

if (contato.telefone == num)

{

fseek(arq,-sizeof(agenda),SEEK_CUR);

return 1;

}

fread(&contato,sizeof(agenda),1,arq);

}

return 0;

}

void adiciona_contato()

{

char nome[20];

arq = fopen("banco.bin","a+b");

if (arq == NULL)

{

printf("Erro ao abrir arquivo\n");

return;

}

printf("\n\n");

printf("Digite o nome: ");

fflush(stdin);

gets(nome);

if (verifica(nome) == 1)

{

printf("\nNome ja existe.\n");

}

else

{

strcpy(contato.nome,nome);

printf("Digite o telefone: ");

scanf("%d", &contato.telefone);

fwrite(&contato,sizeof(agenda),1,arq);

}

fclose(arq);

}

void modifica()

{

char nome[20];

arq = fopen("banco.bin","r+b");

if (arq == NULL)

{

printf("Erro ao abrir arquivo\n");

return;

}

printf("\n\n");

printf("Digite nome do contato: ");

fflush(stdin);

gets(nome);

if (verifica(nome) == 1)

{

printf("\nDigite um novo nome: ");

fflush(stdin);

gets(nome);

strcpy(contato.nome,nome);

printf("\nDigite um novo numero de telefone: ");

scanf("%d", &contato.telefone);

fwrite(&contato,sizeof(agenda),1,arq);

}

else

{

printf("\nNome nao existe.\n");

}

fclose(arq);

}

void remove_contato()

{

char nome[20];

FILE *tmp;

arq = fopen("banco.bin","r+b");

if (arq == NULL)

{

printf("Erro ao abrir arquivo\n");

return;

}

tmp = fopen("banco.txt","a+b");

printf("\n\n");

printf("Digite nome do contato: ");

fflush(stdin);

gets(nome);

fread(&contato,sizeof(agenda),1,arq);

while (!feof(arq))

{

if (strcmp(contato.nome,nome) != 0)

{

fwrite(&contato,sizeof(agenda),1,tmp);

}

fread(&contato,sizeof(agenda),1,arq);

}

fclose(arq);

fclose(tmp);

system("del banco.bin");

system("ren banco.txt banco.bin");

}

void procura_nome()

{

char nome[20];

arq = fopen("banco.bin","r+b");

if (arq == NULL)

{

printf("Erro ao abrir arquivo\n");

return;

}

printf("\n\n");

printf("Digite o nome: ");

fflush(stdin);

gets(nome);

if (verifica(nome) == 1)

{

fread(&contato,sizeof(agenda),1,arq);

printf("\n\n");

printf("----------------------------------------\n");

printf("CONTATOS | TELEFONE \n");

printf("----------------------------------------\n");

printf("%-20s %8d\n", contato.nome,contato.telefone);

printf("----------------------------------------\n");

}

else

{

printf("\nContato nao existe.\n");

}

fclose(arq);

}

void procura_num()

{

int num;

arq = fopen("banco.bin","r+b");

if (arq == NULL)

{

printf("Erro ao abrir arquivo\n");

return;

}

printf("\n\n");

printf("Digite o telefone: ");

scanf("%d", &num);

if (verifica_num(num) == 1)

{

fread(&contato,sizeof(agenda),1,arq);

printf("\n\n");

printf("----------------------------------------\n");

printf("CONTATOS | TELEFONE \n");

printf("----------------------------------------\n");

printf("%-20s %8d\n", contato.nome,contato.telefone);

printf("----------------------------------------\n");

}

else

{

printf("\nContato nao existe.\n");

}

fclose(arq);

}

void mostrar_lista()

{

arq = fopen("banco.bin","r+b");

if (arq == NULL)

{

printf("Erro ao abrir arquivo\n");

return;

}

printf("\n\n");

printf("----------------------------------------\n");

printf("CONTATOS | TELEFONE \n");

printf("----------------------------------------\n");

fread(&contato,sizeof(agenda),1,arq);

while (!feof(arq))

{

printf("%-20s %8d\n", contato.nome,contato.telefone);

fread(&contato,sizeof(agenda),1,arq);

}

printf("----------------------------------------\n");

fclose(arq);

}

int main()

{

char op;

do

{

op = menu();

switch(op)

{

case '1': adiciona_contato(); break;

case '2': mostra_lista(); break;

case '3': procura_nome(); break;

case '4': procura_num(); break;

case '5': modificar(); break;

case '6': remove_contato(); break;

}

printf("\n");

system("PAUSE");

}while (op != '0');

return 0;

}

0
Dislike0
User badge image

Andre Smaira

Para a resolução da questão foram usados conhecimentos em C e algoritmos, com conceitos de arquivos e struct.


#include <stdio.h>

#include <stdlib.h>

#include <ctype.h>

#include <conio.h>

#include <string.h>

typedef struct agenda

{

char nome[20];

int telefone;

}agenda;

FILE *arq;

agenda contato;

char menu()

{

printf("1 - Adicionar contato\n");

printf("2 - Mostrar lista de contatos\n");

printf("3 - Procurar contato pelo nome\n");

printf("4 - Procurar contato pelo numero\n");

printf("5 - Modificar contato\n");

printf("6 - Remover contato\n");

printf("0 - Sair\n");

printf("\n");

printf("> ");

return (toupper(getche()));

}

int verifica(char nome[])

{

fread(&contato,sizeof(agenda),1,arq);

while(!feof(arq))

{

if (strcmp(contato.nome,nome) == 0)

{

fseek(arq,-sizeof(agenda),SEEK_CUR);

return 1;

}

fread(&contato,sizeof(agenda),1,arq);

}

return 0;

}

int verifica_num(int num)

{

fread(&contato,sizeof(agenda),1,arq);

while(!feof(arq))

{

if (contato.telefone == num)

{

fseek(arq,-sizeof(agenda),SEEK_CUR);

return 1;

}

fread(&contato,sizeof(agenda),1,arq);

}

return 0;

}

void adiciona_contato()

{

char nome[20];

arq = fopen("banco.bin","a+b");

if (arq == NULL)

{

printf("Erro ao abrir arquivo\n");

return;

}

printf("\n\n");

printf("Digite o nome: ");

fflush(stdin);

gets(nome);

if (verifica(nome) == 1)

{

printf("\nNome ja existe.\n");

}

else

{

strcpy(contato.nome,nome);

printf("Digite o telefone: ");

scanf("%d", &contato.telefone);

fwrite(&contato,sizeof(agenda),1,arq);

}

fclose(arq);

}

void modifica()

{

char nome[20];

arq = fopen("banco.bin","r+b");

if (arq == NULL)

{

printf("Erro ao abrir arquivo\n");

return;

}

printf("\n\n");

printf("Digite nome do contato: ");

fflush(stdin);

gets(nome);

if (verifica(nome) == 1)

{

printf("\nDigite um novo nome: ");

fflush(stdin);

gets(nome);

strcpy(contato.nome,nome);

printf("\nDigite um novo numero de telefone: ");

scanf("%d", &contato.telefone);

fwrite(&contato,sizeof(agenda),1,arq);

}

else

{

printf("\nNome nao existe.\n");

}

fclose(arq);

}

void remove_contato()

{

char nome[20];

FILE *tmp;

arq = fopen("banco.bin","r+b");

if (arq == NULL)

{

printf("Erro ao abrir arquivo\n");

return;

}

tmp = fopen("banco.txt","a+b");

printf("\n\n");

printf("Digite nome do contato: ");

fflush(stdin);

gets(nome);

fread(&contato,sizeof(agenda),1,arq);

while (!feof(arq))

{

if (strcmp(contato.nome,nome) != 0)

{

fwrite(&contato,sizeof(agenda),1,tmp);

}

fread(&contato,sizeof(agenda),1,arq);

}

fclose(arq);

fclose(tmp);

system("del banco.bin");

system("ren banco.txt banco.bin");

}

void procura_nome()

{

char nome[20];

arq = fopen("banco.bin","r+b");

if (arq == NULL)

{

printf("Erro ao abrir arquivo\n");

return;

}

printf("\n\n");

printf("Digite o nome: ");

fflush(stdin);

gets(nome);

if (verifica(nome) == 1)

{

fread(&contato,sizeof(agenda),1,arq);

printf("\n\n");

printf("----------------------------------------\n");

printf("CONTATOS | TELEFONE \n");

printf("----------------------------------------\n");

printf("%-20s %8d\n", contato.nome,contato.telefone);

printf("----------------------------------------\n");

}

else

{

printf("\nContato nao existe.\n");

}

fclose(arq);

}

void procura_num()

{

int num;

arq = fopen("banco.bin","r+b");

if (arq == NULL)

{

printf("Erro ao abrir arquivo\n");

return;

}

printf("\n\n");

printf("Digite o telefone: ");

scanf("%d", &num);

if (verifica_num(num) == 1)

{

fread(&contato,sizeof(agenda),1,arq);

printf("\n\n");

printf("----------------------------------------\n");

printf("CONTATOS | TELEFONE \n");

printf("----------------------------------------\n");

printf("%-20s %8d\n", contato.nome,contato.telefone);

printf("----------------------------------------\n");

}

else

{

printf("\nContato nao existe.\n");

}

fclose(arq);

}

void mostrar_lista()

{

arq = fopen("banco.bin","r+b");

if (arq == NULL)

{

printf("Erro ao abrir arquivo\n");

return;

}

printf("\n\n");

printf("----------------------------------------\n");

printf("CONTATOS | TELEFONE \n");

printf("----------------------------------------\n");

fread(&contato,sizeof(agenda),1,arq);

while (!feof(arq))

{

printf("%-20s %8d\n", contato.nome,contato.telefone);

fread(&contato,sizeof(agenda),1,arq);

}

printf("----------------------------------------\n");

fclose(arq);

}

int main()

{

char op;

do

{

op = menu();

switch(op)

{

case '1': adiciona_contato(); break;

case '2': mostra_lista(); break;

case '3': procura_nome(); break;

case '4': procura_num(); break;

case '5': modificar(); break;

case '6': remove_contato(); break;

}

printf("\n");

system("PAUSE");

}while (op != '0');

return 0;

}

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta.

User badge image

Outros materiais