Gente to construindo uma trabalho para a faculdade e estou com o seguinte problema.
fiz um while para verificar se o há algum codigo repetido na lista. ok ta funcionando mas quando digito um numero que no caso não e repetido o programa da erro.
alguém pode dar uma ajuda.
segue a funcao adicionar.
void adicionar() {
ptrnovo=(struct prs*) malloc(sizeof(struct prs));
digitar();
int cont=1;
char codl[30];
if (ptrprim==(struct prs*)NULL)//testa se a lista esta vazia
{ ptrprim=ptrant=ptratual=ptrnovo;
ptratual -> ptrprox=(struct prs*) NULL; n++;
printf("\nInformacoes armazenadas com sucesso!!!");
}
else { //não é o primeiro codigo
// codl é quem recebe o codigo//
while(strcmp(ptratual->codl, ptrnovo -> codl)!=0){
ptrant=ptratual; ptratual=ptratual->ptrprox;
if(cont==n) break; cont++;}
if (strcmp(ptratual->codl, ptrnovo -> codl)==0)
printf("\nCodigo de Livro já cadastrado.\n");
if(cont==n+1){
int a=0,b=0,ordem=0,cont,i;
ptratual=ptrprim;
while(ordem==0) { //enquanto estiver fora de ordem
cont=0; i=0; //reinicia os contadores
while(cont==0) {
a=ptrnovo->codl[i]; b=ptratual->codl[i]; //alterei aqui 19-11 as 15:19
if(a-b==0) i++;
else cont=1; } //fim do while 2
if(cont==1) {
a=ptrnovo->codl[i]; b=ptratual->codl[i];
if(a>b) {
if(ptratual->ptrprox==(struct prs *)NULL) {
ptrnovo->ptrprox=(struct prs *)NULL; ptratual->ptrprox=ptrnovo; ordem=1; n++;}
ptrant=ptratual; ptratual=ptratual->ptrprox; }
if(a<b) {
if(ptratual==ptrprim) {ptrnovo->ptrprox=ptrprim; ptrprim=ptrnovo;}
else { if(ptratual->ptrprox==(struct prs *)NULL){
ptrnovo->ptrprox=ptrant->ptrprox; ptrant->ptrprox=ptrnovo;}
else {ptrnovo->ptrprox=ptratual; ptrant->ptrprox=ptrnovo;}}
/*fim if */
ordem=1; n++;}/*fim do else */
}//fim do if
else ptratual=ptratual->ptrprox; } //fim do while 1
printf("\nInformacoes armazenadas com sucesso!!!");
} //fim do else
}
getch(); } //fim da fun‡ao
Pergunta
Licenciatura Computacao
Boa tarde.
Gente to construindo uma trabalho para a faculdade e estou com o seguinte problema.
fiz um while para verificar se o há algum codigo repetido na lista. ok ta funcionando mas quando digito um numero que no caso não e repetido o programa da erro.
alguém pode dar uma ajuda.
segue a funcao adicionar.
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.