Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com passagem de parametro de matriz com lista encadeada


Kleber Neves

Pergunta

Bom dia pessoa !
Sou novo no fórum, acabei de me registrar e gostaria de pedir uma ajuda a vocês, pesquisei no fórum e não encontrei.
Preciso inserir valores em uma lista encadeada, mas está dando erro quando chega nas matrizes. O Código é um pouco grande, mas nem está terminado, buguei nessa parte e não encontro o erro.

O erro acontece no procedimento inserir fim.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct cadastro
{
//Dados cadastrais do colega
char nome[50];
char endereco[100];
char cidade[50];
char estado[30];
char idade[10];
char tresidencial[12];
char tcelular[12];
char email[30];
//Dados cadastrais do filho
int qtdfilhos;
char fnome[10][50];
char fnacionalidade[10][15];
char fidade[10][10];
char fsexo[10][15];
struct cadastro *prox;
};
typedef struct cadastro cad;
void inserirFim(cad **paramcad, char parnome[], char parendereco[], char parcidade[], char parestado[], char paridade[], char partresidencial[], char partcelular[], char paremail[], int parqtdfilhos, char parfnome[][50], char parfnacionalidade[], char parfidade[], char parfsexo[])
{
cad *ncad;//criando ponteiro nova lista.
ncad=(cad*)malloc(sizeof(cad));//alocando o espaço em memória
strcpy(ncad->nome, parnome);
strcpy(ncad->endereco, parendereco);
strcpy(ncad->cidade, parcidade);
strcpy(ncad->estado, parestado);
strcpy(ncad->idade, paridade);
strcpy(ncad->tresidencial, partresidencial);
strcpy(ncad->tcelular, partcelular);
strcpy(ncad->email, paremail);
ncad->qtdfilhos = parqtdfilhos;
strcpy(ncad->fnome, parfnome);
strcpy(ncad->fnacionalidade, parfnacionalidade);
strcpy(ncad->fidade, parfidade);
strcpy(ncad->fsexo, parfsexo);
ncad->proximo = NULL;
if(*paramcad == NULL)
{
*paramcad = ncad;//se for insere a nova lista no final
}
else
{
cad *cadaux;
cadaux = *paramcad; //coloca a lista atual na lista auxiliar
while(cadaux->proximo != NULL)
{ //e vai percorrendo a lista ate encontrar o final ou seja NULL
cadaux = cadaux->proximo; //enquato não acha o final ela fica colocando "as estruturas listas" na lista temporaria
}//obviamente uma ora ela vai chegar no final da lista ou seja nesta linha
cadaux->proximo = ncad;//como ele já esta no final da fila ele so adiciona a nova lista
}
}
void recebe(cad **paramcad)
{
int x;
printf("\nEste colega possui filho(s)?\n1 - Sim\n2 - não\n");
scanf("%d", &x);
if(x==1)
{
fflush(stdin);
char nome[50];
char endereco[100];
char cidade[50];
char estado[30];
char idade[10];
char tresidencial[12];
char tcelular[12];
char email[30];
//Recebe os dados cadastrais do colega
printf("\nDigite o nome: ");
gets(nome);
// inserirFim(&cadastro,tmp);
printf("Digite o endereco: ");
gets(endereco);
printf("Digite a cidade: ");
gets(cidade);
printf("Digite o estado: ");
gets(estado);
printf("Digite a idade: ");
gets(idade);
printf("Digite o telefone residencial: ");
gets(tresidencial);
printf("Digite o telefone celular: ");
gets(tcelular);
printf("Digite o email: ");
gets(email);
system("cls");
int qtdfilhos;
char fnome[10][50];
char fnacionalidade[10][15];
char fidade[10][10];
char fsexo[10][15];
system("cls");
printf("\nDigite a quantidade de filhos: ");
gets(qtdfilhos);
fflush(stdin);
int f;
f=qtdfilhos;
while(y != f)
{
printf("\nDigite os dados cadastrais do(s) filho(s)\n\n");
printf("Digite o nome do %d filho: ", y+1);
gets(fnome[y]);
fflush(stdin);
printf("Digite a nacionalidade: ");
gets(fnacionalidade[y]);
fflush(stdin);
printf("Digite a idade: ");
gets(fidade[y]);
fflush(stdin);
printf("Digite o sexo: ");
gets(fsexo[y]);
fflush(stdin);
system("cls");
y++;
}
inserirFim(paramcad,nome, endereco,cidade, etado, idade, tresidencial, tcellar, email, qtdfilhos, fnome, fnacionalidade, fidade, fsexo);
}
if(x==2)
{
fflush(stdin);
char nome[50];
char endereco[100];
char cidade[50];
char estado[30];
char idade[10];
char tresidencial[12];
char tcelular[12];
char email[30];
//Recebe os dados cadastrais do colega
printf("\nDigite o nome: ");
gets(nome);
// inserirFim(&cadastro,tmp);
printf("Digite o endereco: ");
gets(endereco);
printf("Digite a cidade: ");
gets(cidade);
printf("Digite o estado: ");
gets(estado);
printf("Digite a idade: ");
gets(idade);
printf("Digite o telefone residencial: ");
gets(tresidencial);
printf("Digite o telefone celular: ");
gets(tcelular);
printf("Digite o email: ");
gets(email);
system("cls");
cidade cidade cidade
inserirFim(paramcad,nome, endereco,cidade, etado, idade, tresidencial, tcellar, email);
}
if(x!= 1 && x!= 2)
{
printf("Opcao invalida!\n Escola uma opcao entre 1 e 2");
}
}
main()
{
int op=0;
int subop=0;
cad *cadastro;
cadastro=NULL;
while(op!=6)
{
system("cls");
printf("\nMenu Principal\n");
printf("\n1 - Cadastrar um novo colega e/ou filho\n2 - Mostrar os colegas cadastrados\n3 - Excluir um colega e/ou filho\n4 - Localizar os dados de um colega\n5 - Salvar as informacoes em arquivo\n6 - Sair\n");
printf("\n");
scanf("%d",&op);
switch (op)
{
case 1:
system("cls");
printf("\nMenu de Cadastramento\n\n1 - Cadastrar um colega\n2 - Cadastrar um filho\n\n");
scanf("%d", & subop);
system("cls");
printf("\n");
if(subop==1)
{
printf("\n");
system("cls");
printf("Preencha os dados cadastrais para seu colega:\n");
recebe(&cadastro);
}
if (subop==2)
{
printf("\n");
printf("Preencha os dados cadastrais para seu filhos:\n");
system("pause>>null");//será removido quando todo o programa estiver concluido
}
if(subop != 1 && subop!=2)
{
printf("\n");
printf("Opcao invalida\nSelecione 1 ou 2");
system("pause>>null");//será removido quando todo o programa estiver concluido
}
break;
case 2:
system("cls");
break;
case 3:
printf("Menu de Exclusao\n1 - Exlcuir um colega\n2 - Excluir um filho");
scanf("%d", & subop);
printf("\n");
if(subop==1)
{
}
if (subop==2)
{
}
if(subop != 1 && subop!=2)
{
}
break;
case 4:
break;
case 5:
break;
case 6:
op=6;
break;
default:
printf("\nOpcao invalida!\nSelecione uma opcao de 1 a 6");
system("pause>>null");
}
}
}
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...