Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Frequenza caratteri

  1. #1

    Frequenza caratteri

    "Si realizzi un programma Java che prende in input un file di testo e poi stampi in
    un file di output la frequenza con cui i singoli caratteri dell'alfabeto appaino nel
    documento. I simboli di punteggiatura non devono essere considerati. Inoltre non
    dovrą essere fatta distinzione tra caratteri maiuscoli e caratteri minuscoli. I caratteri
    dovranno essere visualizzati nel file di output in ordine alfabetico. Le frequenze dei
    caratteri dovranno essere espresse in forma percentuale con al pił due cifre decimali
    per ogni valore (arrotondate per difetto)."

    Ho dei dubbi su come calcolare la frequenza.
    Dovrei ad esempio contare quante 'a' ci sono, e poi non mi ricordo, devo dividere per il numero totale di lettere (caratteri) presenti nel testo?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Frequenza caratteri

    Originariamente inviato da Darčios89
    Dovrei ad esempio contare quante 'a' ci sono, e poi non mi ricordo, devo dividere per il numero totale di lettere (caratteri) presenti nel testo?
    Sģ.

    aabccc

    a = 2/6 (0,333... x 100 = 33,33%)
    b = 1/6 (0,166... x 100 = 16,66%)
    c = 3/6 (0,5 x 100 = 50%)
    Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet

  3. #3
    Grazie mille, se ho altri problemi ti faccio sapere...

  4. #4
    Ho un problema, il programma l'ho scritto, perņ l'output č vuoto

    Cioč per ogni lettera mi riporta 0 come percentuale, temo di sbagliare nel calcolo finale, ma non capisco perchč dato che devo fare ripetizioni diviso totale per 100.

    codice:
    import java.io.*;
    
    public class Istogrammadiuntesto
    {
    	public static void main(String [] args) throws IOException
    	{
    		FileReader reader=null;
    		BufferedReader buff=null;
    		PrintWriter out=null;
    		
    		try
    		{
    			long start=System.currentTimeMillis();
    			
    			reader=new FileReader("input.txt");
    			buff=new BufferedReader(reader);
    			out=new PrintWriter("output.txt");
    			
    		
    			int [] occorrenze=new int[26];  //contiene le ripetizioni delle lettere
    			
    			int indice=0;    //l'indice contiene la ripetizione di ogni lettera dell'alfabeto
    			
    			char lettera=' ';
    			
    			int totale=0;
    			
    			while(buff.ready())
    			{
    				lettera=(char)buff.read();
    				
    				if(lettera>=97 && lettera<=122)              
    				
    					indice=lettera-97;                 //ottengo l'indice dell'array per la lettera che mi serve e lo incremento alla fine
    				
    				if(lettera>=65 && lettera<=90)
    					indice=lettera -65;
    				
    				occorrenze[indice]++;
    			}
    			
    			for(int i=0; i<26; i++)      //ho tutte le ripetizioni e cosģ vedo qual'č il totale delle lettere nel testo
    			totale+=occorrenze[i];
    			
    			char carattere='a';
    			
    			for(int i=0; i<26; i++)
    			{
    				out.print(carattere+" "+(occorrenze[i]/totale)*100+"\r"+"\n");   //stampo la percentuale 
    				carattere++;   //cosģ scriverņ la lettera corrispondente prima della percentuale
    			}
    			
    			long end=System.currentTimeMillis();
    			System.out.println(end-start);
    		}
    	
    		finally
    		{
    			if(buff!=null) buff.close();
    			if(out!=null)out.close();
    		}
    	}
    }

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.