Curso de Programação C#

William Ivanski

Lista de Exercícios Módulo II Capítulo 2 (Respostas)


1) Dada uma string, imprima-a com todos os caracteres maiúsculos, e depois todos os caracteres minúsculos.
Dica: Use os métodos string.ToUpper() e string.ToLower().


2) Faça um programa que pergunta ao usuário a sua data de nascimento, e imprime quantos anos ele tem.
Dica: Use as classes DateTime e TimeSpan.


3) Faça um programa que mostra quantos dias falta para o próximo natal.
Dica: Use as classes DateTime e TimeSpan.


4) Dada uma coleção de números inteiros digitada pelo usuário em uma única linha, imprimi-la na ordem inversa.
Dica: Use o método string.Split().


5) Dado um número N, imprimi-lo como uma soma de múltiplos de 10 mais a sua unidade.
Exemplo: 472 = 400 + 70 + 2
Dica: Use o método string.ToCharArray().


6) 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.
Dica: Use o método string.ToCharArray().


7) Faça um programa que, a cada número N digitado pelo usuário, gere e imprima um número aleatório contido entre 0 e N. O programa acaba quando o usuário digitar 0.
Dica: Use a classe System.Random.


8) Peça para o usuário alimentar um vetor com N cores. Depois o programa deve imprimir "Minha cor favorita é " e escolher aleatoriamente uma cor do vetor.
Dica: Use a classe System.Random.


9) Crie uma biblioteca chamada Calculadora.dll com uma classe Calculadora com os seguintes métodos:

Crie um programa para usar essa biblioteca. Solicite dois números ao usuário e mostre o resultado usando as 4 funções acima.

// Calculadora.dll
using System;

namespace MinhaBiblioteca
{
    public class Calculadora
    {
        public Calculadora()
        {
        }

        public double Soma(double a, double b)
        {
            return a + b;
        }

        public double Subtracao(double a, double b)
        {
            return a - b;
        }

        public double Multiplicacao(double a, double b)
        {
            return a * b;
        }

        public double Divisao(double a, double b)
        {
            if (b != 0)
                return a / b;
            else
            {
                Console.WriteLine("Calculadora.Divisao: Denominador não pode ser igual a zero!");
                return 0.0;
            }
        }
    }
}

// Lista2Exercicio09.exe
using System;
using MinhaBiblioteca;

namespace Lista2Exercicio09
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            Calculadora c;
            double a, b;

            Console.Write("Digite o valor de A: ");
            a = double.Parse(Console.ReadLine());

            Console.Write("Digite o valor de B: ");
            b = double.Parse(Console.ReadLine());

            c = new Calculadora();

            Console.WriteLine("A soma de A e B = {0}", c.Soma(a, b));
            Console.WriteLine("A subtração de A e B = {0}", c.Subtracao(a, b));
            Console.WriteLine("A multiplicação de A e B = {0}", c.Multiplicacao(a, b));
            Console.WriteLine("A divisão de A e B = {0}", c.Divisao(a, b));

            Console.ReadKey();
        }
    }
}

10) Crie uma biblioteca chamada EntradaDeDados.dll com uma classe Variaveis com os seguintes métodos:

Cada método solicita ao usuário um valor de um determinado tipo. Caso o usuário digitar o valor incorretamente, o método deverá solicitar novamente, até que o usuário digite corretamente.
Dica: Use os métodos int.TryParse(), double.TryParse(), char.TryParse() e DateTime.TryParse().

A sua biblioteca EntradaDeDados.dll também deverá ter uma classe Vetores com os seguintes métodos:

Cada método da classe Vetores deve primeiramente perguntar ao usuário o número de elementos do vetor, e depois ler cada elemento usando a classe Variaveis.
Crie um programa para usar essa biblioteca e utilize cada um dos exemplos acima.


// EntradaDeDados.dll - Variaveis.cs
using System;

namespace EntradaDeDados
{
    public class Variaveis
    {
        public Variaveis()
        {
        }

        public int LeInt()
        {
            bool digitou_certo;
            int valor;

            do
            {
                Console.Write("Digite um número inteiro: ");
                digitou_certo = int.TryParse(Console.ReadLine(), out valor);

                if (!digitou_certo)
                    Console.WriteLine("Erro, valor digitado não é um número inteiro.");
            }
            while (!digitou_certo);

            return valor;
        }

        public int LeInt(string p_mensagem)
        {
            bool digitou_certo;
            int valor;

            do
            {
                Console.Write(p_mensagem);
                digitou_certo = int.TryParse(Console.ReadLine(), out valor);

                if (!digitou_certo)
                    Console.WriteLine("Erro, valor digitado não é um número inteiro.");
            }
            while (!digitou_certo);

            return valor;
        }

        public double LeDouble()
        {
            bool digitou_certo;
            double valor;

            do
            {
                Console.Write("Digite um número real: ");
                digitou_certo = double.TryParse(Console.ReadLine(), out valor);

                if (!digitou_certo)
                    Console.WriteLine("Erro, valor digitado não é um número real.");
            }
            while (!digitou_certo);

            return valor;
        }

        public double LeDouble(string p_mensagem)
        {
            bool digitou_certo;
            double valor;

            do
            {
                Console.Write(p_mensagem);
                digitou_certo = double.TryParse(Console.ReadLine(), out valor);

                if (!digitou_certo)
                    Console.WriteLine("Erro, valor digitado não é um número real.");
            }
            while (!digitou_certo);

            return valor;
        }

        public char LeChar()
        {
            bool digitou_certo;
            char valor;

            do
            {
                Console.Write("Digite um caractere: ");
                digitou_certo = char.TryParse(Console.ReadLine(), out valor);

                if (!digitou_certo)
                    Console.WriteLine("Erro, valor digitado não é um caractere.");
            }
            while (!digitou_certo);

            return valor;
        }

        public char LeChar(string p_mensagem)
        {
            bool digitou_certo;
            char valor;

            do
            {
                Console.Write(p_mensagem);
                digitou_certo = char.TryParse(Console.ReadLine(), out valor);

                if (!digitou_certo)
                    Console.WriteLine("Erro, valor digitado não é um caractere.");
            }
            while (!digitou_certo);

            return valor;
        }

        public string LeString()
        {
            Console.Write("Digite um texto: ");
            return Console.ReadLine();
        }

        public string LeString(string p_mensagem)
        {
            Console.Write(p_mensagem);
            return Console.ReadLine();
        }

        public DateTime LeDateTime()
        {
            bool digitou_certo;
            DateTime valor;

            do
            {
                Console.Write("Digite uma data/hora: ");
                digitou_certo = DateTime.TryParse(Console.ReadLine(), out valor);

                if (!digitou_certo)
                    Console.WriteLine("Erro, valor digitado não é uma data/hora.");
            }
            while (!digitou_certo);

            return valor;
        }

        public DateTime LeDateTime(string p_mensagem)
        {
            bool digitou_certo;
            DateTime valor;

            do
            {
                Console.Write(p_mensagem);
                digitou_certo = DateTime.TryParse(Console.ReadLine(), out valor);

                if (!digitou_certo)
                    Console.WriteLine("Erro, valor digitado não é uma data/hora.");
            }
            while (!digitou_certo);

            return valor;
        }
    }
}

// EntradaDeDados - Vetores.cs
using System;
using System.Collections.Generic;

namespace EntradaDeDados
{
    public class Vetores
    {
        private Variaveis variaveis;

        public Vetores()
        {
            this.variaveis = new Variaveis();
        }

        public int[] LeVetorEstaticoInt()
        {
            int[] vetor;
            int n;

            n = this.variaveis.LeInt("Digite o número de elementos do vetor: ");

            vetor = new int[n];

            for (int i = 0; i < n; i++)
                vetor[i] = this.variaveis.LeInt("Digite o elemento " + i.ToString() + ": ");

            return vetor;
        }

        public double[] LeVetorEstaticoDouble()
        {
            double[] vetor;
            int n;

            n = this.variaveis.LeInt("Digite o número de elementos do vetor: ");

            vetor = new double[n];

            for (int i = 0; i < n; i++)
                vetor[i] = this.variaveis.LeDouble("Digite o elemento " + i.ToString() + ": ");

            return vetor;
        }

        public char[] LeVetorEstaticoChar()
        {
            char[] vetor;
            int n;

            n = this.variaveis.LeInt("Digite o número de elementos do vetor: ");

            vetor = new char[n];

            for (int i = 0; i < n; i++)
                vetor[i] = this.variaveis.LeChar("Digite o elemento " + i.ToString() + ": ");

            return vetor;
        }

        public string[] LeVetorEstaticoString()
        {
            string[] vetor;
            int n;

            n = this.variaveis.LeInt("Digite o número de elementos do vetor: ");

            vetor = new string[n];

            for (int i = 0; i < n; i++)
                vetor[i] = this.variaveis.LeString("Digite o elemento " + i.ToString() + ": ");

            return vetor;
        }

        public DateTime[] LeVetorEstaticoDateTime()
        {
            DateTime[] vetor;
            int n;

            n = this.variaveis.LeInt("Digite o número de elementos do vetor: ");

            vetor = new DateTime[n];

            for (int i = 0; i < n; i++)
                vetor[i] = this.variaveis.LeDateTime("Digite o elemento " + i.ToString() + ": ");

            return vetor;
        }

        public List<int> LeVetorDinamicoInt()
        {
            List<int> vetor;
            int n;

            n = this.variaveis.LeInt("Digite o número de elementos do vetor: ");

            vetor = new List<int>();

            for (int i = 0; i < n; i++)
                vetor.Add(this.variaveis.LeInt("Digite o elemento " + i.ToString() + ": "));

            return vetor;
        }

        public List<double> LeVetorDinamicoDouble()
        {
            List<double> vetor;
            int n;

            n = this.variaveis.LeInt("Digite o número de elementos do vetor: ");

            vetor = new List<double>();

            for (int i = 0; i < n; i++)
                vetor.Add(this.variaveis.LeDouble("Digite o elemento " + i.ToString() + ": "));

            return vetor;
        }

        public List<char> LeVetorDinamicoChar()
        {
            List<char> vetor;
            int n;

            n = this.variaveis.LeInt("Digite o número de elementos do vetor: ");

            vetor = new List<char>();

            for (int i = 0; i < n; i++)
                vetor.Add(this.variaveis.LeChar("Digite o elemento " + i.ToString() + ": "));

            return vetor;
        }

        public List<string> LeVetorDinamicoString()
        {
            List<string> vetor;
            int n;

            n = this.variaveis.LeInt("Digite o número de elementos do vetor: ");

            vetor = new List<string>();

            for (int i = 0; i < n; i++)
                vetor.Add(this.variaveis.LeString("Digite o elemento " + i.ToString() + ": "));

            return vetor;
        }

        public List<DateTime> LeVetorDinamicoDateTime()
        {
            List<DateTime> vetor;
            int n;

            n = this.variaveis.LeInt("Digite o número de elementos do vetor: ");

            vetor = new List<DateTime>();

            for (int i = 0; i < n; i++)
                vetor.Add(this.variaveis.LeDateTime("Digite o elemento " + i.ToString() + ": "));

            return vetor;
        }
    }
}

// Teste.exe - Program.cs
using System;
using System.Collections.Generic;
using EntradaDeDados;

namespace Lista2Exercicio10
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            Variaveis variaveis;
            int i;
            double d;
            char c;
            string s;
            DateTime t;
            Vetores vetores;
            int[] vei;
            double[] ved;
            char[] vec;
            string[] ves;
            DateTime[] vet;
            List<int> vdi;
            List<double> vdd;
            List<char> vdc;
            List<string> vds;
            List<DateTime> vdt;

            variaveis = new Variaveis();
            vetores = new Vetores();

            Console.WriteLine("Exemplo de uso da biblioteca EntradaDeDados para variáveis:");
            Console.WriteLine();
            i = variaveis.LeInt();
            Console.WriteLine();
            d = variaveis.LeDouble();
            Console.WriteLine();
            c = variaveis.LeChar();
            Console.WriteLine();
            s = variaveis.LeString();
            Console.WriteLine();
            t = variaveis.LeDateTime();
            Console.WriteLine();

            Console.WriteLine("Exemplo de uso da biblioteca EntradaDeDados para vetores estáticos:");
            Console.WriteLine();
            Console.WriteLine("Vetor de int: ");
            vei = vetores.LeVetorEstaticoInt();
            Console.WriteLine();
            Console.WriteLine("Vetor de double: ");
            ved = vetores.LeVetorEstaticoDouble();
            Console.WriteLine();
            Console.WriteLine("Vetor de char: ");
            vec = vetores.LeVetorEstaticoChar();
            Console.WriteLine();
            Console.WriteLine("Vetor de string: ");
            ves = vetores.LeVetorEstaticoString();
            Console.WriteLine();
            Console.WriteLine("Vetor de DateTime: ");
            vet = vetores.LeVetorEstaticoDateTime();
            Console.WriteLine();

            Console.WriteLine("Exemplo de uso da biblioteca EntradaDeDados para vetores dinâmicos:");
            Console.WriteLine();
            Console.WriteLine("Vetor de int: ");
            vdi = vetores.LeVetorDinamicoInt();
            Console.WriteLine();
            Console.WriteLine("Vetor de double: ");
            vdd = vetores.LeVetorDinamicoDouble();
            Console.WriteLine();
            Console.WriteLine("Vetor de char: ");
            vdc = vetores.LeVetorDinamicoChar();
            Console.WriteLine();
            Console.WriteLine("Vetor de string: ");
            vds = vetores.LeVetorDinamicoString();
            Console.WriteLine();
            Console.WriteLine("Vetor de DateTime: ");
            vdt = vetores.LeVetorDinamicoDateTime();
            Console.WriteLine();

            Console.ReadKey();
        }
    }
}