Oppure

Loading
01/04/08 15:25
slinky998
Ciao, devo scrivere il diagramma di flusso di un algoritmo che conta le lettere presenti in un testo. Ad esempio se inserisco la frase Ciao Anna mi dovrà stampare che ci sono 3 A, 2 N e così via. Però proprio non ci riesco anche perchè devo farlo senza utilizzare la case. Non ne ho la più pallida idea...ho guardato quelli che ci sono sul sito ma non ci ho capito nulla...mi potete aiutare? Grazie!
aaa
01/04/08 19:24
Progman-92
Ciao!!! Questo sorgente di seguito calcola solo il numero delle singole lettere contenute in un file e il numero totale. Puoi fare la stessa cosa per numeri e altri caratteri speciali...Spero vada bene :rotfl:
program ConteggioParole;
uses crt,dos;
var fil:text;
    numtotlettere: integer;
    lettere:array[1..21] of integer;
    nome:string;
    car:char;
const     
          a:byte=1;
          b:byte=2;
	 c:byte=3;
	 d:byte=4;
	 e:byte=5;
	 f:byte=6;
	 g:byte=7;
	 h:byte=8;
	 i:byte=9;
	 l:byte=10;
	 m:byte=11;
	 n:byte=12;
	 o:byte=13;
	 p:byte=14;
	 q:byte=15;
	 r:byte=16;
	 s:byte=17;
	 t:byte=18;
	 u:byte=19;
	 v:byte=20;
	 z:byte=21;

begin
    textbackground(white);
    clrscr;
    textColor(lightblue);
    gotoxy(1,2);
    write('Scrivi il percorso del file: ');
    read(nome);
    assign(fil,nome);
    reset(fil);
    repeat
    read(fil,car);
    if (car='a') or (car='A') then
      lettere[a]:=lettere[a]+1;
    if (car='b') or (car='B') then
      lettere[b]:=lettere[b]+1;
    if (car='c') or (car='C') then
      lettere[c]:=lettere[c]+1;
    if (car='d') or (car='D') then
      lettere[d]:=lettere[d]+1;
    if (car='e') or (car='E') then
      lettere[e]:=lettere[e]+1;
    if (car='f') or (car='F') then
      lettere[f]:=lettere[f]+1;
    if (car='g') or (car='G') then
      lettere[g]:=lettere[g]+1;
	if (car='h') or (car='H') then
      lettere[h]:=lettere[h]+1;
	if (car='i') or (car='I') then
      lettere[i]:=lettere[i]+1;
	if (car='l') or (car='L') then
      lettere[l]:=lettere[l]+1;
	if (car='m') or (car='M') then
      lettere[m]:=lettere[m]+1;
	if (car='n') or (car='N') then
      lettere[n]:=lettere[n]+1;
	if (car='o') or (car='O') then
      lettere[o]:=lettere[o]+1;
    if (car='p') or (car='P') then
      lettere[p]:=lettere[p]+1;
    if (car='q') or (car='Q') then
      lettere[q]:=lettere[q]+1;
    if (car='r') or (car='R') then
      lettere[r]:=lettere[r]+1;
    if (car='s') or (car='S') then
      lettere[s]:=lettere[s]+1;
	if (car='t') or (car='T') then
      lettere[t]:=lettere[t]+1;
	if (car='u') or (car='U') then
      lettere[u]:=lettere[u]+1;
	if (car='v') or (car='V') then
      lettere[v]:=lettere[v]+1;
	if (car='z') or (car='Z') then
      lettere[z]:=lettere[z]+1;
      numtotlettere:=numtotlettere+1;
    until eof(fil);
    close(fil);
    writeln;
    writeln(numtotlettere,' caratteri totali.');
    writeln(lettere[a],' lettere a .');
    writeln(lettere[b],' lettere b .');
    writeln(lettere[c],' lettere c .');
    writeln(lettere[d],' lettere d .');
    writeln(lettere[e],' lettere e .');
    writeln(lettere[f],' lettere f .');
    writeln(lettere[g],' lettere g .');
    writeln(lettere[h],' lettere h .');
    writeln(lettere[i],' lettere i .');
    writeln(lettere[l],' lettere l .');
    writeln(lettere[m],' lettere m .');
    writeln(lettere[n],' lettere n .');
    writeln(lettere[o],' lettere o .');
    writeln(lettere[p],' lettere p .');
    writeln(lettere[q],' lettere q .');
    writeln(lettere[r],' lettere r .');
    writeln(lettere[s],' lettere s .');
    writeln(lettere[t],' lettere t .');
    writeln(lettere[u],' lettere u .');
    writeln(lettere[v],' lettere v .');
    writeln(lettere[z],' lettere z .');
    readln;
    readln;
end.

:k::k::k:
Ultima modifica effettuata da Progman-92 01/04/08 19:30
aaa
10/04/08 14:49
sange_90
Una soluzione un pò alla "carlona"..
aaa
10/04/08 15:55
Progman-92
Scusa, perche 1 po alla carlona??? Il programma funziona benissimo...:rotfl:
aaa
10/04/08 17:14
FHF93
perchè probabilmente il codice poteva essere più semplice e flunte ...
aaa
10/04/08 18:46
slinky998
scusate se rispondo così tardi...comunque si infatti dovrei farlo senza usare la case...il sottoprogramma per leggere il testo sono riuscito a farlo però mi manca sempre quello per contare le lettere
aaa