Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mmw

Limitar Nº de Registros

Recommended Posts

Galera fiz este programinha ae mas to tentando melhorá-lo. Sou iniciante então ta aí abaixo o código

 

Obs: Gostaria de limitar a 30 cadastros e não infinito como está.

 

//DIRETIVAS  #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <conio.h> #define MAX 21  //ESTRUTURA typedef struct Pessoa{		 char nome[MAX];		 char idade[MAX];		 char telefone[MAX];		 int num;		 struct Pessoa *prox;		 };		  //VARIÁVEIS GLOBAIS char nome[MAX], idade[MAX], telefone[MAX]; int num; Pessoa *topo;//ponteiro para o topo da pilha  //FUNÇÃO AUXILIAR LER DADOS  void ler_dados() {	  system("cls");	  	  printf ("\nDigite o nome: ");	  fflush (stdin);	  fgets (nome, MAX, stdin);	  	  printf ("Digite a Idade: ");	  fflush (stdin);	  fgets (idade, MAX, stdin);	  	  printf ("Digite o Telefone: ");	  fflush (stdin);	  fgets (telefone, MAX, stdin);	   }  //FUNÇÃO INSERIR void inserir_dados() {	  ler_dados();//chamando a função	  	  Pessoa *pnovo=(Pessoa*)malloc(sizeof(Pessoa));//alocando memoria para os novos elementos	  strcpy(pnovo->nome,nome);	  strcpy(pnovo->idade,idade);	  strcpy(pnovo->telefone,telefone);	  pnovo->num=num;	  pnovo->prox=NULL;	  	  if(topo==NULL)//se a pilha estiver vazia	  topo=pnovo; //topo recebe o novo elemento	  	  else{		   pnovo->prox=topo; 		   topo=pnovo;		   }		  		   }  //FUNÇÃO EXCLUIR void excluir_dados() {	  Pessoa *aux;	  	  if(topo==NULL){					 printf ("\n\nErro: Não há pessoas cadastradas\n\n");					 return;					 }					 					 else{						  aux=topo;						  topo=topo->prox;						  printf ("\n\nTodos os registros deletados com Sucesso\n\n");						  free(aux);						  } }  //FUNÇÃO LISTAR void exibir_dados() {	  Pessoa *aux;	  	  aux=topo;	  printf ("\t\tDADOS DA PESSOA\n\n");	  while(aux!=NULL){					   					   printf ("\nNome: %s", aux->nome);					   printf ("Idade: %s", aux->idade);					   printf ("Telefone: %s", aux->telefone);					   					   aux=aux->prox;					   }  }  //FUNÇÃO PRINCIPAL int main() {	 char op;	 topo=NULL;//incializando a pilha como vazia		do{		system("cls");				printf ("\t\t\tALGORITMO EM C PARA AGENDA");		printf ("\n\n(A) Iniciar\n");		printf ("(B) Inserir\n");		printf ("(C) Excluir\n");		printf ("(D) Exibir\n");		printf ("(E) Sair do Programa\n\n");				printf ("Digite a opcao: ");				op=toupper(getche());				switch(op){				   case'A': main();				   break;				   case'B': inserir_dados();				   break;				   case'C': excluir_dados();				   break;				   case'D': exibir_dados();				   break;				   case'E': exit(0);				   default: printf ("\n\nOpcao invalida, digite novamente.\n\n");				   }	   				   system("PAUSE");				   }while (op!='E');	 return (0); }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma forma de fazer isto é você ter uma variavel global que indique quantas pessoas você já cadastrou...ex: int numero_de_pessoas = 0;Toda vez que você chamar a função de inserir você verifica se o numero_de_pessoas > 30, você manda uma mensagem falando que a agenda está cheia, senão você insere e incrementa o numero_de_pessoas. Toda vez que você limpar a agenda você zera o numero de pessoas.Agora, uma sugestão, você utiliza pilha para controlar sua agenda.. isso trás algumas limitações como você ter que excluir todos os dados de uma vez ( ao invés de excluir só um dado ), dificuldade caminhar na agenda e coisas do tipo. Quando você tiver um tempinho procure saber sobre Listas Encadeadas, utilizando elas essa sua aplicação poderá ficar mais completa.Qualquer dúvida tamo ae. flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.