Universidade do Estado do Rio de Janeiro (UERJ)

Disciplina: Introdução à Programação
Professor: Angelo Mondaini Calvão
Data: ___ / ___ / 2024
Primeira Prova - 2º Semestre de 2024

Nome do Aluno: ______________________________ Matrícula: ____________

Instruções Gerais:
  1. Não é permitido o uso de celulares ou outros dispositivos eletrônicos.
  2. Todas as respostas devem ser justificadas.
  3. Escreva de forma legível e organize bem suas respostas.
  4. Recomenda-se começar pela questão que você considera mais fácil.
  5. Implemente a função e forneça um exemplo de uso no main().

Questão 1

Escreva uma função chamada 'buscarElemento' que recebe como parâmetros: um array de inteiros, o tamanho do array, o elemento a ser buscado, e uma referência para uma variável que armazenará a posição do elemento encontrado. A função deve retornar um valor booleano (bool): true se o elemento for encontrado, false caso contrário. Se encontrado, atualize a variável de referência com a primeira posição do elemento.

Exemplo:
Entrada: array = {10, 20, 30, 40, 50}, tamanho = 5, elemento = 30
Saída: true (elemento encontrado)
Posição: 2

Questão 2

Implemente uma função chamada 'ordenarArray' que ordena um array de números inteiros. Parâmetros: array de inteiros, tamanho do array, flag para indicar ordem (crescente/decrescente). Ordene in-place, sem usar funções prontas da biblioteca padrão. Comente explicando o algoritmo escolhido e o uso da flag.

Exemplo:
Entrada: array = {5, 2, 8, 1, 9}, tamanho = 5, flag = crescente
Saída: {1, 2, 5, 8, 9}

Questão 3

Crie a função 'gerarSequencia' que preenche um array com uma sequência específica. Parâmetros: array de inteiros e seu tamanho. Preencha: primeiras duas posições com 1, elementos seguintes somam os dois anteriores. Para arrays menores que 2, preencha as posições disponíveis com 1. Use um loop e garanta funcionamento para diferentes tamanhos.

Exemplo:
Entrada: tamanho = 6
Saída: {1, 1, 2, 3, 5, 8}

Questão 4

Implemente 'trocarArraysInverso' que troca elementos de dois arrays na ordem inversa. Parâmetros: dois arrays de inteiros e seu tamanho (igual para ambos). Troque: primeiro elemento do primeiro array com o último do segundo, e assim por diante. Use um loop, sem array adicional. Explique a lógica usada.

Exemplo:
Entrada: array1 = {1, 2, 3, 4, 5}, array2 = {10, 20, 30, 40, 50}, tamanho = 5
Saída: array1 = {50, 40, 30, 20, 10}, array2 = {5, 4, 3, 2, 1}

Questão 5

Implemente a função 'avaliarMudancaMarcha' que simula recomendações de mudança de marcha para um carro. Parâmetros: RPM, velocidade (km/h), marcha atual (1-5). Retorne: "Subir Marcha", "Descer Marcha" ou "Manter Marcha".

MarchaFaixa de RPM idealFaixa de Velocidade ideal (km/h)
11000 - 25000 - 20
21500 - 300015 - 40
32000 - 350030 - 60
42500 - 400050 - 80
53000 - 450070+
Exemplo:
Entrada: RPM = 3200, velocidade = 45, marcha atual = 2
Saída: "Subir Marcha"

Dicas de implementação:

  1. Considere criar quatro arrays para armazenar os limites mínimos e máximos de RPM e velocidade para cada marcha.
  2. Use o número da marcha atual para determinar qual índice dos arrays de limites você deve verificar.
  3. Compare o RPM e a velocidade fornecidos com os limites correspondentes à marcha atual.
  4. Trate casos especiais: primeira e quinta marchas, valores fora das faixas definidas.
  5. Teste sua função com diversos cenários.

Crie uma lógica clara e eficiente que possa lidar com todos os casos possíveis de entrada.

Média Final:

Boa Prova!