Come sviluppare una funzione C che , dato come parametri di ingresso un array di char e le sue dimensioni , determina e restituisce come parametro di uscita il personaggio meno frequente nel linguaggio di programmazione C ?
risposta:
- /**
- Sviluppare una function C che, dati come parametri di input un array di char e il suo
- size, determina e restituisce come parametro di output il carattere meno frequente.
- **/
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- char lettmin(int n, char s[]) {
- char alfabeto[] = "abcdefghilmnopqrstuvz";
- int i,j;
- int occor[21];
- // Pulisco l'array occor
- for(i = 0; i < 21; i++)
- occor[i] = 0;
- // tutti i caratteri della stringa in minuscolo
- for(i=0;i<n;i++)
- {
- s[i]=tolower(s[i]);
- }
- // Scorro tutta la stringa
- for(i=0;i<n;i++) {
- // Scorro tutto l'alfabeto
- for (j=0;j<21;j++) {
- // Se la lettera che sto prendendo in esame è uguale a una delle lettere dell'alfabeto
- // Incremento il contatore il cui indice è la posizione della lettera all'interno dell'alfabeto
- if(s[i] == alfabeto[j]) {
- occor[j]++;
- }
- }
- }
- // inizializzo min al primo elemento di occor[0]
- int min=occor[0];
- // inizializzo l'indice della lettera a 0
- int j_min=0;
- // Ricerca del minimo all'interno dell'array
- for (j=0;j<21;j++) {
- if(occor[j]<min)
- {
- min=occor[j];
- j_min=j;
- }
- } // trovato l'indice della lettera che si presenta il minor numero di volte,
- // ritorno la lettera all'interno dell'alfabeto
- return alfabeto[j_min];
- }
- int main() {
- char s[]="Pochi sforzan quel gambo di vite";
- int n;
- n=strlen(s);
- int a;
- a=lettmin(n,s);
- // Stampo il risultato ottenuto
- printf("%c",a);
- }