Função Incluir - Filas com Listas - Linguagem C

3 respostas
paloma

Oi alguém pode me dar uma ajuda, o programa roda, mas quando vou incluir, aparece uma janela, o programa precisa ser fechado.

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <conio.h>

typedef struct Cliente{
        char nome[31];
        char RG[20];
        char CPF[20];
        char agencia[5];
        char conta[10];
        struct Cliente *prox;
        };

typedef struct No_Desc{
        Cliente *inicio;
        Cliente *fim;
        int tam;
        };

//VARIÁVEIS GLOBAIS
char nome[31],RG[20],CPF[20],agencia[5],conta[10];
No_Desc *pNo_Desc;

//FUNÇÃO AUXILIAR
void cad_cliente()
{
     system ("cls");
     
     printf ("\t\t\tCADASTRO DE CLIENTES\n\n"); 
     printf ("\nNome: ");
     fflush (stdin);
     fgets (nome,31,stdin);
     
     printf ("\nRG: ");
     fflush (stdin);
     fgets (RG,20,stdin);
     
     printf ("\nCPF: ");
     fflush (stdin);
     fgets (CPF,20,stdin);
     
     printf ("\nAgencia: ");
     fflush(stdin);
     fgets (agencia,10,stdin);
     
     printf ("\nConta Corrente: ");
     fflush(stdin);
     fgets (conta,10,stdin);
}
    
//FUNÇÃO CRIAR FILA         
void criar_fila()
{
     pNo_Desc=(No_Desc*)malloc(sizeof(No_Desc));
     pNo_Desc->inicio=NULL;
     pNo_Desc->tam=0;
     pNo_Desc->fim=NULL;
}     

//FUNÇÃO INSERIR NA FILA
void incluir()
{
     cad_cliente();
     Cliente *pnovo;
     
    strcpy(pnovo->nome,nome);
    strcpy(pnovo->RG,RG);
    strcpy(pnovo->CPF,CPF);
    strcpy(pnovo->agencia,agencia);
    strcpy(pnovo->conta,conta);
    pnovo->prox=NULL;
    
    if(pNo_Desc->fim!=NULL) //verifica se a lista não está vazia 
      pNo_Desc->fim->prox=pnovo;
      
      else
       pNo_Desc->inicio=pnovo;
       
       pNo_Desc->tam=(pNo_Desc->tam)+1;
       pNo_Desc->fim=pnovo;
}
 
int main()
{
    char op;
    
    do{
         system("cls");
         
         printf ("\t\t\tANGENCIA BANCARIA UNICAP\n\n");
         printf ("(I)ncluir Cliente\n");
         printf ("(E)xcluir Cliente\n");
         printf ("(L)istar Clientes\n");
         printf ("(S)air do Programa\n\n");
         printf ("Digite a opcao: ");
         
         op=toupper(getche());
         
         switch(op){
                    case'I': incluir();
                    break;/*
                    case'E': excluir();
                    break;
                    case 'L': listar();
                    break;*/
                    case 'S': exit(0);
                    default: printf ("\n\nOpcao invalida, digite novamente.\n\n");
                    }
                    system ("PAUSE");
                    }while(op!='S');                 
    return (0);
}

3 Respostas

R

Codigo inteiro de um programa em C++ que trabalha com listas duplamente encadeadas.

Por favor… não copie… olhe… aprenda… e faça sozinho :wink:

http://rafb.net/paste/results/9J0lfS87.html

Se vc quiser algumas IDEs para desenvolvimento, acesse http://iprogrammer.blogspot.com/
Você vai encontrar links para fazer donwload do visual studio C++ e etc.

Abraços.
Boa sorte.

paloma

Alguém pode me dar uma ajuda com o código :oops: acima.

R

Paloma

Vc pode incluir uma elemento na sua lista... seguindo o seguinte codigo, mas antes... perceba que eu usei uma fancao getFicha() pois eu preciso coletar do usario o que ele quer digitar

Vc naum pode simplismente fazer isso:

Cliente *pnovo;
strcpy(pnovo->nome,nome);

Vc deveria fazer o seguinte !

Lista* lista = (Lista*) calloc(,sizeof(Lista));

Cliente* pnovo = (Cliente*) calloc(1,sizeof(Cliente));

printf(Digite a matricula do cliente);

scanf("%d",&pnovo->matricula);

ae vc chama uma funcao para inserir na lista

insere(lista, pnovo);

certo :wink:

para mais detalhes veja o codigo abaixo:

void insert(TListaFicha *lista, TFicha *ficha){
	TFicha *ficha_aux = lista->primeiro;
	
	if(ficha_aux != NULL){
		ficha_aux->ant = ficha;
		ficha->prox = ficha_aux;
	}

    lista->primeiro = ficha;
}

TFicha* getFicha(){
    TFicha* ficha = (TFicha*) calloc(1, sizeof(TFicha));
	ficha->pk = pk_ficha++;
    
	printf("\nDigite a matricula: ");
	fflush(stdin);
	scanf("%d",&ficha->matricula);

	printf("\nNome do aluno: ");
	fflush(stdin);
	char tmp[255];
	gets(tmp);
	ficha->nome = (char*) calloc(strlen(tmp),sizeof(char));
	strcpy(ficha->nome,tmp);

	ficha->curso = getCurso();
	ficha->data_nascimento = getDataNascimento();
	ficha->prox = NULL;
	ficha->ant = NULL;

    return ficha;
}
Criado 5 de junho de 2006
Ultima resposta 5 de jun. de 2006
Respostas 3
Participantes 2