Ir para conteúdo

Arquivado

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

GURILINO

Agenda com alocação dinâmica de memória

Recommended Posts

POR GENTILEZA, ESTOU COM UM PROBLEMAÇO, MEU PROFESSOR DEU UM TRABALHO E VALE 6 PTS NA MÉDIA, NÃO POSSO REPROVAR POIS SOU DO PRO UNI E NÃO POSSO PERDER MINHA BOLSA....

 

 

PRECISO TERMINAR ESSA AGENDA, MAS TO SEM CABEÇA PRA ISSO E TENHO QUE ENTRAGAR SEGUNDA À NOITE,QUE PUDER ME AJUDAR, MANDE UM MAIL PARA MIM (odonto@licitamax.com.br ou odontomk@yahoo.com.br)

segue problema:

 

ela deverá possibilitar opção de consulta ordenada, busca avançada (só do nome), alocar e liberar a memoria, de acordo com descrição das funções abaixo.

Desde já agradeço.

http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

 

#include <stdio.h>#include <stdlib.h>#include <conio.h>typedef struct contato{	   char nome[40];	   char mail[40];	   int fone;}CONTATO;void incluir();void excluir();void alterar();void consultar();void pesquisar();void aloca( CONTATO **pContato, int *piEntradas );//void alterando((pContato+1)->nome,iEntradas);void qs_ordena(CONTATO pContato[], int left, int right );void ordena( CONTATO pContato[], int iEntradas );int main(int argc, char *argv[]){	CONTATO *pContato	int op=0,iEntradas=0;	char x;		pContato = (CONTATO *) malloc(sizeof(CONTATO));	if (pContato == NULL)	{		printf("** Erro: Mem%cria Insuficiente **", 162);		exit(1);	}	do	{		fflush(stdin);		printf("\n\t\t\t@@@@@@@@@@@@@@@@@@@@@@\n\n");		printf("\n\t\t\t@   1 - Incluir	@");		printf("\n\t\t\t@   2 - Excluir	@");		printf("\n\t\t\t@   3 - Alterar	 @");		printf("\n\t\t\t@   4 - Consultar	  @");		printf("\n\t\t\t@   5 - Pesquisar	@");		printf("\n\t\t\t@   9 - Sair		 @\n\n");		printf("\n\t\t\t@@@@@@@@@@@@@@@@@@@@@@");			printf("\n\n ESCOLHA UMA OPCAO: ");		scanf("%d", &op);						switch (op)					{						   case 1 :								 incluir();								 break;						   case 2 :								 excluir();								 break;						   case 3 :								 alterar();								 break;						   case 4 :								 consultar();								 break;						   case 5 :								 pesquisar();								 break;						   case 9 :								 exit(1);								 break;						   default :								 printf("\n\nOPCAO INVALIDA\n\n");					}										system("PAUSE");	}while(1);	  	return 0;}void incluir(){	 int op=1, iEntradas=0;	 	 do	 {		 fflush(stdin);		 aloca(&pContato, &iEntrada);		 printf("\n\t*****inclusão*****\n");		 printf("\n\nEntre Com Nome: ");		 gets((pContato+iEntradas]->nome);		 printf("\nEntre Com E-mail: ");		 gets(pContato[iEntradas].mail);		 printf((*(pContato+iEntradas)).mail"\nEntre Com Telefone: ");		 scanf("%d", &pContato[iEntradas].fone);		 		 printf("\n\nCodigo do Contato: %d\n\n", (iEntradas+1));		 	 		 printf("Deseja incluir mais um nome? S = Sim  Nao = qquer tecla : ");		 scanf("%d", &x);		 		 if(x == 's' || x =='S')		  {			iEntradas++;			op=1;		  }		  else 		  {			   op=9;		  }		 CONTATO = (struct contato *) realloc(CONTATO, (i+2) * sizeof(struct contato));		 if (!CONTATO)		 {			 printf("** Erro: Memoria Insuficiente **");			 exit(1);		 }		 	 }while (op);}void excluir(){}void alterar(){}void consultar(){	 int iEntradas;	 	  for (iEntradas; = 0; iEntradas <= 2; iEntradas++)	 {		 printf("\n\nContato %d", iEntradas+1);		 printf("\n%s", pContato[iEntradas].nome);		 /*printf("\n%s", pContato[iEntradas].mail);		 printf("\n%d\n\n", pContato[iEntradas].fone);*/	 }}void pesquisar(){	 int iEntrada;	 char nomebusca[80];	 	 fflush(stdin);	 printf("Entre com o nome que deseja buscar: ");	 gets(nomebusca);	 	 for (iEntrada = 0; iEntrada <= 2; iEntrada++)	 {		 if (!strcmp(nomebusca, pContato[iEntrada].nome))		 {			printf("\n\n%s", pContato[iEntrada].nome);			printf("\n%s", pContato[iEntrada].mail);			printf("\n%d\n\n", pContato[iEntrada].fone);		 }	 }	 }void aloca( CONTATO **pContato, int *piEntradas ){   (*pContato) = (CONTATO *)(realloc(*pContato,			  (*piEntradas+1)*sizeof(CONTATO)));   if( *pContato == NULL )   {	  printf("\nErro de alocacao de memoria");	  exit(1);   }}void ordena( CONTATO pContato[], int iEntradas ){	qs_ordena(pContato, 0, iEntradas-1 );}void qs_ordena(CONTATO pContato[], int left, int right ){	register int i, j;	char * x;	CONTATO t;	i = left;	j = right;	x = pContato[(left+right)/2].nome;	do	{		while(strcmp(pContato[i].nome,x)<0 && i<right) i++;		while(strcmp(pContato[j].nome,x)>0 && j>left) j --;		if( i<=j )		{			t = pContato[i];			pContato[i]=pContato[j];			pContato[j]=t;			i++;			j--;		}	} while( i<=j );	if( left < j ) qs_ordena(pContato, left, i);	if( i<right) qs_ordena(pContato, i, right );}//void ordenar()

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.