Jump to content
Fórum Script Brasil
  • 0

Problema com passagem de parametro de matriz com lista encadeada


Kleber Neves
 Share

Question

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 to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...