Ir ao conteúdo
  • Cadastre-se

excluir registro.


yhhik

Posts recomendados

to fazendo um exercico em registro e estou com uma duvida no excluir.

meu codico exclui porém nao decrementa uma unidade da quantidade de elementos no vetor.

exemplo..cadastro 2 funcionarios, vou lá no excluir e deleto 1,quando volto

para cadastrar novamente ele comessa a partir do 3, ele nao decrementa 1.

espero que tenham entendido.

if(excluir==1){

printf("Codigo do funcionario:");

scanf("%d",&l);

i=l;//localiza funcionario

printf("\n\n Dados do %d funcionario.\n\n", i);

printf("\n A matricula do funcionario e: %d", funcionario.matri);

printf("\n O nome do funcionario e: %s",funcionario.nome);

printf("\n O sexo do funcionario e: %c",funcionario.sexo);

printf("\n A idade do funcionario e: %d",funcionario.idade);

printf("\nDeseja exluir? 0-nao,1-sim)");

scanf("%d",&resp);

if(resp==1){

for ( y = j; y < (i - 1); y++ ){

funcionario.matri=funcionario[y+1].matri;

strcpy (funcionario.nome,funcionario[y+1].nome);

funcionario.sexo=funcionario[y+1].sexo;

funcionario.idade=funcionario[y+1].idade;

}

y++;

funcionario[y].matri=0;

strcpy (funcionario[y].nome,"");

funcionario[y].sexo=0;

funcionario[y].idade=0;

i--;

}

system("cls");

}

o que está errado na estrutura?

Link para o comentário
Compartilhar em outros sites

1º - precisa de uma variável indicando qual é o ultimo elemento válido. É 'i', 'j', ou o que que é?

2º - o 'i' parece assumir mais de um papel durante o código.

3º - o laço for ficou estranho, ele começa em 'j'(seja lá quanto isso vale) e avança até (i-1). Em cada ciclo ele atribui para funcionário um valor diferente, no próximo ciclo esse valor é substituido por outro. No final das iterações funcionário==funcionario[i-2]; O mais lógico seria começar de i e avançar até o final, a cada ciclo atribui-se fuincionario[y]=funcionario[y+1]; no final todos os valores vão "escorregar" um nível e o último elemento fica repetido. Você pode apagar o ultimo membro ou simplesmente decrementar o contador de "valor final".


if(excluir==1){
printf("Codigo do funcionario:");
scanf("%d",&l);
i=l;//localiza funcionario

printf("\n\n Dados do %d funcionario.\n\n", i);
printf("\n A matricula do funcionario e: %d", funcionario[i].matri);
printf("\n O nome do funcionario e: %s",funcionario[i].nome);
printf("\n O sexo do funcionario e: %c",funcionario[i].sexo);
printf("\n A idade do funcionario e: %d",funcionario[i].idade);
printf("\nDeseja exluir? 0-nao,1-sim)");
scanf("%d",&resposta[B])[/B];

if(resposta=1){

for ( y = i; y < fim; y++ ){
funcionario[y].matri=funcionario[y+1].matri;
strcpy (funcionario[y].nome,funcionario[y+1].nome);
funcionario[y].sexo=funcionario[y+1].sexo;
funcionario[y].idade=funcionario[y+1].idade;
}
funcionario[y].matri=0;
strcpy (funcionario[y].nome,"");
funcionario[y].sexo=0;
funcionario[y].idade=0;
fim--;
}
system("cls");
}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...