ME AJUDEM COM ESSE CÓDIGO, PRECISO ENTREGAR UM TRABALHO

1. ME AJUDEM COM ESSE CÓDIGO, PRECISO ENTREGAR UM TRABALHO

ceifatron da silva
ceifatron

(usa Outra)

Enviado em 09/04/2018 - 18:00h

Galera, preciso de ajuda com o seguinte problema no meu código de Lista duplamente encadeada em C. Precisamente na função de alterar dados de um nó na lista. O problema é que a alteração só funciona no ultimo nó feito, ou seja, no ultimo dado armazenado. A função altera o dado normalmente e retorna a lista porém caso eu queira alterar o 1° nó que eu coloquei a lista simplesmente é excluída. Eis abaixo o código da função busca, altera, e o chamado na main.

Lista* lDE_busca (Lista* l, int v)
{
Lista* p;
for (p=l; p!=NULL; p=p->prox)
if (p->ordem_Servico.id == v)
return p;
return NULL;
}

Lista* lDE_altera (Lista* l, OS v, int opcao)
{
Lista* p;
int x,y,z;
char nome[txt_pq];


for (p=l; p!=NULL; p=p->prox){
if (p->ordem_Servico.id == v.id)
{
if(opcao==1)
{
printf("Digite a nova data de execucao: \n");
printf("Dia: ");
scanf("%d", &x);
printf("\n");

printf("Mes: ");
scanf("%d",&y);
printf("\n");

printf("Ano: ");
scanf("%d", &z);

p->ordem_Servico.dataExecucao.dia = x;
p->ordem_Servico.dataExecucao.mes = y;
p->ordem_Servico.dataExecucao.ano = z;

return p;

}
else if(opcao==2)
{
printf("Digite o novo nome da Atividade: \n");
scanf("\n%[^\n]", &nome);

strcpy(p->ordem_Servico.nomeAtividade,nome);

return p;


}
else if(opcao==3)
{
printf("Digite o novo nome do Trabalhador: \n");
scanf("\n%[^\n]", &nome);

strcpy(p->ordem_Servico.nomeTrabalhador,nome);

return p;


}
else if (opcao==4)
{
printf("Digite a nova funcao do trabalhador: \n");
scanf("\n%[^\n]", &nome);

strcpy(p->ordem_Servico.funcao,nome);

return p;
}
else if(opcao==5)
{
printf("Digite a nova Descricao da Ordem de Servico: \n");
scanf("\n%[^\n]", &nome);

strcpy(p->ordem_Servico.descricao,nome);

return p;
}


}
}

return NULL;
}


MAIN

printf("Digite o ID da OS que vc deseja editar: ");
printf("\n");
scanf("%d",&auxIDeditar);

l = lDE_busca(l,auxIDeditar);

lDE_imprime(l);
printf("\n");

printf("O que vc deseja alterar? \n");

printf("\t [1]: Data de Execucao\n");
printf("\t [2]: Nome da Atividade\n");
printf("\t [3]: Nome do Trabalhador Responsavel\n");
printf("\t [4]: Funcao do Trabalhador\n");
printf("\t [5]: Descricao da OS\n");
printf("\t [0]: CANCELAR\n");
scanf("%d",&opcao_Editar);


if((l = lDE_busca(l,auxIDeditar)) != NULL)
{
l = lDE_altera(l,Nova_Ordem,opcao_Editar);

} else
{
printf("Elemento n encontrado.");
}



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts