Progetto 2 - Array

di il
8 risposte

Progetto 2 - Array

Non so come devo iniziare su questo esercizio.
Se mi potete dare qualche suggerimento.

/*Scrivere un programma che legge una riga di testo che termina con un punto, che funge da valore sentinella.
* visualizzare tutte le lettere presenti nel testo, una per riga e in ordine alfabetico,
* indicando il numero di volte che si presenta nel testo. Utilizzare un array di tipo base int di lunghezza 21,
* cosi che l'elemento all'indice 0 contenga il numero di lettere "a", l'elemento all'indice 1 contenga il numero
* di lettere "b" e cosi via.considerare come input sia le lettere maiuscole, sia quelle minuscole ma poi nel conteggio
* considerarle uguali.
* Suggerimento: prima di elaborare la riga di testo, utilizzare uno dei metodi touppercase o tolowercase della classe
* string. potrebbe essere utile definire un metodo che prende come argomento un carattere e restituisce un valore int
* che corrisponde al corretto indice di quel carattere. per esempio l'argomento 'a' restituirà 0, l'argomento 'b'
* restituirà 1 e cosi via. si noti che è possibile utilizzare una conversione di tipo come (int) lettera per trasformare una
* char in int. sicuramente questo non restituira il valore desiderato ma se si sottrae (int) 'a' si avrà l'indice
* corretto. infine si permetta all'utente di ripetere queste operazioni finchè vuole.*/

8 Risposte

  • Re: Progetto 2 - Array

    Su questo, senza array, riesco a catalogare tutti i caratteri.

    String s = "John";
    for (int i = 0; i < s.length(); i++)
    { char ch = s.charAt(i);
    // elabora ch
    }

    Ma con gli array come faccio a stampare tutti i caratteri riga per riga????
  • Re: Progetto 2 - Array

    robot ha scritto:


    /*Scrivere un programma che legge una riga di testo che termina con un punto, che funge da valore sentinella.
    Se usi es. nextLine() di Scanner, hai già una "riga" ben delimitata (dal newline). Se vuoi fermarti, come logica, al primo punto "." allora ok. Tipo, inserisci una riga "Prova. Ciao" e ti vuoi fermare al punto, allora ha senso. Ma se non ci fosse un punto? Lo devi considerare errore? O devi andare avanti finché non trovi un punto?

    robot ha scritto:


    * indicando il numero di volte che si presenta nel testo. Utilizzare un array di tipo base int di lunghezza 21,
    Tieni presente che in ASCII le lettere dell'alfabeto base vanno da a/A a z/Z e comprendono in mezzo le 5 lettere inglesi J K W X Y.
    Quindi se vuoi "mappare" il ASCII delle sole lettere ITALIANE in indici 0....20 allora ti tocca fare una mappatura più particolare e meno lineare di quanto verrebbe normalmente.
  • Re: Progetto 2 - Array

    Ok, su questo primo punto posso procedere.
    Invece per la scomposizione degli array di stringhe? come faccio?
    la lunghezza massima è 21.
    es. ciao
    3 -->c
    9 -->i
    1 -->a
    13-->o
    come faccio a stampare questo risultato??

    Grazie
  • Re: Progetto 2 - Array

    Questo esercizio è difficile.
  • Re: Progetto 2 - Array

    robot ha scritto:


    Invece per la scomposizione degli array di stringhe? come faccio?
    la lunghezza massima è 21.
    es. ciao
    3 -->c
    9 -->i
    1 -->a
    13-->o
    come faccio a stampare questo risultato??
    Allora:
    - leggi una riga (puoi usare nextLine() di Scanner).
    - devi scansionare carattere per carattere, usi chiaramente un ciclo for e poi prendi il carattere i-esimo usando charAt() di String. Il for lo puoi terminare quando la stringa è terminata (come è ovvio e tipico) O quando trovi il punto (se questo va bene, altrimenti dovresti continuare a leggere righe fino a quando riesci a trovare un ".").
    - ciascun carattere lo puoi portare in maiuscolo o minuscolo, scegli tu.
    - devi "mappare" i caratteri in indici dell'array. Se hai un array di 21 elementi int, gli indici vanno da 0 a 20 compresi. Quindi a/A --> 0, z/Z --> 20
    - ottenuto l'indice vai ad incrementare il valore nell'array a quell'indice. Ti viene chiesto infatti "indicando il numero di volte che si presenta nel testo" e questo è appunto il modo per "contare" quante volte trovi una certa lettera.

    Alla fine stampi il contenuto dell'array ma dovrai chiaramente stampare anche la lettera e qui devi decidere cosa fare (puoi anche tenere un array dei 21 caratteri, oltre all'array dei 21 contatori).
  • Re: Progetto 2 - Array

    Ho fatto questo pezzetto di codice ma c'è qualcosa che non funziona, cioè quando scrivo "ciao." non termina perchè?
    
    Scanner in = new Scanner(System.in);
    		
    		String frase = null;
    		int [] dim = new int[21]; //lunghezza frase
    		
    		System.out.println("Inserisci una riga: ");
    		
    		for(int i= 0; i < dim.length; i++){ //lunghezza array max 20
    			frase = in.nextLine(); //inserisci testo
    			
    			if(frase.charAt(i - 1) == '.'){ //verifica se c'è il punto
    				System.out.println("La frase termina con un punto");
    				break;
    			}
    			
    		}
    
    
    
  • Re: Progetto 2 - Array

    Quello che hai scritto purtroppo NON ha senso. L'array dim, se non l'avessi ancora capito, dovrà contenere dei "contatori" delle occorrenze.
    Se all'indice 1 (lettera b/B) c'è un valore 4, dovrà voler dire che nel testo hai trovato quattro lettere b/B.

    Quindi:
    - leggi 1 riga.
    - itera sui caratteri (for da 0 finché < di stringa.length() )
    - prendi il carattere i-esimo con charAt()
    ecc....
  • Re: Progetto 2 - Array

    Chiedo Scusa, ma su questo esercizio, sto avendo difficoltà.
    Ho bisogno di avere una soluzione.
    Un codice di esempio, per studiare tutto.
Devi accedere o registrarti per scrivere nel forum
8 risposte