Você está aqui: C# ::: Desafios e Lista de Exercícios Resolvidos ::: Laços |
Como testar se dois números são números amigos em C# - Escreva um programa C# que - Exercícios Resolvidos de C#Quantidade de visualizações: 359 vezes |
Pergunta/Tarefa: Dois números inteiros positivos A e B são considerados números amigos se a soma dos divisores próprios de A for igual a B e a soma dos divisores próprios de B for igual a A. Divisores próprios de um número positivo N são todos os divisores inteiros positivos de N exceto o próprio N. Por exemplo, os divisores próprios de 6 são: 1, 2 e 3. Como exemplo de números amigos podemos citar 220 e 284. Os divisores próprios de 220 são 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 e 110, resultando na soma 284. O número 284, por sua vez, possui os divisores próprios 1, 2, 4, 71 e 142, resultando na soma 220. Dessa forma, 220 e 284 são números amigos. Escreva um programa C# que leia dois números inteiros positivos e informe se eles são números amigos ou não. Sua saída deve ser parecida com: Informe o primeiro número: 220 Informe o segundo número: 284 Os dois números são amigos Informe o primeiro número: 158 Informe o segundo número: 932 Os números não são amigos. Informe o primeiro número: 1210 Informe o segundo número: 1184 Os dois números são amigos Veja a resolução comentada deste exercício usando C#: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- using System; namespace Estudos { class Principal { // função principal do programa C# static void Main(string[] args) { // variáveis usadas na resolução do problema int n1, n2, soma = 0; // vamos ler os dois números Console.Write("Informe o primeiro número: "); n1 = Int32.Parse(Console.ReadLine()); Console.Write("Informe o segundo número: "); n2 = Int32.Parse(Console.ReadLine()); // vamos somar todos os divisores próprios do // primeiro número for (int i = 1; i < n1; i++) { if (n1 % i == 0) { soma = soma + i; } } // se essa soma for igual ao valor de n2 nós já temos a // primeira condição if (soma == n2) { // zera a soma soma = 0; for (int i = 1; i < n2; i++) { if (n2 % i == 0) { soma = soma + i; } } // esta soma é igual ao valor de n1? if (soma == n1) { Console.WriteLine("Os dois números são amigos."); } else { Console.WriteLine("Os números não são amigos."); } } else { Console.WriteLine("Os números não são amigos."); } Console.WriteLine("\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Os números amigos eram conhecidos pelos Pitagóricos, que acreditavam que eles possuíam propriedades místicas. |
![]() |
C# ::: Datas e Horas ::: DateTime |
Como adicionar ou subtrair meses de uma data em C# usando o método AddMonths() da estrutura DateTimeQuantidade de visualizações: 10418 vezes |
Em algumas situações nossos códigos precisam adicionar ou subtrair meses de uma data. Isso pode ser feito com o auxílio do método AddMonths() da estrutura DateTime. Este método recebe o número de meses a serem acrescidos ou substraídos da data representada pelo DateTime atual e retorna um novo DateTime com as devidas modificações. Veja um trecho de código no qual adicionamos 3 meses à data atual: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- static void Main(string[] args){ // vamos obter a data de hoje DateTime hoje = DateTime.Now; // exibe a data de hoje System.Console.WriteLine("Hoje é {0:d}", hoje); // vamos adicionar 3 meses à data de hoje DateTime data_futura = hoje.AddMonths(3); // exibe a data daqui a três meses System.Console.WriteLine("Daqui a 3 meses será {0:d}", data_futura); // pausa o programa System.Console.Write("\nPressione qualquer tecla para sair..."); Console.ReadKey(); } É possível também subtrair meses. Para isso só precisamos fornecer um valor negativo para o método AddMonths(). Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- static void Main(string[] args){ // vamos obter a data de hoje DateTime hoje = DateTime.Now; // exibe a data de hoje System.Console.WriteLine("Hoje é {0:d}", hoje); // vamos subtrair 5 meses da data de hoje DateTime data_passado = hoje.AddMonths(-5); // exibe a data 5 meses atrás System.Console.WriteLine("Há 5 meses era {0:d}", data_passado); // pausa o programa System.Console.Write("\nPressione qualquer tecla para sair..."); Console.ReadKey(); } Lembre-se, contudo, que o método AddMonths() pode disparar uma exceção do tipo ArgumentOutOfRangeException se o DateTime resultante for menor que MinValue ou maior que MaxValue. MinValue e MaxValue são os menor e maior valores que um DateTime pode representar. Esta exceção também será disparada se o valor fornecido para o mês for menor que -120.000 ou maior que 120.000. |
C# ::: Dicas & Truques ::: Strings e Caracteres |
Como embaralhar as palavras em uma frase ou texto usando C#Quantidade de visualizações: 12169 vezes |
Nesta dica mostrarei como podemos usar a linguagem C# para embaralhar, ou seja, exibir as palavras de uma string em ordem aleatória. Veja o código C# completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- using System; namespace Estudos { class Program { static void Main(string[] args) { string frase = "Gosto de VB.NET, Java e C#"; // mostra a frase na ordem original Console.WriteLine("Ordem original: " + frase); // converte em um vetor de palavras string[] frase2 = frase.Split(' '); // vamos embaralhar 5 vezes Embaralhar(ref frase2, 5); // junta as partes da string novamente frase = String.Join(" ", frase2); // exibe o resultado Console.WriteLine("Embaralhada: " + frase); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } static void Embaralhar(ref String[] array, int vezes) { Random rand = new Random(DateTime.Now.Millisecond); for (int i = 1; i <= vezes; i++) { for (int x = 1; x <= array.Length; x++) { Trocar(ref array[rand.Next(0, array.Length)], ref array[rand.Next(0, array.Length)]); } } } static void Trocar(ref String arg1, ref String arg2) { String strTemp = arg1; arg1 = arg2; arg2 = strTemp; } } } Ao executar este código C# nós teremos o seguinte resultado: Ordem original: Gosto de VB.NET, Java e C# Embaralhada: VB.NET, C# Java de e Gosto |
C# ::: C# + MySQL ::: MySqlCommand |
Como gravar dados em uma tabela MySQL usando INSERT INTO e o comando ExecuteNonQuery() da classe MySqlCommand do C#Quantidade de visualizações: 1136 vezes |
Nesta dica mostrarei como inserir dados em uma tabela MySQL usando o comando SQL INSERT INTO e o comando ExecuteNonQuery() da classe MySqlCommand do C#. A tabela usada no exemplo contém os campos id, titulo, autor, paginas, data_cadastro. O campo id é auto-incremento e o campo data_cadastro é do tipo DATETIME. Por essa razão eu passei os valores NULL para o campo auto-incremento e o valor NOW() para o campo data_cadastro, de forma que a data e hora atual sejam gravadas. Como se trata de uma operação INSERT, o método ExecuteNonQuery() retorna a quantidade de registros afetados pelo comando. No exemplo eu mostro como obter e exibir este valor. Veja o código completo para o exemplo (incluindo a conexão com o banco de dados MySQL a partir do C#): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- using System; using System.Data; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace EstudosMySQL { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // objeto de conexão MySqlConnection conn = null; // string de conexão string connStr = "server=localhost;user id=root; " + "password=osmar1234; database=estudos; pooling=false"; try { conn = new MySqlConnection(connStr); conn.Open(); if (conn.State == ConnectionState.Open) { // primeiro criamos um novo objeto MySqlCommand MySqlCommand comando = new MySqlCommand(); // definimos a conexão para este comando comando.Connection = conn; // definimos o comando SQL a ser executado comando.CommandText = "INSERT INTO livros (id, titulo, " + autor, paginas, data_cadastro) " + "VALUES(NULL, 'JAVA PARA INICIANTES', " + "'OSMAR J. SILVA', 740, NOW())"; // e executamos o comando SQL int res = comando.ExecuteNonQuery(); if (res > 0) { MessageBox.Show("Operação realizada com sucesso. " + res + " linhas afetadas."); } else { MessageBox.Show("Deve ter acontecido alguma coisa. " + res + " linhas afetadas."); } } } catch (MySqlException ex) { MessageBox.Show("Erro: " + ex.Message); } } } } |
Desafios, Exercícios e Algoritmos Resolvidos de C# |
Veja mais Dicas e truques de C# |
Dicas e truques de outras linguagens |
Códigos Fonte |
![]() Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
![]() Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |