Fabin Postado Junho 8, 2011 Denunciar Share Postado Junho 8, 2011 Boa tarde pessoal!Estou com duvida em um exercicio aquiconsiste em um cadastro de carros para entrarem na cegonha1 - usuário digita quantos carros serao entregues e todos são lidos e guardados em um vetor dinamico2 - logo apos são ordenados de forma decrescente3 - são inseridos na pilha4 - são retirados elementos da pilhaesta desorganizado ainda pois estou fazendo os teste primeirosconnsegui cadastarr e ordenar de forma decrescente porem não estou conseguindo inserir na pilha alguém pode me ajudar#include <stdlib.h> #include <stdio.h> #include <string.h> typedef struct TIPO_NO* TIPO_APONTADOR; typedef struct TIPO_NO { int info; TIPO_APONTADOR next; }TIPO_NODO; typedef struct{ TIPO_APONTADOR inicio; TIPO_APONTADOR fim; }TIPO_TADS; typedef struct { int NF; char modelo[50]; int ordem_entrega; }TIPO_CARRO; void inserir_carro(TIPO_CARRO *y, int qtde_carros); void mostra_carros(TIPO_CARRO *y, int qtde_carros); void selecao_direta(TIPO_CARRO *y , int qtde_carros); void inicializa_pilha(TIPO_TADS *pilha); void insere_pilha(TIPO_TADS *pilha, TIPO_CARRO *y, int qtde_carros); TIPO_CARRO retira_pilha(TIPO_TADS *pilha, TIPO_CARRO *y, int qtde_carros); int main() { TIPO_CARRO *car; TIPO_TADS pilha; int qtde_carro; char op; inicializa_pilha(&pilha); printf("Digite a quantidade de carros a ser entregues:\t"); scanf("%d",&qtde_carro); car = (TIPO_CARRO *)malloc(sizeof(TIPO_CARRO) * qtde_carro); inserir_carro(car, qtde_carro); //mostra_carros(car, qtde_carro); selecao_direta(car, qtde_carro); printf("\nOrdenacao de Pedidos decrescente para coloca-los na Cegonha\n"); mostra_carros(car, qtde_carro); printf("Deseja inserir elementos na fila (S)im/(N)ao:\t"); scanf("%c",&op); switch(op) { case 'S': insere_pilha(&pilha, car,qtde_carro); break; case 'N': break; } system("pause"); return 0; } void inserir_carro(TIPO_CARRO *y, int qtde_carros) { TIPO_CARRO *carro = y; for(int i=0;i<qtde_carros;i++) { system("cls"); printf("Digite o numero da nota fiscal do pedido %d:\t",i+1); scanf("%d",&carro[i].NF); printf("Digite o modelo do carro do pedido %d:\t",i+1); fflush(stdin); gets(carro[i].modelo); printf("Digite a ordem que foi entregue o carro do pedido %d:\t",i+1); scanf("%d",&carro[i].ordem_entrega); } } void mostra_carros(TIPO_CARRO *y, int qtde_carros) { TIPO_CARRO *carro = y; for(int i=0; i<qtde_carros;i++) { printf("\n\n"); printf("NF:\t%d\n",carro[i].NF); printf("Modelo:\t%s\n",carro[i].modelo); printf("Ordem:\t%d\n",carro[i].ordem_entrega); } } void selecao_direta(TIPO_CARRO *y , int qtde_carros) { TIPO_CARRO *carro = y, aux, maior; int i,j,posicao_maior; for(i=qtde_carros - 1;i>0;i--) { maior = carro[i]; posicao_maior = i; for(j=i - 1;j>=0;j--) { if(carro[j].ordem_entrega < maior.ordem_entrega) { maior = carro[j]; posicao_maior = j; } } aux = maior; carro[posicao_maior] = carro[i]; carro[i] = aux; } } void inicializa_pilha(TIPO_TADS *pilha) { pilha -> inicio = NULL; //base pilha -> fim = NULL; //topo } void insere_pilha(TIPO_TADS *pilha, TIPO_CARRO *y, int qtde_carros) { TIPO_CARRO *carro = y; TIPO_APONTADOR aux; aux = (TIPO_APONTADOR)malloc(sizeof(TIPO_NODO)); if(aux == NULL) { printf("Erro: Fila cheia!\n"); system("pause"); }else{ for(int i=0; i<qtde_carros; i++){ aux -> info = carro[qtde_carros]; aux -> next = fim; fila -> fim = aux; } } } TIPO_CARRO retira_pilha(TIPO_TADS *pilha, TIPO_CARRO *y, int qtde_carros) { TIPO_APONTADOR aux; TIPO_CARRO *carro = y; carro[qtde_carros] = pilha -> fim -> info; pilha -> fim = pilha -> fim--; if(pilha -> fim == NULL) { pilha -> inicio = NULL; } free(aux); return carro[qtde_carros]; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CPP Postado Junho 10, 2011 Denunciar Share Postado Junho 10, 2011 Fala Fabin,já resolveu essa pendenga?Meu, sua função que insere na pilha tá bem maluca heim.Tem variavel não declarada, você passa carros[qtd_carros] ao invés de carros[n] e etc.Se ainda precisar de ajuda pra resolver fala ai.Abs Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Fabin
Boa tarde pessoal!
Estou com duvida em um exercicio aqui
consiste em um cadastro de carros para entrarem na cegonha
1 - usuário digita quantos carros serao entregues e todos são lidos e guardados em um vetor dinamico
2 - logo apos são ordenados de forma decrescente
3 - são inseridos na pilha
4 - são retirados elementos da pilha
esta desorganizado ainda pois estou fazendo os teste primeiros
connsegui cadastarr e ordenar de forma decrescente porem não estou conseguindo inserir na pilha alguém pode me ajudar
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.