Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    20

    [Java]Alcuni piccoli consigli...

    Quelli che seguono sono 2 testi di esercizio dame studiati in data odierna.
    Non ci sono problemi se non fosse che non capisco un paio di piccole cose, che vi segno in rosso
    //Sviluppare un programma (metodo main della classe Anagramma)che date 2 parole in input, verifichi se una è l'anagramma dl'altra

    //sottoproblemi
    //acquisizione delle due parole
    //verifica lunghezzacoincidente
    // verifica anagramma delle parole
    //stampa dei risultati



    class mioAnagramma
    {
    public static void main(String args[])
    {
    ConsoleInputManager in = new ConsoleInputManager();
    ConsoleOutputManager out = new ConsoleOutputManager();

    //acquisizione delle parole
    String parola1= in.readLine("Inserisci la prima parola: ");
    String parola2= in.readLine("Inserisci la seconda parola: ");
    boolean controllo=true;

    //verifica della lunghezza
    if(parola1.length()==parola2.length())
    {
    //verifica anagramma
    for(int i=0; i <parola1.length();i++)
    {
    char c= parola1.charAt(i); //prendo la lettera dalla posizione i
    int indice = parola2.indexOf(c); //faccio cosi in quanto una stringa parte da pos.0?
    if(indice>=0)
    parola2= parola2.substring(0,indice)+parola2.substring(indi ce+1); //???
    else controllo=false;
    }
    }
    else controllo=false;


    //comunico i risultati
    if(controllo) out.println("ANAGRAMMA VERO");
    else out.println("ANAGRAMMA FALSO");

    }}
    e questo è il testo del secondo esercizio
    //Scrivere un programma che realizzi un codice di sostituzione in cui si possa sostituire ogni lettera con quella che la segue di n posizioni (1<=n<=26) dove n è
    //la chiave di cifratura


    // specifiche del problema
    // dato un testo (lettere minuscole) in chiaro e una chiave, cifrare il testo con il codice di sostituzione
    // dato un testo cifrato (lettere minuscole) ottenere il testo in chiaro a patto di fornire la chiave corretta
    // preservare l'inviolabilità del codice: il testo originale può essere ottenuto solamente conoscendo la chiave

    //sottoproblemi
    //menu a due scelte: codifica e decodifica
    //acquisizione di testo e chiave
    //costruire il testo (cifrato o in chiaro)mediante la sostituzione di un carattere alla volta





    import prog.io.*;
    import java.lang.*;
    import prog.utili.*;

    class keydicifratura {

    public static void main(String[] args) {
    ConsoleOutputManager out = new ConsoleOutputManager();
    ConsoleInputManager in = new ConsoleInputManager();

    String alfabeto = "abcdefghijklmnopqrstuvwxyz";
    String testo;
    int chiave;
    char caratterevuoto= " ";
    //realizzo il menu a doppia scelta
    out.println("MENU");
    out.println("1)Codifica");
    out.println("2)Decodifica");

    do
    {
    int scelta=in.readInt("\n Inserisci il numero associato all'operazione che desidera eseguire: ");

    switch(scelta)
    {
    case 1:
    testo=in.readLine("Inserisci il testo che desideri codificare: ");
    chiave=in.readInt("Inserisci la chiave di codifica: ");
    String testoCodificato="";
    testo=testo.toLowerCase().trim(); //testo in minuscolo ed elimino gli spazi
    for(int i=0; i<testo.length();i++)
    {
    char carattere;
    if((carattere=testo.charAt(i)) != caratterevuoto ) //se il carattere prelevato da testo con indice i e messo in carattere è diverso da 0
    {
    testoCodificato+=alfabeto.charAt((alfabeto.indexOf (carattere)+chiave) %26); //????????
    }
    else testoCodificato+=' ';
    }

    testoCodificato=testoCodificato.toUpperCase();
    out.println("Testo cifrato: "+testoCodificato);
    break;
    case 2: testo=in.readLine("Inserisci il codice da decodificare: ");
    chiave=in.readInt("Inserisci la chiave di lettura del codice: ");
    String testoDecodificato="";
    testo=testo.toLowerCase().trim(); //elimino gli spazi oltre a rendere tutto minuscolo
    for(int i=0; i<testo.length(); i++)
    {
    char carattere;
    if((carattere=testo.charAt(i)) != caratterevuoto')

    testoDecodificato+=alfabeto.charAt((alfabeto.index Of(carattere)+26-chiave)%26); //giusto,però non capisco il %26


    else testoDecodificato+= ' ';
    }
    testoDecodificato=testoDecodificato.toUpperCase();
    out.println("Testo codificato: "+testoDecodificato);
    break;


    case default: out.println("Hai inserito il numero sbagliato");
    }}
    while(scelta!=1 && scelta !=2 && scelta !=0);




    }}



  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,461
    Cos'è che non capisci?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    il codice lo puoi postare tra i tag CODE ??

    cosi' e' illeggibile!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    20
    non capisco le parti di codice scritte in rosso

    codice:
    //Sviluppare un programma (metodo main della classe Anagramma)che date 2 parole in input, verifichi se una è l'anagramma dl'altra
    
    //sottoproblemi
    //acquisizione delle due parole
    //verifica lunghezzacoincidente
    // verifica anagramma delle parole
    //stampa dei risultati
    
    
    
    class mioAnagramma
    {
    public static void main(String args[])
    {
    ConsoleInputManager in = new ConsoleInputManager();
    ConsoleOutputManager out = new ConsoleOutputManager();
    
    //acquisizione delle parole
    String parola1= in.readLine("Inserisci la prima parola: ");
    String parola2= in.readLine("Inserisci la seconda parola: ");
    boolean controllo=true;
    
    //verifica della lunghezza
    if(parola1.length()==parola2.length())
    {
    //verifica anagramma
    for(int i=0; i <parola1.length();i++)
    {
    char c= parola1.charAt(i); //prendo la lettera dalla posizione i
    int indice = parola2.indexOf(c); //faccio cosi in quanto una stringa parte da pos.0?
    if(indice>=0)
    parola2= parola2.substring(0,indice)+parola2.substring(indice+1); //???
    else controllo=false;
    }
    }
    else controllo=false;
    
    
    //comunico i risultati
    if(controllo) out.println("ANAGRAMMA VERO");
    else out.println("ANAGRAMMA FALSO");
    
    }}
    
    
    
    
    
    
    e questo è il testo del secondo esercizio
    Citazione:
    
    //Scrivere un programma che realizzi un codice di sostituzione in cui si possa sostituire ogni lettera con quella che la segue di n posizioni (1<=n<=26) dove n è
    //la chiave di cifratura
    
    
    // specifiche del problema
    // dato un testo (lettere minuscole) in chiaro e una chiave, cifrare il testo con il codice di sostituzione
    // dato un testo cifrato (lettere minuscole) ottenere il testo in chiaro a patto di fornire la chiave corretta
    // preservare l'inviolabilità del codice: il testo originale può essere ottenuto solamente conoscendo la chiave
    
    //sottoproblemi
    //menu a due scelte: codifica e decodifica
    //acquisizione di testo e chiave
    //costruire il testo (cifrato o in chiaro)mediante la sostituzione di un carattere alla volta
    
    
    
    
    
    import prog.io.*;
    import java.lang.*;
    import prog.utili.*;
    
    class keydicifratura {
    
    public static void main(String[] args) {
    ConsoleOutputManager out = new ConsoleOutputManager();
    ConsoleInputManager in = new ConsoleInputManager();
    
    String alfabeto = "abcdefghijklmnopqrstuvwxyz";
    String testo;
    int chiave;
    char caratterevuoto= " ";
    //realizzo il menu a doppia scelta
    out.println("MENU");
    out.println("1)Codifica");
    out.println("2)Decodifica");
    
    do
    {
    int scelta=in.readInt("\n Inserisci il numero associato all'operazione che desidera eseguire: ");
    
    switch(scelta)
    {
    case 1:
    testo=in.readLine("Inserisci il testo che desideri codificare: ");
    chiave=in.readInt("Inserisci la chiave di codifica: ");
    String testoCodificato="";
    testo=testo.toLowerCase().trim(); //testo in minuscolo ed elimino gli spazi
    for(int i=0; i<testo.length();i++)
    {
    char carattere;
    if((carattere=testo.charAt(i)) != caratterevuoto ) //se il carattere prelevato da testo con indice i e messo in carattere è diverso da 0
    {
    [u]testoCodificato+=alfabeto.charAt((alfabeto.indexOf(carattere)+chiave) %26); //???????? non capisco quel 26%[/(u]
    }
    else testoCodificato+=' ';
    }
    
    testoCodificato=testoCodificato.toUpperCase();
    out.println("Testo cifrato: "+testoCodificato);
    break;
    case 2: testo=in.readLine("Inserisci il codice da decodificare: ");
    chiave=in.readInt("Inserisci la chiave di lettura del codice: ");
    String testoDecodificato="";
    testo=testo.toLowerCase().trim(); //elimino gli spazi oltre a rendere tutto minuscolo
    for(int i=0; i<testo.length(); i++)
    {
    char carattere;
    if((carattere=testo.charAt(i)) != caratterevuoto')
    
    testoDecodificato+=alfabeto.charAt((alfabeto.indexOf(carattere)+26-chiave)%26); //giusto,però non capisco il %26
    
    
    else testoDecodificato+= ' ';
    }
    testoDecodificato=testoDecodificato.toUpperCase();
    out.println("Testo codificato: "+testoDecodificato);
    break;
    
    
    case default: out.println("Hai inserito il numero sbagliato");
    }}
    while(scelta!=1 && scelta !=2 && scelta !=0);
    
    
    
    
    }}

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802


    possibilmente indentato
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    E' sufficiente controllare la documentazione della classe String per capire cosa fanno.

    La prima costruisce una nuova stringa prendendo due sottostringhe di quella iniziale.
    Le due sottostringhe sono
    1) Dal primo carattere fino a quello immediatamente prima del carattere indicato alla posizione "indice";
    2) Da quello successivo alla posizione "indice" fino alla fine.

    In pratica toglie dalla stringa il carattere in posizione "indice".


    La seconda concatena un carattere. Il carattere è quello nella posizione data dalla funzione
    codice:
    alfabeto.indexOf(carattere)+26-chiave)%26
    Ovvero, prende l'indice di un carattere da un alfabeto, aggiunge 26, sottrae un valore chiave e lo mette in modulo 26 (che guarda caso è il numero di caratteri dell'alfabeto internazionale).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    20
    grazie mille!
    altra piccola cosa: il metodo Math.abs che cavolo fa!?

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,461
    Originariamente inviato da IlBodoz
    grazie mille!
    altra piccola cosa: il metodo Math.abs che cavolo fa!?
    Non puoi aprire una discussione e chiedere il funzionamento di qualsiasi funzione e classe tu veda in un listato. Accedi alla documentazione ufficiale della libreria di classi e ricerca al suo interno le classi e i metodi relativi.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.