Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Aiuto per un esercizio che tratta di   criptazione (come scambiare le cifre di un numero intero )
Forum - Java - Aiuto per un esercizio che tratta di criptazione (come scambiare le cifre di un numero intero )

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Salve a tutti,

sto studiando java con il libro "Programmazione java - fondamenti"(settima edizione) dei fratelli Deitel.
Sono arrivato a fare gli ultimi esercizi del capitolo 4 , che tratta delle istruzioni di controllo del flusso if, if...else e while,  ma non sono riuscito a fare l'esercizio 4.37.
Ecco la traccia

"Un'azienda vuole trasmettere dati sulla linea telefonica ma è preoccupata per il rischio di intercettazioni.
Vi ha chiesto di scrivere un programma che cripti i dati in modo da trasmetterli con maggiore sicurezza.
Tutti i dati sono trasmessi come interi a quattro cifre.La vostra applicazione deve acquisire  un intero a quattro cifre immesso dall'utente e criptarlo nella seguente maniera: ogni cifra dev'essere rimpiazzata con il risultato ottenuto sommando 7 alla cifra originale e calcolando il resto della divisione per 10.In seguito si deve scambiare la prima cifra con la terza e la seconda con la quarta.Visualizzate l'intero criptato."

Il mio problema è che non so come scambiare le cifre del numero :d
Qualcuno può darmi una mano postando un esempio di codice  che scambi le cifre di un numero a quattro cifre?
grazie ciaooo

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
1
Down
V
Segnala al moderatore
Postato alle 18:25
Giovedì, 23/06/2011
Codice sorgente - presumibilmente Java

  1. import java.util.Scanner;
  2.  
  3. public class IntStrOrdina {
  4.         public static String Added(String a, int index) {
  5.                 return String.valueOf((Integer.parseInt(a.substring(index, index + 1)) + 7) % 10);
  6.                 //a.substring(inizio, fine) prende il pezzo di stringa tra inizio e fine
  7.                 //Con Integer.paraseInt(stringa) fa trasformo in numero
  8.                 //Faccio i conti
  9.                 //Con String.valueOf(intero) torna stringa;
  10.         }
  11.         public static void main(String[] args) {
  12.                 Scanner i = new Scanner(System.in);
  13.                 String s = i.next(); //Leggi l'intera stringa
  14.                 if(s.length() == 4) {
  15.                         String t;
  16.                         t = Added(s, 2) + Added(s, 3) + Added(s, 0) + Added(s, 1);
  17.                         //La ordino (indice 0 = 1° carattere)
  18.                         System.out.print(t);
  19.                 } else {
  20.                         System.out.print("Non è stato inserito un numero di 4 cifre!");
  21.                 }
  22.         }
  23. }


Non credo sia il miglior modo ma credo funzioni (l'ho fatto al volo quindi se trovi come migliorarlo fallo pure)

PM
Avatar
crack001 (Normal User)
Rookie


Messaggi: 52
Iscritto: 25/10/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 23:14
Venerdì, 17/06/2011
puoi trasformare il tuo intero in un array d'interi dove ogni posizione dell'array comprende 1 singola cifra del tuo intero, e poi puoi farti un algoritmo per lo scambio, ci sono anche altri modi ma mi sembra il piu semplice da implementare

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
0
Down
V
Segnala al moderatore
Postato alle 10:47
Sabato, 18/06/2011
Dovresti prima dividere la "stringa numerica" in 4 caratteri, fare le operazioni, e salvarle con quell'ordine (tutto lo spostamento conviene farlo usando array di caratteri e non operazioni matematiche :))

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
0
Down
V
Segnala al moderatore
Postato alle 11:30
Sabato, 18/06/2011
:rofl: Conosco gli array , ma non so usarli in java D: .
Ho pensato di fare in questo modo, con le poche conoscenze che ho su java:

Codice sorgente - presumibilmente Java

  1. import java.util.Scanner;
  2.  
  3. public class App{
  4.    
  5.    public static void main(String args[]){
  6.        
  7.        Scanner input = new Scanner(System.in);
  8.        
  9.        int numero, numero2, numero3,numero4;
  10.        
  11.        System.out.print("Inserire numero:");
  12.        numero = input.nextInt();
  13.        System.out.print("Inserire numero:");
  14.        numero2 = input.nextInt();
  15.        System.out.print("Inserire numero:");
  16.        numero3 = input.nextInt();
  17.        System.out.print("Inserire numero:");
  18.        numero4 = input.nextInt();
  19.        
  20.        
  21.        numero += 7;
  22.        numero %= 10;
  23.        numero2 += 7;
  24.        numero2 %=10;
  25.        numero3 += 7;
  26.        numero3 %= 10;
  27.        numero4 += 7;
  28.        numero4 %= 10;
  29.    
  30.        
  31.        System.out.printf("%d%d%d%d",numero3,numero4,numero,numero2);
  32.        }
  33.        
  34. }



Ma credo che dia un risultato errato.:heehee:

Come faccio a dividere la "stringa numerica" ?Che poi la dovrei dividere dopo le operazioni della somma e del resto.

PM
Usa i commenti per chiedere spiegazioni o ringraziare le risposte.