Sou novato,então não sei como é formato da comunidade… Eu so queria uma ferramenta (ou onde procurar ) no java na qual posso armezanar um serie de numero em diferentes variaveis. A questão é do livro Deitel.
Pagina 118 Exercicio (fazendo a diferença) 4.38
O Exercico O crescimento explosivo das comunicações pela Internet e do armazenamento de dados nos computadores conectados à Internet aumentou muito a preocupação com a privacidade. O campo da criptografia trata da codificação de dados para torná-los difíceis (ou impossíveis, com os esquemas mais avançados) de serem lidos por usuários não autorizados. Nesse exercício, você investigará um esquema simples de codificação e decodificação de dados. Uma empresa que queira enviar dados pela Internet lhe pediu que escrevesse um programa que os codificasse para que pudessem ser transmitidos com mais segurança. Todos os dados são transmitidos como inteiros de quatro dígitos. Sua aplicação deverá ler um inteiro de quatro dígitos informado pelo usuário e codificá-lo da seguinte forma: substitua cada dígito pelo resultado da soma de 7 ao dígito e calcular o módulo depois de dividir o novo valor por 10. Depois, troque o primeiro dígito pelo terceiro e troque o segundo dígito pelo quarto. A seguir, imprima o inteiro codificado. Escreva outra aplicação que receba um inteiro de quatro dígitos codificado e o decodifique (invertendo o esquema de codificação) para formar o número original. [Projeto de leitura opcional: pesquise ‘criptografia de chave pública’ em geral e o esquema de chave pública PGP (Pretty Good Privacy) específico. Você também poderá querer investigar o esquema RSA, que é bastante usado em aplicações de peso industrial.
Qual edição do livro? O exercício é o “mil trezentos e trinta e um” mesmo? O número está correto? Não há nenhum ponto para separar o capítulo etc.?
J
J.Franklin
Desculpe a falta de informação.
É o livro deitel edição 8 (como programar em java)
Pagina 118 Exercicio (fazendo a diferença) 4.38
o exercicio - O crescimento explosivo das comunicações pela Internet e do armazenamento de dados nos computadores conectados à Internet aumentou muito a preocupação com a privacidade. O campo da criptografia trata da codificação de dados para torná-los difíceis (ou impossíveis, com os esquemas mais avançados) de serem lidos por usuários não autorizados. Nesse exercício, você investigará um esquema simples de codificação e decodificação de dados. Uma empresa que queira enviar dados pela Internet lhe pediu que escrevesse um programa que os codificasse para que pudessem ser transmitidos com mais segurança. Todos os dados são transmitidos como inteiros de quatro dígitos. Sua aplicação deverá ler um inteiro de quatro dígitos informado pelo usuário e codificá-lo da seguinte forma: substitua cada dígito pelo resultado da soma de 7 ao dígito e calcular o módulo depois de dividir o novo valor por 10. Depois, troque o primeiro dígito pelo terceiro e troque o segundo dígito pelo quarto. A seguir, imprima o inteiro codificado. Escreva outra aplicação que receba um inteiro de quatro dígitos codificado e o decodifique (invertendo o esquema de codificação) para formar o número original. [Projeto de leitura opcional: pesquise ‘criptografia de chave pública’ em geral e o esquema de chave pública PGP (Pretty Good Privacy) específico. Você também poderá querer investigar o esquema RSA, que é bastante usado em aplicações de peso industrial.]
D
davidbuzatto
Legal. Seu problema é separar os dígitos. Os exercícios dos Deitel são ótimos e eles cobram o que vc viu nos capítulos. Só te faltou enxergar como resolver o que foi proposto com o que foi aprendido.
Imagina o número 3867. Vc quer separar 3, 8, 6 e 7, certo? Se você dividir 3867 por 1000, qual número vc obterá? Se vc dividir 867 por 100, qual número obterá? E se dividir 67 por 10, qual número obterá? Pegou a ideia? Falta um detalhe. Como vc obteria 867 a partir de 3867? Ou então, como vc obteria 67 a partir de 3867 ou mesmo 867? Lembra do operador de resto/módulo? 3867 % 1000 é igual a???
Tenta ai
J
J.Franklin
Ah,obrigado por me dar uma direção não tinha pensado dessa maneira vou da relida nos capítulos anterior.
3867 % 1000 = 867. Assim posso separar-los
D
davidbuzatto
3867 % 1000 = 867
3867 % 100 = 67
3867 % 10 = 7
J
J.Franklin
Desculpe de eu fazer outra pergunta, mas como possar juntar os valores codificado em uma unica String (ficou mais ou menos assim)
import java.util.Scanner;
publicclassEx438{publicstaticvoidmain(String[]args){Scannerinter=newScanner(System.in);System.out.println("Digite um inteiro com 4 numero ");intnumber=inter.nextInt();intmid0=number/1000;
intnumero=3867;intmilhar=numero/1000;// milhar recebe 3numero=numero%1000;// numero recebe 867intcentena=numero/100;// centena recebe 8numero=numero%100;// numero recebe 67intdezena=numero/10;// dezenha recebe 6intunidade=numero%10;// unidade recebe 7
Sobre sua dúvida: String codificado = String.format( "%d%d%d%d", milhar, centena, dezena, unidade );
D
Solucao aceita
davidbuzatto1 like
Uma solução para o problema seria essa aqui:
importjava.util.Scanner;publicclassExercicio4p38{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);System.out.println("Entre com um inteiro de quatro digitos: ");intnumero=Integer.parseInt(scan.nextLine());intnumeroCodificado=codificar(numero);intnumeroDecodificado=decodificar(numeroCodificado);System.out.printf("Número %d codificado = %d\n",numero,numeroCodificado);System.out.printf("Número %d decodificado = %d\n",numeroCodificado,numeroDecodificado);scan.close();}privatestaticintcodificar(intnumero){intm=numero/1000;intc=numero%1000/100;intd=numero%100/10;intu=numero%10;m=(m+7)%10;c=(c+7)%10;d=(d+7)%10;u=(u+7)%10;returnd*1000+u*100+m*10+c;}publicstaticintdecodificar(intnumero){intm=numero/1000;intc=numero%1000/100;intd=numero%100/10;intu=numero%10;m=(m-7+10)%10;c=(c-7+10)%10;d=(d-7+10)%10;u=(u-7+10)%10;returnd*1000+u*100+m*10+c;}}
J
J.Franklin
fico agradecido pelo tempo destinado ao meu problema e vou rever essa codigo para ver se eu aprendo.
Sobre a questão do float,quando esta fazendo ocorria erro de declaração.