Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - operazioni su file di testo
Forum - C/C++ - operazioni su file di testo

Avatar
kikko_rm (Normal User)
Newbie


Messaggi: 18
Iscritto: 29/03/2007

Segnala al moderatore
Postato alle 14:06
Martedì, 03/04/2007
salve a tutti. mi scuso per aver scritto male il titolo del topic la scorsa volta.
volevo chiedervi un parere. devo fare un programma che calcoli le frequenze delle lettere in un file di testo.
ho in mente due modi uno di prendere un carattere per volta e confrontarlo con un vettore di ascii l'altra idea è quella di mettere tutto il file in un vettore per poi ordinarlo e confrontare ogni elemento con il vettore di carattere ascii. secondo me quest'ultimo modo è piu veloce in fase di elaborazione visto che una volta trovato un carattere essendo il vettore del file ordinato nn andro piu a cercare quel carattere. secondo voi?? sono ben accetti altri consigli. grazie.

PM Quote
Avatar
Reese (Ex-Member)
Pro


Messaggi: 179
Iscritto: 09/08/2006

Segnala al moderatore
Postato alle 17:22
Martedì, 03/04/2007
Io farei così: dichiarare un array int ASCII[255]; e, man mano che leggi ogni carattere c, esegui quest'operazione:
ASCII[c]++;
In questo modo hai per ogni carattere della tabella ASCII il numero di frequenze.


Dr. Wilson: You're - you're trying to objectively measure how much I value our friendship?
Dr. Gregory House: That's five grand, you've got nothing to be ashamed of. So what do you say, one little phone call, one big check?
PM Quote
Avatar
kikko_rm (Normal User)
Newbie


Messaggi: 18
Iscritto: 29/03/2007

Segnala al moderatore
Postato alle 22:37
Martedì, 03/04/2007
Testo quotato

Postato originariamente da Reese:

Io farei così: dichiarare un array int ASCII[255]; e, man mano che leggi ogni carattere c, esegui quest'operazione:
ASCII[c]++;
In questo modo hai per ogni carattere della tabella ASCII il numero di frequenze.



io devo stampare ogni carattere ascii con le rispettive frequenze percio nn mi servirebbe una matrice in modo che da una parte ce l'ascii e dall'altra le rispettive frequenze?? il tuo modo nn l'ho capito scusa l'ignoranza mi potresti scrivere come sarebbe il codice cosi lo provo e lo capisco meglio grazie mille....

PM Quote
Avatar
Reese (Ex-Member)
Pro


Messaggi: 179
Iscritto: 09/08/2006

Segnala al moderatore
Postato alle 12:14
Mercoledì, 04/04/2007
Codice sorgente - presumibilmente C/C++

  1. int ASCII[255]={0};
  2. char c;
  3.  
  4. ifstream input("path");
  5.  
  6. while (!input.eof()){
  7.   c = input.get();
  8.   ASCII[c]++;
  9. }
  10. input.close();



In questo modo, quando si presenta il carattere '1', per esempio, ASCII[c]++ significa ASCII[48]++, e così hai il numero di frequenze per ogni carattere della tabella ASCII estesa.

Ultima modifica effettuata da Reese il 04/04/2007 alle 12:21


Dr. Wilson: You're - you're trying to objectively measure how much I value our friendship?
Dr. Gregory House: That's five grand, you've got nothing to be ashamed of. So what do you say, one little phone call, one big check?
PM Quote
Avatar
kikko_rm (Normal User)
Newbie


Messaggi: 18
Iscritto: 29/03/2007

Segnala al moderatore
Postato alle 18:21
Mercoledì, 04/04/2007
Testo quotato

Postato originariamente da Reese:

Codice sorgente - presumibilmente C/C++

  1. int ASCII[255]={0};
  2. char c;
  3.  
  4. ifstream input("path");
  5.  
  6. while (!input.eof()){
  7.   c = input.get();
  8.   ASCII[c]++;
  9. }
  10. input.close();



In questo modo, quando si presenta il carattere '1', per esempio, ASCII[c]++ significa ASCII[48]++, e così hai il numero di frequenze per ogni carattere della tabella ASCII estesa.



ciao.. senti ho provato ma a me non funziona sicuramente sono io che non sono capace di farlo funzionare se ti va vedi tu cosa ha il codice che ti scrivo qua sotto:
#include <iostream>
#include <fstream.h>
#include <stdlib.h>
using namespace std;
fstream file; //variabile globale
main()
{
char percorso_file[60]; //vettore percorso file per inserimento
char c; //carattere per il cin.get
cout<<"inserici il percorso file desiderato\n";
cin.getline(percorso_file,60);
cout<<"inserisci un testo terminato da '/'\n";
fstream file(percorso_file,ios::out);
while((c=cin.get()) != '/')
{
  file<<c;
}
file.close();

int ASCII[255]={0};


ifstream input("path");

while (!input.eof()){
c = input.get();
ASCII[c]++;
}
input.close();
int i;
      for(i=0;i<=255;i++) cout<<ASCII<<endl;
}


scusa il disturbo grazie!!!!!

PM Quote
Avatar
Reese (Ex-Member)
Pro


Messaggi: 179
Iscritto: 09/08/2006

Segnala al moderatore
Postato alle 23:54
Mercoledì, 04/04/2007
Io avevo scritto input("path"), intendendo con "path" il percorso del film che tu hai in un array. Poi, quando stampi i valori, devi scrivere ASCII o *(ASCII+i)


Dr. Wilson: You're - you're trying to objectively measure how much I value our friendship?
Dr. Gregory House: That's five grand, you've got nothing to be ashamed of. So what do you say, one little phone call, one big check?
PM Quote
Avatar
kikko_rm (Normal User)
Newbie


Messaggi: 18
Iscritto: 29/03/2007

Segnala al moderatore
Postato alle 14:10
Giovedì, 05/04/2007
grazie mille ora ho capito perfettamente il tuo consiglio è stato preziosissimo... grazie

PM Quote