Oppure

Loading
03/04/07 12:06
kikko_rm
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.
aaa
03/04/07 15:22
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.
aaa
03/04/07 20:37
kikko_rm
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....
aaa
04/04/07 10:14
Reese
int ASCII[255]={0};
char c;

ifstream input("path");

while (!input.eof()){
  c = input.get();
  ASCII[c]++;
}
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 04/04/07 10:21
aaa
04/04/07 16:21
kikko_rm
Postato originariamente da Reese:

int ASCII[255]={0};
char c;

ifstream input("path");

while (!input.eof()){
  c = input.get();
  ASCII[c]++;
}
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[i]<<endl;
}


scusa il disturbo grazie!!!!!
aaa
04/04/07 21:54
Reese
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[i] o *(ASCII+i)
aaa
05/04/07 12:10
kikko_rm
grazie mille ora ho capito perfettamente il tuo consiglio è stato preziosissimo... grazie
aaa