Untitled
unknown
c_cpp
a year ago
2.2 kB
9
Indexable
/*
1) Scrivere un sottoprogramma analizza() che riceve come parametro una stringa contenete soltanto lettere
minuscole dell’alfabeto. Il sottoprogramma identifica e restituisce qual è la prima lettera nell’ordinamento
alfabetico che compare nella stringa e quante volte vi compare.
Esempio
Stringa in ingresso: Statistiche restituite:
cocci lettera: ‘c’ occorrenze: 3
bacco lettera: ‘a’ occorrenze: 1
tiene lettera: ‘e’ occorrenze: 2
2) Scrivere un programma che apre un file di testo il cui nome è ricevuto come argomento da riga di comando. Il
programma legge dal file ciascuna parola (di al massimo 15 caratteri), la analizza mediante il sottoprogramma
analizza() sopra definito e la stampa a video insieme ai due valori restituiti dal sottoprogramma. Gestire
opportunamente gli eventuali casi di errore dovuti alla mancanza degli argomenti o al fallimento nell'apertura del
file.
Esempio
Se il file testo.txt contiene il seguente testo:
chitarra dente cocci
Il programma stamperà a video:
chitarra a 2
dente d 1
cocci c 3
*/
#include <stdio.h>
void analizza(char* stringa, char* prima_lettera, int* occorrenze)
{
int len = strlen(stringa);
if(len == 0)
{
*occorrenze = 0;
*prima_lettera = NULL;
return;
}
*prima_lettera = stringa[0];
for(int i=0; i<len; i++)
{
if(stringa[i]<*prima_lettera)
{
*prima_lettera = stringa[i];
}
}
*occorrenze = 0;
for(int i=0; i<len; i++)
{
if(stringa[i] == *prima_lettera)
{
*occorrenze++;
}
}
}
int main(int argc, char* argv[])
{
if(argc != 2)
{
printf("Errore numero parametri");
return 0;
}
FILE *fp = fopen(argv[1], 'r');
if(fp)
{
char parola[16];
char lettera;
int occorrenze;
while(fscanf(fp, "%15s", parola) == 1)
{
analizza(parola, &lettera, &occorrenze);
printf("%s %c %d\n", parola, lettera, occorrenze);
}
fclose(fp);
}else{
printf("Errore apertura file");
}
return 0;
}
Editor is loading...
Leave a Comment