Exercício Estrutura de dados - Estacionamento
Por: Lidieisa • 2/2/2018 • 12.139 Palavras (49 Páginas) • 421 Visualizações
...
62. cont++;
63. printf("\n Carro de placa %d estacionado com sucesso.", placa); }
64. system("pause>NULL");
65. break;}
66.
67. /*O menu processa a saída da seguinte forma:
68. a) Se a pilha EST estiver vazia, não há carros para retirar.
69. b) Se tiver carros no estacionamento, faz um loop do..while, retirando o indicador e
70. a placa que estiverem no topo.
71. c) Compara a placa com o carro a ser retirado. Se for o carro procurado, informa
72. a saída
73. d) Se não, guarda a placa e o indicador na pilha RUA
74. e) Repete o ciclo, pegando o próximo indicador e carro do EST, até encontrar, ou
75. chegar ao fim da pilha.
76. f) Quando o loop acaba, retorna os carros e indicadores da pilha RUA, e recoloca na
77. pilha EST, acrencentando 1 a cada indicador de manobra. */
78. case 2: {
79. system("CLS");
80. /* Caso de não haver carros no estacionamento (pilha EST vazia) */
81. if (pilhaVazia(&est) == 1) {
82. printf("\n Não há carros no estacionamento.");
83. system("pause>NULL"); }
84.
85. /* Tem carros em EST. Procura pelo carro certo, */
86. else {
87. /* pegando a placa, */
88. printf("\n Digite a placa (ex.: 9999): ");
89. scanf("%d",&placa);
90.
91. e = 0;
92. /* e comparando com a placa retirada de EST */
93. do {
94. ind = pop(&est); /* retira o indicador da pilha */
95. temp = pop(&est); /* retira a placa */
96. /* e compara a placa com a digitada */
97. if (placa == temp) { /* se igual: encontrado o carro */
98. printf("\n O carro de placa %d saiu do estacionamento.", placa);
99. printf("\n Este carro foi manobrado %d vezes.", ind);
100. /* Uma perfumaria: é possível usar o indicador de manobras para
101. alguma coisa concreta, como, por exemplo, oferecer desconto
102. para cada manobra que teve que ser feita durante a permanência */
103. printf("\n Valor a ser pago: R$%2.2f", ( (float) 10 - (ind * 0.2 ) ) );
104. cont--; /* este contador guarda o total de carros no estacionamento */
105. printf("\n Vagas: %d", (TAM/2) - cont);
106. system("pause > NULL");
107. e = 1; /* para encerrar o loop de busca */
108. }
109. else { /* não encontrou, coloca o carro na RUA */
110. push(&rua, temp);
111. push(&rua, ind);
112. /* Se a pilha EST estiver vazia neste momento, o carro não
113. foi encontrado */
114. if (pilhaVazia(&est) == 1) {
115. printf("\n Carro não encontrado.");
116. system("pause>NULL");
117. e = 1; } /* Sair do loop de busca */
118. }
119. } while ( e == 0);
120.
121. /* Depois da busca, guardar novamente os carros no EST */
122. while (pilhaVazia(&rua) == 0) {
123. ind = pop(&rua); /* retira o indicador da RUA */
124. temp = pop(&rua); /* retira a placa da RUA */
125. push(&est, temp); /* guarda a placa no EST*/
126. push(&est, ind +1); /* incrementa e guarda o indicador no EST */
127. } }
...