Untitled

 avatar
unknown
c_cpp
24 days ago
2.2 kB
3
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;
}






Leave a Comment