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
Resposta/Solução:

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.

Link para compartilhar na Internet ou com seus amigos:

C# ::: Datas e Horas ::: DateTime

Como adicionar ou subtrair meses de uma data em C# usando o método AddMonths() da estrutura DateTime

Quantidade 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

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
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
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
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
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 78 usuários muito felizes estudando em nosso site.