Buscar

Implementações de Métodos em C#

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

Continue navegando