Baixe o app para aproveitar ainda mais
Prévia do material em texto
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Sistemas de Informação GIOVANNA RIBEIRO SANTOS CORREÇÃO PROVA 01 Betim 2024 1. Implemente duas funções para somar os algarismos de um número inteiro positivo. A primeira implementação deve ser sem recursão. A segunda deve ser com recursão.Observação: Não serão aceitas implementações que converta o número inteiro para texto em alguma etapa do algoritmo. Sem recursão public static int SomarAlg(int numero) { int soma = 0; while (numero > 0) { soma += numero % 10; numero /= 10; } return soma; } Com recursão public static int SomarAlg(int numero) { if (numero < 10) return numero; return numero % 10 + SomarAlg(numero / 10); } 2. Método para duplicar elementos (não-recursivo). Implemente um método na classe Pilha chamado DuplicarElementos() que duplica cada elemento da pilha. Use uma pilha auxiliar para manter a ordem dos elementos. Exemplo: Para uma pilha com elementos [1, 2, 3], após a duplicação, a pilha deve ter [1, 1, 2, 2, 3, 3]. public class Pilha<T> { private Stack<T> pilha; public Pilha() { pilha = new Stack<T>(); } public void DuplicarElementos() { if (pilha.Count == 0) return; Stack<T> PilhaAux = new Stack<T>(); while (pilha.Count > 0) { T elemento = pilha.Pop(); PilhaAux.Push(elemento); PilhaAux.Push(elemento); } while (PilhaAux.Count > 0) { pilha.Push(PilhaAux.Pop()); } } 3. Método para se uma fila está cheia (não-recursivo). Implemente um método na classe Fila chamado IsCheia() que retorna verdadeiro se a fila está cheia e, caso contrário retorna falso. public class Fila<T> { private Queue<T> fila; private int CapacidadeMax; public Fila(int CapacidadeMax) { fila = new Queue<T>(); this.CapacidadeMax = CapacidadeMax; } public bool IsCheia() { return fila.Count == CapacidadeMax; } 4. Método para inverter uma fila. Implemente um método na classe Fila chamado Inverte() que inverte a ordem dos elementos da fila. Observação: Não utilizar o método Reverse(). public class Fila<T> { Queue<T> fila; public Fila() { fila = new Queue<T>(); } public void Inverte() { if (fila.Count == 0) return; Stack<T> pilhaAux = new Stack<T>(); while (fila.Count > 0) { PilhaAux.Push(fila.Dequeue()); } while (PilhaAux.Count > 0) { fila.Enqueue(PilhaAux.Pop()); } } } 5. Considerando a coleção Queue<int> do C#, qual será a saída do programa abaixo: static void Main(string[] args) { Queue<int> q = new Queue<int>(); q.Enqueue(8); q.Enqueue(5); Console.WriteLine(q.Peek()); Console.WriteLine(q.Dequeue()); q.Enqueue(1); q.Enqueue(4); Console.WriteLine(q.Dequeue()); q.Enqueue(2); Console.WriteLine(q.Peek()); Console.ReadKey(); } Saída: 8 8 5 1 6. Considerando a coleção Stack<int> do C#, qual será a saída do programa abaixo: static void Main(string[] args) { Stack<int> s = new Stack<int>(); s.Push(8); s.Push(5); Console.WriteLine(s.Peek()); Console.WriteLine(s.Pop()); s.Push(1); s.Push(4); Console.WriteLine(s.Pop()); s.Push(2); Console.WriteLine(s.Peek()); Console.ReadKey(); } Saída: 5 5 4 2 7. No C#, a classe que representa uma coleção do tipo último que entra, primeiro que sai (LIFO) é: (A) ArrayList (B) Hashtable (C) Queue (D) Stack 8. O comando correto utilizado para instanciar a classe Cliente é: : (A) Cliente objCliente = Cliente(); (B) Cliente objCliente = new Cliente(); (C) Cliente objCliente = new C(); (D) objCliente = Cliente(); 9. Denominação dada quando uma função ou procedimento realiza uma ou mais chamadas a ela mesma é: (A) Iteração (B) Repetição (C) Recursão (D) Laço 10.Veja o código a seguir: public class Lista { private int[] array; private int n; public Lista() : this(6) { } public Lista(int tamanho) { array = new int[tamanho]; n = 0; } public void inserirInicio(int x); public void inserirFim(int x); public void inserir(int x, int pos); public int removerInicio(); public int removerFim(); public int remover(int pos); public void mostrar(); } Implementação Solicitada: Procedimento inserirInicio(int x). Enunciado: Considere os seguintes fragmentos de código. Qual combinação implementa corretamente o método inserirInicio(int x) na classe Lista? Fragmentos de código: if (n == 0) return; if (n >= array.Length) throw new Exception(“Erro ao inserir!”); for (int i = n; i > 0; i--) array[i] = array[i- 1]; Console.WriteLine(‘‘Inserindo elemento no início.”); array[0] = x; n++; (A) ii, iv (B) i, iii (C) ii, iii, v (D) iv, i
Compartilhar