underground Postado Novembro 17, 2011 Denunciar Share Postado Novembro 17, 2011 (editado) oi pessoal estou com problemas nesse código , ele insere um cadastro , mas quando insere o segundo , ele insere por cima, preciso de uma ajuda#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #define num_nos 10 struct tipo_no{ char nome[50]; char cor[20]; int ano; char chassis[25]; int prox; }; struct tipo_no nos[num_nos]; int inicioLista = -1; int noDisp = 0; void init(){ int i; for(i=0; i<num_nos -1; i++){ nos[i].nome[0]=''; nos[i].cor[0]=''; nos[i].ano=0; nos[i].chassis[0]=''; nos[i].prox = i+1; } nos[num_nos -1].nome[0]=''; nos[num_nos -1].cor[0]=''; nos[num_nos -1].ano=0; nos[num_nos -1].chassis[0]=''; nos[num_nos -1].prox = -1; } int buscaNoDisp(){ int a = noDisp; noDisp = nos[noDisp].prox; return(a); } int buscaUltimoNo(int ano){ int posanterior = inicioLista; int posatual = inicioLista; while(posatual != -1){ posanterior = posatual; posatual = nos[posatual].prox; } return (posanterior); } int buscaChasi(char chasi1[]){ int i, a; for (i=0; i<num_nos; i++){ if (strcmp(nos[i].chassis,chasi1)==0){ i=a; } } return (a); } void liberaNo(int no){ if(no == inicioLista){ inicioLista = nos[no].prox; } nos[no].prox = noDisp; noDisp = no; } void insereNo(char nome[50], char cor[20], int ano, char chassis[25]){ int noD = buscaNoDisp(); if(noD != -1){ int ultimoNo = buscaUltimoNo(ano); if(inicioLista == -1){ inicioLista = noD; ultimoNo = inicioLista; } nos[ultimoNo].prox = noD; strcpy(nos[noD].nome, nome); strcpy(nos[noD].cor, cor); nos[noD].ano = ano; strcpy(nos[noD].chassis, chassis); nos[noD].prox = -1; } } int main(){ int opcao, opcao2, ano, year1; char nome[50], cor[20], chassis[25], chasi1[25], color1[20], name1[50]; int i, indice=0; do{ do{ printf("1 - Incluir novo carro \n"); printf("2 - Alterar os dados de um carro \n"); printf("3 - Remover um carro \n"); printf("4 - Listar todos os carros cadastrados \n"); printf("9 - Sair do programa \n"); printf("Digite a opcao desejada:"); scanf("%i", &opcao); printf("\n"); }while(opcao != 1 && opcao != 2 && opcao != 3 && opcao != 4 && opcao != 9); switch(opcao){ case 1: printf("Digite o nome: \n"); scanf("%s", &nome); printf("Digite a cor: \n"); scanf("%s", &cor); printf("Digite o ano: \n"); scanf("%d", &ano); printf("Digite o chassis: \n"); scanf("%s", &chassis); insereNo(nome, cor, ano, chassis); break; case 2: printf("Digite o chassis do carro.\n"); scanf("%s", &chasi1); indice=buscaChasi(chasi1); do{ do{ printf("1 - Alterar o nome. \n"); printf("2 - Alterar a cor. \n"); printf("3 - Alterar o ano. \n"); printf("9 - Voltar ao menu principal. \n"); scanf("%i", &opcao2); }while(opcao2 != 1 && opcao2 != 2 && opcao2 != 3 && opcao2 != 9); switch(opcao2){ case 1: printf("Digite o nome: \n"); scanf("%s", &name1); strcpy(name1, nos[indice].nome); break; case 2: printf("Digite a cor: \n"); scanf("%s", &color1); strcpy(nos[indice].cor, color1); break; case 3: printf("Digite o ano: \n"); scanf("%d", &year1); nos[indice].ano = year1; break; } }while(opcao2 != 9); break; case 4: printf("\n"); for(i=0; i<2; i++){ printf("Nome:%s \n",nos[i].nome); printf("Cor:%s \n", nos[i].cor); printf("Ano:%i \n", nos[i].ano); printf("Chassis:%s \n", nos[i].chassis); } break; } }while(opcao != 9); return 0; } Editado Novembro 18, 2011 por underground Adicionar tag CODE Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 underground Postado Novembro 17, 2011 Autor Denunciar Share Postado Novembro 17, 2011 foi mal por não por tag CODE , meu primeiro post,voltando ao programa a função insere parece que tem algo errado porque ela insere o primeiro mas já no segundo ela insere por cima preciso de uma ajuda (primeiro ano de eng eletrica to sofrendo haahahahah) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
underground
oi pessoal estou com problemas nesse código , ele insere um cadastro , mas quando insere o segundo , ele insere por cima, preciso de uma ajuda
Editado por undergroundAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
1 resposta 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.