1) Modifique o exercício 2.9 (sequências de inteiros) para imprimir N inteiros, sendo N um número informado pelo usuário.
int n;
Console.Write("Digite o valor de N: ");
n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
Console.WriteLine(i);
Console.ReadKey();
2) Utilize while no exercício 2.10 (tabuadas).
int tabuada, n;
Console.Write("Digite a tabuada desejada: ");
tabuada = int.Parse(Console.ReadLine());
Console.Write("Digite o número de vezes: ");
n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
Console.WriteLine("{0} x {1} = {2}", tabuada, i, (tabuada * i));
Console.ReadKey();
3) Modifique o exercício 3.8 (cadastro de aluno) para tratar para, caso o usuário digite valores inválidos no sexo e na nota das provas, o programar informar o erro e solicitar o valor novamente, até que o usuário digite um valor válido.
string nome;
int idade;
char sexo;
string sexoporextenso;
double nota1, nota2, nota3, media;
string situacao;
Console.Write("Digite o nome do aluno: ");
nome = Console.ReadLine();
Console.Write("Digite a idade do aluno: ");
idade = int.Parse(Console.ReadLine());
do
{
Console.Write("Digite o sexo do aluno (M ou F): ");
sexo = Char.Parse(Console.ReadLine());
if (char.ToUpper(sexo) != 'M' && char.ToUpper(sexo) != 'F')
Console.WriteLine("ERRO! Sexo {0} inválido.", sexo);
}
while (char.ToUpper(sexo) != 'M' && char.ToUpper(sexo) != 'F');
do
{
Console.Write("Digite a nota da prova 1: ");
nota1 = double.Parse(Console.ReadLine());
if (nota1 < 0 || nota1 > 10)
Console.WriteLine("ERRO! Nota {0} inválida.", nota1);
}
while (nota1 < 0 || nota1 > 10);
do
{
Console.Write("Digite a nota da prova 2: ");
nota2 = double.Parse(Console.ReadLine());
if (nota2 < 0 || nota2 > 10)
Console.WriteLine("ERRO! Nota {0} inválida.", nota2);
}
while (nota2 < 0 || nota2 > 10);
do
{
Console.Write("Digite a nota da prova 3: ");
nota3 = double.Parse(Console.ReadLine());
if (nota3 < 0 || nota3 > 10)
Console.WriteLine("ERRO! Nota {0} inválida.", nota3);
}
while (nota3 < 0 || nota3 > 10);
media = ((1 * nota1) + (2 * nota2) + (3 * nota3)) / 6.0;
if (char.ToUpper(sexo) == 'M')
sexoporextenso = "masculino";
else
sexoporextenso = "feminino";
if (media >= 7)
situacao = "aprovado";
else
situacao = "reprovado";
Console.WriteLine("O aluno {0} tem {1} anos, é do sexo {2} e obteve a nota final = {3}, situação {4}.", nome, idade, sexoporextenso, media, situacao);
Console.ReadKey();
4) Dada uma coleção de números naturais terminada por 0, imprimir seus quadrados.
int n;
Console.WriteLine("Digite números para obter seus quadrados.");
Console.WriteLine("Quando quiser parar, digite 0.");
do
{
n = int.Parse(Console.ReadLine());
if (n != 0)
Console.WriteLine("O quadrado de {0} é {1}.", n, (n * n));
}
while (n != 0);
Console.ReadKey();
5) Dado N, calcular a soma dos N primeiros números naturais.
int n, soma;
do
{
Console.Write("Digite N maior ou igual a zero: ");
n = int.Parse(Console.ReadLine());
if (n < 0)
Console.WriteLine("Erro! N precisa ser maior ou igual a zero.");
}
while (n < 0);
soma = 0;
for (int i = 0; i < n; i++)
soma += i;
Console.WriteLine("A soma dos {0} primeiros números naturais é igual a {1}.", n, soma);
Console.ReadKey();
6) Dado N, imprimir os N primeiros naturais ímpares. Exemplo, para N = 4, a saída deverá ser 1, 3, 5, 7.
int n, j;
do
{
Console.Write("Digite N maior ou igual a zero: ");
n = int.Parse(Console.ReadLine());
if (n < 0)
Console.WriteLine("Erro! N precisa ser maior ou igual a zero.");
}
while (n < 0);
Console.Write("{0}", 1);
j = 3;
for (int i = 1; i < n; i++)
{
Console.Write(",{0}", j);
j += 2;
}
Console.ReadKey();
7) Durante os 30 dias do mês de abril foram tomadas as temperaturas médias diárias de Euclides da Cunha (BA). Determinar o número de dias desse mês com temperaturas abaixo de zero.
double t;
int dias;
dias = 0;
for (int i = 1; i <= 30; i++)
{
Console.Write("Digite a temperatura média no dia {0}: ", i);
t = double.Parse(Console.ReadLine());
if (t < 0)
dias++;
}
Console.WriteLine("O número de dias com temperatura abaixo de zero foi {0}.", dias);
Console.ReadKey();
8) Dados x inteiro e n natural, calcular xn.
int x, n;
int potencia;
Console.Write("Digite um inteiro X: ");
x = int.Parse(Console.ReadLine());
do
{
Console.Write("Digite N maior ou igual a zero: ");
n = int.Parse(Console.ReadLine());
if (n < 0)
Console.WriteLine("Erro! N precisa ser maior ou igual a zero.");
}
while (n < 0);
potencia = 1;
for (int i = 0; i < n; i++)
potencia *= x;
Console.WriteLine("{0} elevado a {1} é igual a {2}", x, n, potencia);
Console.ReadKey();
9) Uma loja de discos anota diariamente durante o mês de março a quantidade de discos vendidos. Determinar em que dia desse mês ocorreu a maior venda e qual foi a quantidade de discos vendida nesse dia.
int q, maior, dia;
maior = 0;
dia = 0;
for (int i = 1; i <= 31; i++)
{
Console.Write("Quantos discos foram vendidos no dia {0}? ", i);
q = int.Parse(Console.ReadLine());
if (q > maior)
{
maior = q;
dia = i;
}
}
Console.WriteLine("O recorde de vendas foi no dia {0}, com {1} discos vendidos.", dia, maior);
Console.ReadKey();
10) Dados o número N de alunos de uma turma de Programação em C# e suas notas da primeira prova, determinar a maior e a menor nota obtidas por essa turma (nota máxima = 100 e nota mínima = 0).
int n;
int maiornota, menornota, nota;
int maioraluno, menoraluno;
Console.Write("Quantos alunos estão estudando no curso atualmente: ");
n = int.Parse(Console.ReadLine());
maiornota = -1;
menornota = 101;
maioraluno = 0;
menoraluno = 0;
for (int i = 1; i <= n; i++)
{
do
{
Console.Write("Qual é a nota do aluno {0}? ", i);
nota = int.Parse(Console.ReadLine());
if (nota < 0 || nota > 100)
Console.WriteLine("Erro! Nota deve estar entre 0 e 100.");
}
while (nota < 0 || nota > 100);
if (nota > maiornota)
{
maiornota = nota;
maioraluno = i;
}
if (nota < menornota)
{
menornota = nota;
menoraluno = i;
}
}
Console.WriteLine("O aluno {0} obteve a maior nota, que foi {1}.", maioraluno, maiornota);
Console.WriteLine("O aluno {0} obteve a menor nota, que foi {1}.", menoraluno, menornota);
Console.ReadKey();
11) Dados N e uma sequência de N números inteiros, determinar a soma dos números pares.
int n, soma, x;
Console.Write("Digite o valor de N: ");
n = int.Parse(Console.ReadLine());
soma = 0;
for (int i = 1; i <= n; i++)
{
Console.Write("{0} - Digite um número inteiro: ", i);
x = int.Parse(Console.ReadLine());
if (x % 2 == 0)
soma += x;
}
Console.WriteLine("A soma dos números pares da sequência é igual a {0}.", soma);
Console.ReadKey();
12) Dado n natural, determinar n!.
int n, fatorial;
Console.Write("Digite o valor de N: ");
n = int.Parse(Console.ReadLine());
Console.Write("{0}! = {0} ", n);
fatorial = n;
for (int i = n - 1; i > 1; i--)
{
Console.Write("* {0} ", i);
fatorial *= i;
}
Console.WriteLine("* 1 = {0}", fatorial);
Console.ReadKey();
13) Dado N e dois números naturais i e j diferentes de 0, imprimir em ordem crescente os N primeiros naturais que são múltiplos de i ou de j ou de ambos. Exemplo, para N = 6, i = 2 e j = 3, a saída deverá ser: 0, 2, 3, 4, 6, 8.
int n, i, j, k, cont;
do
{
Console.Write("Digite o valor de N: ");
n = int.Parse(Console.ReadLine());
if (n <= 0)
Console.WriteLine("Erro! N precisa ser maior que zero.");
}
while (n <= 0);
do
{
Console.Write("Digite o valor de I: ");
i = int.Parse(Console.ReadLine());
if (i <= 0)
Console.WriteLine("Erro! I precisa ser maior que zero.");
}
while (i <= 0);
do
{
Console.Write("Digite o valor de J: ");
j = int.Parse(Console.ReadLine());
if (j <= 0)
Console.WriteLine("Erro! J precisa ser maior que zero.");
}
while (j <= 0);
Console.Write("0");
cont = 1;
k = 1;
while (cont < n)
{
if (k % i == 0 || k % j == 0)
{
Console.Write(", {0}", k);
cont++;
}
k++;
}
Console.ReadKey();
14) Dizemos que um número natural é triangular se ele é produto de três números naturais consecutivos. Exemplo, 120 é triangular, pois 4.5.6 = 120. Dado N natural, verificar se N é triangular.
int n, i;
bool achou;
Console.Write("Digite o valor de N: ");
n = int.Parse(Console.ReadLine());
achou = false;
i = 1;
while (i < n && ! achou)
{
if ((i * (i + 1) * (i + 2)) == n)
achou = true;
else
i++;
}
if (achou)
Console.WriteLine("O número {0} é triangular, pois {1}.{2}.{3} = {0}.", n, i, i+1, i+2);
else
Console.WriteLine("O número {0} não é triangular.", n);
Console.ReadKey();
15) Dizemos que um número natural é primo se ele é divisível apenas por 1 e por ele mesmo. Dado p natural, verificar se p é primo.
int n, i;
bool achou;
Console.Write("Digite o valor de N: ");
n = int.Parse(Console.ReadLine());
achou = false;
i = 2;
while (i < n && !achou)
{
if (n % i == 0)
achou = true;
else
i++;
}
if (achou)
Console.WriteLine("{0} não é primo, pois {1}, por exemplo, é um múltiplo de {0}.", n, i);
else
Console.WriteLine("{0} é primo.", n);
Console.ReadKey();
16) Dados dois números inteiros positivos, determinar o máximo divisor comum entre eles usando o algoritmo de Euclides. Exemplo:
O mdc entre 1128 e 336 é 24.
int n1i, n2i, n1, n2;
int resto;
do
{
Console.Write("Digite o primeiro número inteiro maior que zero: ");
n1i = int.Parse(Console.ReadLine());
if (n1i <= 0)
Console.WriteLine("Erro! Número deve ser maior que zero.");
}
while (n1i <= 0);
do
{
Console.Write("Digite o primeiro número inteiro maior que zero: ");
n2i = int.Parse(Console.ReadLine());
if (n2i <= 0)
Console.WriteLine("Erro! Número deve ser maior que zero.");
}
while (n2i <= 0);
if (n2i > n1i)
{
n1 = n2i;
n2 = n1i;
}
else
{
n1 = n1i;
n2 = n2i;
}
resto = n1 % n2;
while (resto > 0)
{
n1 = n2;
n2 = resto;
resto = n1 % n2;
}
Console.WriteLine("O MDC entre {0} e {1} é {2}", n1i, n2i, n2);
Console.ReadKey();
17) Dado N inteiro positivo, dizemos que N é perfeito se for igual à soma de seus divisores positivos diferentes de N.
Exemplo: 6 é perfeito, pois 1 + 2 + 3 = 6.
Verificar se um dado número inteiro positivo é perfeito.
18) Um matemático italiano da Idade Média conseguiu estudar o número de galhos em um certo nível de uma árvore através de uma sequência de números naturais que passou a ser conhecida como sequência de Fibonacci. O n-ésimo número da sequência de Fibonacci Fn é dado pela seguinte fórmula de recorrência:
F1 = 1
F2 = 1
Fi = Fi-1 + Fi-2 para i >= 3.
Faça um programa que dado n calcule Fn.
19) Dizemos que um número i é congruente módulo m a j se i mod m = j mod m.
Exemplo: 35 é congruente módulo 4 a 39, pois 35 mod 4 = 3 = 39 mod 4.
Dados N, j e m naturais não nulos, imprimir os N primeiros naturais congruentes a j módulo m.
20) Dado um número natural na base binária, transformá-lo para a base decimal.
Exemplo, dado 10010 a saída será 18, pois 1.24+0.23+0.22+1.21+0.20 = 18.
21) Dado um número natural na base decimal, transformá-lo para a base binária.
Exemplo, dado 18 a saída deverá ser 10010.
22) Dados três números naturais, verificar se eles formam os lados de um triângulo retângulo.
23) Dados três números, imprimi-los em ordem crescente.
24) Qualquer número natural de quatro algarismos pode ser dividido em duas dezenas formadas pelos seus dois primeiros e dois últimos dígitos.
Exemplos: 1297 (12 e 97) e 5314 (53 e 14).
Escreva um programa que imprima todos os milhares (4 algarismos) cuja raiz quadrada seja a soma das dezenas formadas pela divisão acima.
Exemplo: raiz de 9801 = 99 = 98 + 01. Portanto, 9801 é um dos números a ser impresso.
25) Dados N e uma sequência de N números inteiros, determinar quantos segmentos iguais consecutivos compõem essa sequência.
Exemplo: a sequência 5,2,2,3,4,4,4,4,1,1 é formada por 5 segmentos de números iguais.
26) Dados um inteiro positivo N e uma sequência de N números inteiros, determinar o comprimento de um segmento crescente de comprimento máximo.
Exemplos:
- Na sequência 5,10,3,2,4,7,9,8,5 o comprimento do segmento crescente máximo é 4.
- Na sequência 10,8,7,5,2 o comprimento de um segmento crescente máximo é 1.
27) Simule a execução do programa abaixo destacando a sua saída:
int a, b, total, soma, termo;
a = int.Parse(Console.ReadLine());
b = int.Parse(Console.ReadLine());
Console.WriteLine("({0},{1})", a, b);
total = 0;
soma = 0;
while (a != 0)
{
total++;
termo = 1;
for (int i = 1; i <= b; i++)
termo *= a;
Console.WriteLine("Resp = {0}", termo);
soma += termo;
Console.WriteLine("Soma = {0}", soma);
a = int.Parse(Console.ReadLine());
b = int.Parse(Console.ReadLine());
Console.WriteLine("({0},{1})", a, b);
}
Console.WriteLine("Total de pares = {0}", total);
Console.ReadKey();
Dados:
2 3
5 2
7 1
0 5
3 2