Curso de Programação C#

William Ivanski

Lista de Exercícios Capítulo 5 (Respostas)


1) Dada uma sequência de N números, imprimi-la na ordem inversa.

List<int> vetor;
int n;

vetor = new List<int>();

Console.Write("Quantos números? ");
n = int.Parse(Console.ReadLine());

for (int i = 1; i <= n; i++)
{
    Console.Write("Digite o número {0}: ", i);
    vetor.Add(int.Parse(Console.ReadLine()));
}

Console.WriteLine("Os números que você digitou, na ordem inversa, são: ");

for (int i = vetor.Count-1; i >= 0; i--)
    Console.WriteLine(vetor[i]);

Console.ReadKey();

2) Dado um número N, imprimi-lo como uma soma de múltiplos de 10 mais a sua unidade.
Exemplo: 472 = 400 + 70 + 2

List<int> vetor;
string n;
bool negativo;

vetor = new List<int>();

Console.Write("Digite um número inteiro: ");
n = Console.ReadLine();

negativo = false;
foreach (char c in n.ToCharArray())
{
    if (c == '-')
        negativo = true;
    else
        vetor.Add(int.Parse(c.ToString()));
}
vetor.Reverse();

if (negativo)
    Console.Write("{0} = -{1} - ", n, (vetor[vetor.Count-1] * Math.Pow(10, vetor.Count-1)));
else
    Console.Write("{0} = {1} + ", n, (vetor[vetor.Count-1] * Math.Pow(10, vetor.Count-1)));
for (int i = vetor.Count - 2; i > 0; i--)
{
    if (negativo)
        Console.Write("{0} - ", (vetor[i] * Math.Pow(10, i)));
    else
        Console.Write("{0} + ", (vetor[i] * Math.Pow(10, i)));
}
Console.WriteLine("{0}", vetor[0]);

Console.ReadKey();

3) Números palíndromos são aqueles que são lidos da direita para a esquerda da mesma maneira que da esquerda para a direita.
Exemplo: o número 12321 é palíndromo, enquanto 123 não é.
Dado um número N, informar se ele é palíndromo ou não.

List<char> vetor1, vetor2;
string n;
bool palindromo;
int i;

vetor1 = new List<char>();
vetor2 = new List<char>();

Console.Write("Digite um número natural: ");
n = uint.Parse(Console.ReadLine()).ToString();

foreach (char c in n.ToCharArray())
{
    vetor1.Add(c);
    vetor2.Add(c);
}
vetor2.Reverse();

palindromo = true;
i = 0;
while (i < vetor1.Count && palindromo)
{
    palindromo = vetor1[i] == vetor2[i];
    i++;
}

if (palindromo)
    Console.WriteLine("O número {0} é palíndromo.", n);
else
    Console.WriteLine("O número {0} não é palíndromo.", n);

Console.ReadKey();

4) Imprimir todos os números palíndromos entre 1 e 1000.

List<char> vetor1, vetor2;
string n;
bool palindromo;
int i;

vetor1 = new List<char>();
vetor2 = new List<char>();

for (int k = 1; k <= 1000; k++)
{
    n = k.ToString();

    foreach (char c in n.ToCharArray())
    {
        vetor1.Add(c);
        vetor2.Add(c);
    }
    vetor2.Reverse();

    palindromo = true;
    i = 0;
    while (i < vetor1.Count && palindromo)
    {
        palindromo = vetor1[i] == vetor2[i];
        i++;
    }

    if (palindromo)
        Console.WriteLine(n);

    vetor1.Clear();
    vetor2.Clear();
}

Console.ReadKey();

5) Tentando descobrir se um dado era viciado, um dono de cassino honesto (ha! ha! ha! ha!) o lançou N vezes. Dados os N resultados dos lançamentos, determinar o número de ocorrências de cada face.

int n;
int face;
int[] vetor;

vetor = new int[7];

for (int i = 0; i < vetor.Length; i++)
    vetor[i] = 0;

Console.Write("Quantos lançamentos serão feitos? ");
n = int.Parse(Console.ReadLine());

for (int i = 1; i <= n; i++)
{
    Console.Write("Digite o lançamento {0}: ", i);
    face = int.Parse(Console.ReadLine());

    if (face < 1 || face > 6)
        vetor[0]++;
    else
        vetor[face]++;
}

Console.WriteLine();
Console.WriteLine("Número de ocorrências de cada face:");

for (int i = 1; i < vetor.Length; i++)
    Console.WriteLine("Face {0} = {1}", i, vetor[i]);

Console.WriteLine("Você digitou faces inválidas {0} vezes.", vetor[0]);

Console.ReadKey();

6) Dados dois vetores X e Y, ambos com n elementos, determinar o produto escalar desses vetores.


7) São dados dois números inteiros positivos p e q, sendo que o número de dígitos de p é menor ou igual ao número de dígitos de q. Verificar se p é um subnúmero de q.
Exemplos:
- p = 23, q = 57238, p é subnúmero de q.
- p = 23, q = 258347, p não é subnúmero de q.


8) Dados dois números naturais M e N, uma frase com M letras e uma palavra com N letras, determine o número de vezes que a palavra ocorre na frase.
Exemplo: Para M = 30, N = 3, a palavra ANA e a frase:
ANA E MARIANA GOSTAM DE BANANA
Temos que a palavra ocorre 4 vezes na frase.


9) Dada uma sequência de N números reais, determinar os números que compõem a sequência e o número de vezes que cada um deles ocorre na mesma.
Exemplo: N = 8
Sequência: -1.7, 3.0, 0.0, 1.5, 0.0, -1.7, 2.3, -1.7
Saída:
-1.7 ocorre 3 vezes
3.0 ocorre 1 vez
0.0 ocorre 2 vezes
1.5 ocorre 1 vez
2.3 ocorre 1 vez


10) Dados dois números naturais M e N e duas sequências ordenadas com M e N números inteiros, obter uma única sequência ordenada contendo todos os elementos das sequências originais sem repetição.


11) Dadas duas sequências com N números inteiros entre 0 e 9, interpretadas como dois números inteiros de N algarismos, calcular a sequência de números que representa a soma dos dois inteiros.


12) Calcule o valor do polinômio p(x) = a0 + a1x + ... + anxn em k pontos distintos. São dados os valores de n (grau do polinômio), de a0,a1,...,an (coeficientes reais do polinômio), de k e dos pontos x1,x2,...,xn.


13) Dado o polinômio p(x) = a0 + a1x + ... + anxn, isto é, os valores de n e de a0,a1,...,an, determine os coeficientes reais da primeira derivada de p(x).


14) Em uma classe há N alunos, cada um dos quais realizou K provas com pesos distintos. Dados N, K, os pesos das K provas e as notas de cada aluno, calcular a média ponderada das provas para cada aluno e a média aritmética da classe em cada uma das provas.