Fala galera da programação, tudo beleza?
O exercício pede para verificar se o número lido possui determinada característica. Ela é conhecida como “Número Kaprekar”. Um número de Kaprekar é um inteiro positivo cuja representação em quadrados de seus dígitos pode ser dividida em duas partes que somam o número original quando somadas. O exemplo citado, 3025, é um número de Kaprekar, pois 30 + 25 = 55, e 552 = 3025.
Lembrando que o objetivo deste exercício é ler número de 4 dígitos e descobrir se ele é um número de Kaprekar.
Para dividir um número de quatro dígitos em duas partes de dois dígitos, divida este número por 100 e pegue o quociente e o resto da divisão.
Valide que o número informado tenha 4 dígitos;
Se ele for um número escreva: O número xx possui a característica desejada.
Senão escreva: O número xx não possui a característica desejada
Vamos aos Códigos!
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ #include <iostream> using namespace std; int main() { int numero, parte1, parte2; // Solicitar ao usuário para inserir o número inteiro de quatro dígitos cout << "Digite um número inteiro de quatro dígitos: "; cin >> numero; // Verificar se o número tem quatro dígitos if (numero < 1000 || numero > 9999) { cout << "O número digitado não possui quatro dígitos." << endl; } else { // Dividir o número em duas partes de dois dígitos parte1 = numero / 100; parte2 = numero % 100; // Verificar se a soma das partes elevada ao quadrado é igual ao número original if ((parte1 + parte2) * (parte1 + parte2) == numero) { cout << "O número " << numero << " possui a característica desejada." << endl; } else { cout << "O número " << numero << " não possui a característica desejada." << endl; } } return 0; }
Explicação:
Este programa solicita ao usuário para inserir um número inteiro de quatro dígitos. Em seguida, ele verifica se o número inserido possui quatro dígitos. Se tiver, o programa divide o número em duas partes de dois dígitos e verifica se a soma dessas partes elevada ao quadrado é igual ao número original. Ele então imprime uma mensagem indicando se o número possui ou não a característica desejada.
A estratégia usada no código pode ser dividida em alguns passos:
A estratégia geral do código é bastante simples: dividir o número em partes, realizar algumas operações e verificar se uma condição específica é atendida.
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ #include <stdio.h> int main() { int numero, parte1, parte2; // Solicitar ao usuário para inserir o número inteiro de quatro dígitos printf("Digite um número inteiro de quatro dígitos: "); scanf("%d", &numero); // Verificar se o número tem quatro dígitos if (numero < 1000 || numero > 9999) { printf("O número digitado não possui quatro dígitos.\n"); } else { // Dividir o número em duas partes de dois dígitos parte1 = numero / 100; parte2 = numero % 100; // Verificar se a soma das partes elevada ao quadrado é igual ao número original if ((parte1 + parte2) * (parte1 + parte2) == numero) { printf("O número %d possui a característica desejada.\n", numero); } else { printf("O número %d não possui a característica desejada.\n", numero); } } return 0; }
Este código em C realiza exatamente as mesmas operações que o código em C++ fornecido anteriormente, mas usando a sintaxe da linguagem C.
(****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************) program VerificarKaprekar; var numero, parte1, parte2: integer; begin // Solicitar ao usuário para inserir o número inteiro de quatro dígitos writeln('Digite um número inteiro de quatro dígitos: '); readln(numero); // Verificar se o número tem quatro dígitos if (numero < 1000) or (numero > 9999) then writeln('O número digitado não possui quatro dígitos.') else begin // Dividir o número em duas partes de dois dígitos parte1 := numero div 100; parte2 := numero mod 100; // Verificar se a soma das partes elevada ao quadrado é igual ao número original if (parte1 + parte2) * (parte1 + parte2) = numero then writeln('O número ', numero, ' possui a característica desejada.') else writeln('O número ', numero, ' não possui a característica desejada.'); end; end.
As principais mudanças para o código em Pascal incluem a utilização de writeln
e readln
para entrada e saída de dados, e begin
e end
para delimitar blocos de código. Os operadores de divisão inteira (div
) e resto (mod
) são usados para dividir o número em duas partes de dois dígitos, assim como no código em C e C++. Fora essas diferenças sintáticas, a lógica do programa permanece a mesma.
''' Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br ''' # Solicitar ao usuário para inserir o número inteiro de quatro dígitos numero = int(input("Digite um número inteiro de quatro dígitos: ")) # Verificar se o número tem quatro dígitos if numero < 1000 or numero > 9999: print("O número digitado não possui quatro dígitos.") else: # Dividir o número em duas partes de dois dígitos parte1 = numero // 100 parte2 = numero % 100 # Verificar se a soma das partes elevada ao quadrado é igual ao número original if (parte1 + parte2) ** 2 == numero: print(f"O número {numero} possui a característica desejada.") else: print(f"O número {numero} não possui a característica desejada.")
As principais mudanças para o código em Python incluem a sintaxe para entrada de dados utilizando a função input()
, que retorna uma string (portanto, precisamos converter para inteiro usando int()
), e a utilização de print()
para exibir mensagens na tela. Além disso, em Python, a divisão inteira é realizada com //
e o operador de resto é %
. Fora essas diferenças sintáticas, a lógica do programa permanece a mesma.
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ using System; class Program { static void Main(string[] args) { // Solicitar ao usuário para inserir o número inteiro de quatro dígitos Console.WriteLine("Digite um número inteiro de quatro dígitos: "); int numero = int.Parse(Console.ReadLine()); // Verificar se o número tem quatro dígitos if (numero < 1000 || numero > 9999) { Console.WriteLine("O número digitado não possui quatro dígitos."); } else { // Dividir o número em duas partes de dois dígitos int parte1 = numero / 100; int parte2 = numero % 100; // Verificar se a soma das partes elevada ao quadrado é igual ao número original if ((parte1 + parte2) * (parte1 + parte2) == numero) { Console.WriteLine($"O número {numero} possui a característica desejada."); } else { Console.WriteLine($"O número {numero} não possui a característica desejada."); } } } }
As principais mudanças para o código em C# incluem o uso de Console.WriteLine()
para exibir mensagens na tela e Console.ReadLine()
para ler a entrada do usuário. O resto da lógica é bastante similar aos códigos anteriores, utilizando operadores aritméticos para dividir o número em partes e verificar a característica desejada.
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Solicitar ao usuário para inserir o número inteiro de quatro dígitos System.out.println("Digite um número inteiro de quatro dígitos: "); int numero = scanner.nextInt(); // Verificar se o número tem quatro dígitos if (numero < 1000 || numero > 9999) { System.out.println("O número digitado não possui quatro dígitos."); } else { // Dividir o número em duas partes de dois dígitos int parte1 = numero / 100; int parte2 = numero % 100; // Verificar se a soma das partes elevada ao quadrado é igual ao número original if ((parte1 + parte2) * (parte1 + parte2) == numero) { System.out.println("O número " + numero + " possui a característica desejada."); } else { System.out.println("O número " + numero + " não possui a característica desejada."); } } scanner.close(); } }
As principais mudanças para o código em Java incluem o uso da classe Scanner
para ler a entrada do usuário, e o uso de System.out.println()
para exibir mensagens na tela. Além disso, a estrutura da classe e do método main
é diferente em Java, mas a lógica do programa é a mesma que nos exemplos anteriores.
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ use std::io; fn main() { // Solicitar ao usuário para inserir o número inteiro de quatro dígitos println!("Digite um número inteiro de quatro dígitos: "); let mut input = String::new(); io::stdin().read_line(&mut input).expect("Falha ao ler entrada."); let numero: i32 = input.trim().parse().expect("Entrada inválida."); // Verificar se o número tem quatro dígitos if numero < 1000 || numero > 9999 { println!("O número digitado não possui quatro dígitos."); } else { // Dividir o número em duas partes de dois dígitos let parte1 = numero / 100; let parte2 = numero % 100; // Verificar se a soma das partes elevada ao quadrado é igual ao número original if (parte1 + parte2) * (parte1 + parte2) == numero { println!("O número {} possui a característica desejada.", numero); } else { println!("O número {} não possui a característica desejada.", numero); } } }
As principais mudanças para o código em Rust incluem o uso de macros println!
para exibir mensagens na tela e read_line
para ler a entrada do usuário. Além disso, a manipulação de erros é feita usando expect
ou tratamento de erro com Result
, o que é uma prática comum em Rust para lidar com possíveis falhas durante a execução do programa. A sintaxe para declarar variáveis e a utilização de tipos é ligeiramente diferente, mas a lógica geral do programa é a mesma que nos exemplos anteriores.
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ package main import ( "fmt" ) func main() { var numero int // Solicitar ao usuário para inserir o número inteiro de quatro dígitos fmt.Println("Digite um número inteiro de quatro dígitos: ") fmt.Scanln(&numero) // Verificar se o número tem quatro dígitos if numero < 1000 || numero > 9999 { fmt.Println("O número digitado não possui quatro dígitos.") } else { // Dividir o número em duas partes de dois dígitos parte1 := numero / 100 parte2 := numero % 100 // Verificar se a soma das partes elevada ao quadrado é igual ao número original if (parte1+parte2)*(parte1+parte2) == numero { fmt.Printf("O número %d possui a característica desejada.\n", numero) } else { fmt.Printf("O número %d não possui a característica desejada.\n", numero) } } }
As principais diferenças em relação aos outros exemplos são:
fmt
para impressão na tela e entrada de dados.Scanln
para ler a entrada do usuário.fmt
já inclui essas funcionalidades.
Conclusão
Este exercício foi uma oportunidade valiosa para praticar e aplicar diversos conceitos fundamentais de programação. Ao escrever um programa para verificar se um número inteiro de quatro dígitos possui uma determinada característica matemática, pudemos praticar habilidades como manipulação de números, entrada e saída de dados, controle de fluxo e resolução de problemas.
Além disso, ao escrever o mesmo programa em várias linguagens de programação, como C++, Python, Java, C#, Rust, Go e Pascal, pudemos comparar e contrastar as diferenças entre essas linguagens, incluindo sintaxe, convenções de nomenclatura e recursos disponíveis. Isso nos permitiu ampliar nossa compreensão sobre as diferentes abordagens para resolver um problema semelhante em diferentes contextos de programação.
Em última análise, este exercício destacou a importância da prática contínua na construção e aprimoramento das habilidades de programação, bem como a versatilidade e adaptabilidade necessárias para trabalhar em várias linguagens de programação.
Beleza pessoal? Espero que tenham gostado.
Dúvidas ou sugestões de outras linguagens? Deixe o seu comentário!
Um abraço e até o próximo post. Valeu!
#DesafioDeProgramação
#Programação
#DesenvolvimentoDeSoftware
#Aprendizado
#GiovaniDaCruz
Fala galera da programação, tudo beleza? 📅💻 Explore a manipulação de datas e descubra como calcular o dia anterior em várias linguagens de programação! Aprenda algoritmos, lógica condicional e muito mais neste desafio divertido. Considerações Para facilitar, considerar que os anos bissextos são aqueles divisíveis por 4. Assim o mês 2 (fevereiro) possui 28 […]
Fala galera da programação, tudo beleza? Vamos a um novo exercício de algoritmos com desvio condicional. Desafie suas habilidades de programação com este exercício simples de cálculo de estacionamento em diversas linguagens! 🚗💻 Aprenda e pratique condicionais, entrada/saída e sintaxe em várias linguagens. Dicas para o exercício Lembrar que pode ser informado 0 no tempo […]
Fala galera da programação, tudo beleza? 💻 Novo exercício na área para aprimorar a nossa lógica de programação. Dica do exercício: Para simplificar o problema, converta cada par de valores em um único valor em minutos. 🕒 O que podemos aprender neste exercício? Neste exercício, podemos aprender várias coisas: Manipulação de Entrada/Saída: Aprendemos como […]
Fala galera da programação, tudo beleza? Novo algoritmo na área com o tema desvio condicional. Hoje vamos explorar uma variedade de linguagens de programação! 🚀 Comparando diferentes abordagens para resolver um problema simples: determinar se um número é zero, positivo ou negativo. Da sintaxe às estruturas condicionais, mergulhamos na essência de cada linguagem. O […]
Fala galera da programação, tudo beleza? Hoje vamos descubra como este simples exercício de programação em várias linguagens pode fortalecer suas habilidades de codificação! 🚀 Aprenda a calcular médias de notas e determinar a aprovação ou reprovação de alunos em C++, C, Pascal, Python, C#, Java, Rust e Go. O que podemos aprender neste […]
Fala galera da programação, tudo beleza? Hoje um novo exercício de calculadora para aprimorar nossa lógica de programação. Dicas do exercício Em duas situações, o programa não deverá efetuar o cálculo: Se o operador informado pelo usuário for inválido mostrar a mensagem “Operador inválido” e encerrar a execução do programa. Se o segundo operando […]
Fala galera da programação, tudo beleza? Lá vamos nós a mais um interessante exercício. Dados do Exercício Formulas Para Homens: ( 72.7 * altura ) – 58 Para Mulheres: ( 62.1 * altura) – 44.7 Mais dicas A altura da pessoa é um valor real. O sexo da pessoa deverá ser identificado através […]
Fala galera da programação, tudo beleza? Vamos a um novo exercício para aprimorarmos nossas habilidades. Aqui existem dados importantes para podermos realizar a tarefa. Dados do exercício Tabela de códigos: código = 1: multiplicar os três valores código = 2: somar os três valores código = 3: subtrair os três valores código = 4: […]
Fala galera da programação, tudo beleza? Quer aprimorar suas habilidades com estruturas condicionais? Explore este desafio de aprendizado de if-else. O que podemos aprender neste exercício? Neste exercício, aprendemos a: Solicitar entrada do usuário: Aprendemos a solicitar entrada do usuário para obter informações necessárias para o programa, como a idade do nadador. Isso é útil […]
Fala galera da programação, tudo beleza? Hoje vamos montar nossas calculadoras! Acredito que seja um dos exercícios mais realizados entre os iniciantes. O desafio será encapsular as operações aritméticas em funções. O que vamos aprender neste exercício? Neste exercício, vamos aprender sobre: Funções em Programação: Vamos explorar como dividir nosso código em funções. As […]