angelica
04-02-2004, 01:25
mi faccio risentire dopo lungo tempo! :)
allora, il programmino stupido in questione conta le lettere contenute in un file di testo, e mette il risultato in un altro.
codice:
#include <stdio.h>
#include <string.h>
main()
{
int letto, i;
int conta[59];
FILE *pf;
for (i = 0; i < 59; i++)
conta[i] = 0;
pf=fopen("origine.txt","r");
do
{
letto = getc(pf);
switch (letto)
{
case 'a': conta[0]++; break;
case 'b': conta[1]++; break;
case 'c': conta[2]++; break;
case 'd': conta[3]++; break;
case 'e': conta[4]++; break;
case 'f': conta[5]++; break;
case 'g': conta[6]++; break;
case 'h': conta[7]++; break;
case 'i': conta[8]++; break;
case 'j': conta[9]++; break;
case 'k': conta[10]++; break;
case 'l': conta[11]++; break;
case 'm': conta[12]++; break;
case 'n': conta[13]++; break;
case 'o': conta[14]++; break;
case 'p': conta[15]++; break;
case 'q': conta[16]++; break;
case 'r': conta[17]++; break;
case 's': conta[18]++; break;
case 't': conta[19]++; break;
case 'u': conta[20]++; break;
case 'v': conta[21]++; break;
case 'w': conta[22]++; break;
case 'x': conta[23]++; break;
case 'y': conta[24]++; break;
case 'z': conta[25]++; break;
case 'A': conta[26]++; break;
case 'B': conta[27]++; break;
case 'C': conta[28]++; break;
case 'D': conta[29]++; break;
case 'E': conta[30]++; break;
case 'F': conta[31]++; break;
case 'G': conta[32]++; break;
case 'H': conta[33]++; break;
case 'I': conta[34]++; break;
case 'J': conta[35]++; break;
case 'K': conta[36]++; break;
case 'L': conta[37]++; break;
case 'M': conta[38]++; break;
case 'N': conta[39]++; break;
case 'O': conta[40]++; break;
case 'P': conta[41]++; break;
case 'Q': conta[42]++; break;
case 'R': conta[43]++; break;
case 'S': conta[44]++; break;
case 'T': conta[45]++; break;
case 'U': conta[46]++; break;
case 'V': conta[47]++; break;
case 'W': conta[48]++; break;
case 'X': conta[49]++; break;
case 'Y': conta[50]++; break;
case 'Z': conta[51]++; break;
case 'à': conta[52]++; break;
case 'è': conta[53]++; break;
case 'é': conta[54]++; break;
case 'ì': conta[55]++; break;
case 'ò': conta[56]++; break;
case 'ó': conta[57]++; break;
case 'ù': conta[58]++; break;
default: break;
}
}
while(letto != EOF);
fclose(pf);
pf=fopen("conteggio.txt","w");
fprintf(pf, "a=%4d A=%4d à=%4d\n", conta[0], conta[26], conta[52]);
fprintf(pf, "b=%4d B=%4d\n", conta[1], conta[27]);
fprintf(pf, "c=%4d C=%4d\n", conta[2], conta[28]);
fprintf(pf, "d=%4d D=%4d\n", conta[3], conta[29]);
fprintf(pf, "e=%4d E=%4d è=%4d é=%4d\n", conta[4], conta[30], conta[53], conta[
54]);
fprintf(pf, "f=%4d F=%4d\n", conta[5], conta[31]);
fprintf(pf, "g=%4d G=%4d\n", conta[6], conta[32]);
fprintf(pf, "h=%4d H=%4d\n", conta[7], conta[33]);
fprintf(pf, "i=%4d I=%4d ì=%4d\n", conta[8], conta[34], conta[55]);
fprintf(pf, "j=%4d J=%4d\n", conta[9], conta[35]);
fprintf(pf, "k=%4d K=%4d\n", conta[10], conta[36]);
fprintf(pf, "l=%4d L=%4d\n", conta[11], conta[37]);
fprintf(pf, "m=%4d M=%4d\n", conta[12], conta[38]);
fprintf(pf, "n=%4d N=%4d\n", conta[13], conta[39]);
fprintf(pf, "o=%4d O=%4d ò=%4d ó=%4d\n", conta[14], conta[40], conta[56], conta
[57]);
fprintf(pf, "p=%4d P=%4d\n", conta[15], conta[41]);
fprintf(pf, "q=%4d Q=%4d\n", conta[16], conta[42]);
fprintf(pf, "r=%4d R=%4d\n", conta[17], conta[43]);
fprintf(pf, "s=%4d S=%4d\n", conta[18], conta[44]);
fprintf(pf, "t=%4d T=%4d\n", conta[19], conta[45]);
fprintf(pf, "u=%4d U=%4d ù=%4d\n", conta[20], conta[46], conta[58]);
fprintf(pf, "v=%4d V=%4d\n", conta[21], conta[47]);
fprintf(pf, "w=%4d W=%4d\n", conta[22], conta[48]);
fprintf(pf, "x=%4d X=%4d\n", conta[23], conta[49]);
fprintf(pf, "y=%4d Y=%4d\n", conta[24], conta[50]);
fprintf(pf, "z=%4d Z=%4d\n", conta[25], conta[51]);
fclose(pf);
}
domande:
1) non legge i caratteri accentati...come faccio a farglielo fare?
2) come faccio, nel caso volessi far inserire all'utente il nome del file col testo da analizzare? (che nel prog sopra è tassativamente origine.txt
Gli chiedo il nome del file, ok, e magari lo registro con un gets(nome)...ma come faccio a fargli mettere tale stringa in
pf=fopen("???","r");
un'altra cosa...il codice è noiosissimo, vale a dire, tutte quelle righe perché non posso usare solo un array numerico, devo mettere a=, b=, ecc ecc...
non c'è proprio altro modo?
grazie dei consigli!!! :)
allora, il programmino stupido in questione conta le lettere contenute in un file di testo, e mette il risultato in un altro.
codice:
#include <stdio.h>
#include <string.h>
main()
{
int letto, i;
int conta[59];
FILE *pf;
for (i = 0; i < 59; i++)
conta[i] = 0;
pf=fopen("origine.txt","r");
do
{
letto = getc(pf);
switch (letto)
{
case 'a': conta[0]++; break;
case 'b': conta[1]++; break;
case 'c': conta[2]++; break;
case 'd': conta[3]++; break;
case 'e': conta[4]++; break;
case 'f': conta[5]++; break;
case 'g': conta[6]++; break;
case 'h': conta[7]++; break;
case 'i': conta[8]++; break;
case 'j': conta[9]++; break;
case 'k': conta[10]++; break;
case 'l': conta[11]++; break;
case 'm': conta[12]++; break;
case 'n': conta[13]++; break;
case 'o': conta[14]++; break;
case 'p': conta[15]++; break;
case 'q': conta[16]++; break;
case 'r': conta[17]++; break;
case 's': conta[18]++; break;
case 't': conta[19]++; break;
case 'u': conta[20]++; break;
case 'v': conta[21]++; break;
case 'w': conta[22]++; break;
case 'x': conta[23]++; break;
case 'y': conta[24]++; break;
case 'z': conta[25]++; break;
case 'A': conta[26]++; break;
case 'B': conta[27]++; break;
case 'C': conta[28]++; break;
case 'D': conta[29]++; break;
case 'E': conta[30]++; break;
case 'F': conta[31]++; break;
case 'G': conta[32]++; break;
case 'H': conta[33]++; break;
case 'I': conta[34]++; break;
case 'J': conta[35]++; break;
case 'K': conta[36]++; break;
case 'L': conta[37]++; break;
case 'M': conta[38]++; break;
case 'N': conta[39]++; break;
case 'O': conta[40]++; break;
case 'P': conta[41]++; break;
case 'Q': conta[42]++; break;
case 'R': conta[43]++; break;
case 'S': conta[44]++; break;
case 'T': conta[45]++; break;
case 'U': conta[46]++; break;
case 'V': conta[47]++; break;
case 'W': conta[48]++; break;
case 'X': conta[49]++; break;
case 'Y': conta[50]++; break;
case 'Z': conta[51]++; break;
case 'à': conta[52]++; break;
case 'è': conta[53]++; break;
case 'é': conta[54]++; break;
case 'ì': conta[55]++; break;
case 'ò': conta[56]++; break;
case 'ó': conta[57]++; break;
case 'ù': conta[58]++; break;
default: break;
}
}
while(letto != EOF);
fclose(pf);
pf=fopen("conteggio.txt","w");
fprintf(pf, "a=%4d A=%4d à=%4d\n", conta[0], conta[26], conta[52]);
fprintf(pf, "b=%4d B=%4d\n", conta[1], conta[27]);
fprintf(pf, "c=%4d C=%4d\n", conta[2], conta[28]);
fprintf(pf, "d=%4d D=%4d\n", conta[3], conta[29]);
fprintf(pf, "e=%4d E=%4d è=%4d é=%4d\n", conta[4], conta[30], conta[53], conta[
54]);
fprintf(pf, "f=%4d F=%4d\n", conta[5], conta[31]);
fprintf(pf, "g=%4d G=%4d\n", conta[6], conta[32]);
fprintf(pf, "h=%4d H=%4d\n", conta[7], conta[33]);
fprintf(pf, "i=%4d I=%4d ì=%4d\n", conta[8], conta[34], conta[55]);
fprintf(pf, "j=%4d J=%4d\n", conta[9], conta[35]);
fprintf(pf, "k=%4d K=%4d\n", conta[10], conta[36]);
fprintf(pf, "l=%4d L=%4d\n", conta[11], conta[37]);
fprintf(pf, "m=%4d M=%4d\n", conta[12], conta[38]);
fprintf(pf, "n=%4d N=%4d\n", conta[13], conta[39]);
fprintf(pf, "o=%4d O=%4d ò=%4d ó=%4d\n", conta[14], conta[40], conta[56], conta
[57]);
fprintf(pf, "p=%4d P=%4d\n", conta[15], conta[41]);
fprintf(pf, "q=%4d Q=%4d\n", conta[16], conta[42]);
fprintf(pf, "r=%4d R=%4d\n", conta[17], conta[43]);
fprintf(pf, "s=%4d S=%4d\n", conta[18], conta[44]);
fprintf(pf, "t=%4d T=%4d\n", conta[19], conta[45]);
fprintf(pf, "u=%4d U=%4d ù=%4d\n", conta[20], conta[46], conta[58]);
fprintf(pf, "v=%4d V=%4d\n", conta[21], conta[47]);
fprintf(pf, "w=%4d W=%4d\n", conta[22], conta[48]);
fprintf(pf, "x=%4d X=%4d\n", conta[23], conta[49]);
fprintf(pf, "y=%4d Y=%4d\n", conta[24], conta[50]);
fprintf(pf, "z=%4d Z=%4d\n", conta[25], conta[51]);
fclose(pf);
}
domande:
1) non legge i caratteri accentati...come faccio a farglielo fare?
2) come faccio, nel caso volessi far inserire all'utente il nome del file col testo da analizzare? (che nel prog sopra è tassativamente origine.txt
Gli chiedo il nome del file, ok, e magari lo registro con un gets(nome)...ma come faccio a fargli mettere tale stringa in
pf=fopen("???","r");
un'altra cosa...il codice è noiosissimo, vale a dire, tutte quelle righe perché non posso usare solo un array numerico, devo mettere a=, b=, ecc ecc...
non c'è proprio altro modo?
grazie dei consigli!!! :)