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
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.

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
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)

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