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 Correção da Prova 1 Ana Luiza Magalhães 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 : static void Main(string[] args) { Recursao(92); Console.ReadKey(); } static void Recursao(int x) { int valorUn = x ; int dec=0; int result; while (valorUn > 10) { valorUn = valorUn - 10; dec++; } result = dec + valorUn; Console.WriteLine(result); } Com recursão : static int comRecursao(int x, int deci) { x = x - 10; deci = deci + 1; if (x < 10) { return deci + x; } else { return comRecursao(x, deci); } } 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 void DuplicarElementos() { Stack<int> auxiliar = new Stack<int>(); foreach (int elemento in elementos) { auxiliar.Push(elemento); auxiliar.Push(elemento); } elementos.Clear(); foreach (int elemento in auxiliar) { elementos.Push(elemento); } } 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. class Fila { public Queue<int> elementos; private int capacidade; public Fila(int capacidade) { this.capacidade = capacidade; elementos = new Queue<int>(capacidade); } public void Enfileirar(int item) { elementos.Enqueue(item); } public bool IsCheia() { return elementos.Count == capacidade; } } 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(). class Fila { public Queue<int> elementos; public Fila() { elementos = new Queue<int>(); } public void Enfileirar(int item) { elementos.Enqueue(item); } public void Inverte() { Stack<int> pilhaAuxiliar = new Stack<int>(); while (elementos.Count > 0) { pilhaAuxiliar.Push(elementos.Dequeue()); } while (pilhaAuxiliar.Count > 0) { elementos.Enqueue(pilhaAuxiliar.Pop()); } } public void Imprimir() { foreach (int item in elementos) { Console.WriteLine(item); } } } 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(); } A saida será: 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(); } A saida será: 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