preencher uma lista de contrato

1. preencher uma lista de contrato

Kevin
Sector c

(usa Outra)

Enviado em 19/04/2012 - 08:11h

Pretendo criar uma lista com vários elementos, mas estou tendo problemas por causa das condições que coloquei de acordo como está mencionado no trabalho:

typedef struct Tcliente
{
char operadora[10];
char nome[20];
char morada[50];
char tarifa[10];
int numero_telemovel;
float saldo;
struct Tcliente*prox;
}Cliente;
Cliente*servico=NULL;

Com esta lista, pretendo fazer contrato telefónico semelhante a de um contrato cabo-verdiano:
Comecei por reservar espaço de memória na lista, e depois preparar para preencher:

Cliente*novocontrato(char operadora[],char nome[],char morada[],int numero,float saldo)
{
Cliente*aux=servico;
if((aux=(Cliente*)malloc(sizeof(Cliente)))==NULL)
printf("Não rezervou espaco de memoria");
else
{
strcpy(aux->operadora,operadora);
strcpy(aux->nome,nome);
strcpy(aux->morada,morada);
numero=aux->numero_telemovel;
aux->saldo=saldo;

aux->prox=NULL;
}
return aux;
}


void registo_cliente(char operadora[],char nome[20],char morada[],int numero,float saldo)
{
Cliente*aux=novocontrato(operadora,nome,morada,numero,saldo);
if(aux!=NULL)
{
aux->prox=servico;
servico=aux;
}
}


Pretendo que ao invocar no ”main()” siga essas condições:
Começo a preencher , escolhendo operadora (entre “cvkovel” e ” tmenos”) , escreve o nome , a morada , numero e a tarifa. Cada contrato preenche o saldo com 200. A tarifa é escolhida de acordo com a operadora, se escolher “cvkovel”, tem que escolher entre: grilo, Segundo,powa;
Se escolher ” tmenos”, tem de escolher entre: clássico, Gold, jovem.
Por alguma razão , não posso guardar tarifa na mesma função de antes, por reservei outro espaço de memoria :

Cliente*degitetarifa(char tarifa[])
{
Cliente*aux=servico;
if((aux=(Cliente*)malloc(sizeof(Cliente)))==NULL)
printf("Não rezervou espaco de memoria");
else
{
strcpy(aux->tarifa,tarifa);
aux->prox=NULL;
}

}


void escolheTarifa(char tarifa[])
{
Cliente*aux=degitetarifa(tarifa);
if(aux!=NULL)
{
aux->prox=servico;
servico=aux;
}
}



Antes que me esqueça coloquei uma função para não fazer um contrato com mesmo numero:

int pesquisa(int num)
{
if(servico==NULL)
return 0;
else
{
Cliente*aux=servico;
while(aux!=NULL && aux->numero_telemovel!= num)
aux=aux->prox;

if(aux!=NULL)
return 1;

else
return 0;
}
}


Está é a função que coloquei no main(), e está me dando muitos problemas :

int numero;
int ops,tf,tf2;
char nome[20],morada[50],tarifa[10],operadora[10];
float saldo;
printf("\nOperadoara:");
printf("\n\n1.cvkovel\t2.tmenos\n");
scanf("%d",&ops);
if(ops==1)
strcpy(operadora,"cvkovel");

else if(ops==2)
strcpy(operadora,"tmenos");

printf("\nNome:");
scanf("%s",nome);
printf("\nMorada:");
scanf("%s",morada);
printf("\nNumero:");
scanf("%d",&numero);
saldo=200;
if(pesquisa(numero)==1)
{
printf("\nNumero ja registado\tInssira outro\n");
return 1;
}
else
{
if(strcmp(operadora,"tmenos")==0)
{
printf("\nTarifa:");
printf("\n\n1.classico\t2.gold\t3.jovem\n");
scanf("%d",&tf2);
if(tf2==1)
strcpy(tarifa,"classico");
else if(tf2==2)
strcpy(tarifa,"gold");
else if(tf2==3)
strcpy(tarifa,"jovem");
escolheTarifa(tarifa);
}
else if(strcmp(operadora,"cvkovel")==0)
{
printf("\nTarifa:");
printf("\n\n1.grilo\t2.segundo\t3.powa\n");
scanf("%d",&tf);
if(tf==1)
strcpy(tarifa,"grilo");
else if(tf==2)
strcpy(tarifa,"segundo");
else if(tf==3)
strcpy(tarifa,"powa");
}
}
registo_cliente(operadora,nome,morada,numero,saldo);
escolheTarifa(tarifa);



  


2. Re: preencher uma lista de contrato

Bruno Rogério Fernandes
brunorf

(usa Arch Linux)

Enviado em 25/04/2012 - 08:05h

E qual é a pergunta?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts