Created
September 30, 2025 01:40
-
-
Save keinermendoza/509b441a5d100cee7ce032adbf39ca03 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <stdio.h> | |
| // Definição de uma constante para o tamanho da frota de ônibus. | |
| #define TAMANHO 10 | |
| // Definição da estrutura para um ônibus. | |
| struct Onibus { | |
| char numero[5]; // Número da linha do ônibus (string). | |
| int tempoEspera; // Tempo de espera ou de chegada (em minutos). | |
| }; | |
| int main() { | |
| // Inicialização da frota de ônibus com seus respectivos números. | |
| // O 'tempoEspera' é inicializado como 0 e será solicitado ao usuário. | |
| struct Onibus frota[TAMANHO] = { | |
| {"309", 0}, | |
| {"319", 0}, | |
| {"410", 0}, | |
| {"414", 0}, | |
| {"415", 0}, | |
| {"513", 0}, | |
| {"517", 0}, | |
| {"604", 0}, | |
| {"710", 0}, | |
| {"711", 0}, | |
| }; | |
| // Contador para percorrer a frota durante a entrada de dados. | |
| int onibus_cont = 0; | |
| // Solicita ao usuário que insira os tempos de chegada. | |
| printf("Por favor, insira os tempos de chegada dos ônibus (em minutos):\n"); | |
| // Laço 'do-while' para solicitar o tempo de chegada para cada ônibus. | |
| // Repete até que os tempos de todos os ônibus sejam inseridos. | |
| do { | |
| // Mostra o número do ônibus e o progresso (ex: "Ônibus número 309 (1/10)"). | |
| printf("Ônibus número %s (%d/%d): ", frota[onibus_cont].numero, onibus_cont + 1, TAMANHO); | |
| scanf("%d", &frota[onibus_cont].tempoEspera); // Lê o tempo de espera. | |
| // Validação: garante que o tempo de chegada seja positivo. | |
| if (frota[onibus_cont].tempoEspera <= 0) { | |
| printf("Erro: o tempo de chegada do ônibus deve ser maior que 0.\n\n"); | |
| // Se houver erro, volta ao topo do laço sem incrementar o contador. | |
| continue; | |
| } | |
| // Incrementa o contador se a entrada for válida. | |
| onibus_cont++; | |
| } while (onibus_cont < TAMANHO); | |
| // Mostra os tempos de chegada originais | |
| printf("\nTempos originais de chegada dos ônibus (em minutos):\n\n"); | |
| for (int i = 0; i < TAMANHO; i++) { | |
| printf("Ônibus %s chega em %d minutos\n", frota[i].numero, frota[i].tempoEspera); | |
| } | |
| printf("\n"); | |
| // Ordenação crescente (Bubble Sort) com base no tempo de chegada. | |
| for (int i = 0; i < TAMANHO - 1; i++) { | |
| for (int j = 0; j < TAMANHO - i - 1; j++) { | |
| // Compara se o tempo do elemento atual é maior que o do próximo. | |
| if (frota[j].tempoEspera > frota[j + 1].tempoEspera) { | |
| // Troca os elementos (o que garante a ordem crescente). | |
| struct Onibus temp; // Variável temporária para a troca. | |
| temp = frota[j]; | |
| frota[j] = frota[j + 1]; | |
| frota[j + 1] = temp; | |
| } | |
| } | |
| } | |
| // Mostra os tempos ordenados de forma crescente | |
| printf("Chegadas de ônibus em ordem crescente (do menor para o maior):\n\n"); | |
| for (int i = 0; i < TAMANHO; i++) { | |
| printf("Ônibus %s chega em %d minutos\n", frota[i].numero, frota[i].tempoEspera); | |
| } | |
| printf("\n"); | |
| // Ordenação decrescente (Bubble Sort) com base no tempo de chegada. | |
| for (int i = 0; i < TAMANHO - 1; i++) { | |
| for (int j = 0; j < TAMANHO - i - 1; j++) { | |
| // Compara se o tempo do elemento atual é menor que o do próximo. | |
| if (frota[j].tempoEspera < frota[j + 1].tempoEspera) { | |
| // Troca os elementos (o que garante a ordem decrescente). | |
| struct Onibus temp = frota[j]; | |
| frota[j] = frota[j + 1]; | |
| frota[j + 1] = temp; | |
| } | |
| } | |
| } | |
| // Mostra os tempos ordenados de forma decrescente | |
| printf("Chegadas de ônibus em ordem decrescente (do maior para o menor):\n\n"); | |
| for (int i = 0; i < TAMANHO; i++) { | |
| printf("Ônibus %s chega em %d minutos\n", frota[i].numero, frota[i].tempoEspera); | |
| } | |
| printf("\n"); | |
| return 0; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment