Mr. Coder
Nuovo Utente
- Messaggi
- 43
- Reazioni
- 10
- Punteggio
- 29
Ho un problema nella risoluzione di questo esercizio. Devo trovare il numero di ripetizioni delle varie lettere dell'alfabeto in delle stringhe.
Con il seguente codice riesco a contare solo le lettere minuscole, ma la consegna mi richiede di conteggiare maiuscole e minuscole insieme. Come potrei fare :boh:?
Con il seguente codice riesco a contare solo le lettere minuscole, ma la consegna mi richiede di conteggiare maiuscole e minuscole insieme. Come potrei fare :boh:?
C:
/* Esercizio 8.19
Scrivete un programma, basato su quello dell'Esercizio 8.18, che prenda in input
diverse righe di testo e utilizzi la funzione strchr per determinare il totale
delle occorrenze nelle righe di testo di ogni carattere incluso nell'alfabeto.
Le lettere maiuscole e quelle minuscole dovranno essere contate insieme.
Immagazzinate i totali di ogni lettera in un vettore e, una volta che saranno
stati determinati, visualizzate i suddetti valori in un formato tabulare.
*/
#include <stdio.h>
#include <string.h>
#define MAX_LINES 5
int main()
{
// Le righe di testo su cui verrà svolta l'analisi
const char *str[MAX_LINES] =
{
"Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
"Aenean commodo ligula eget dolor. Aenean massa.",
"Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.",
"Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.",
"Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu."
};
char letter; //Contatore per la lettera selezionata
int line; //Contatore per la riga di testo selezionata
int counter[26] = {0}; //Vettore che contiene il numero delle occorrenze a -> z (26 lettere)
/*
Calcola il numero delle occorrenze delle varie lettere
dell'alfabeto all'interno delle righe di testo
*/
for(letter = 'a'; letter <= 'z'; letter++)
{
for(line = 0; line < MAX_LINES; line++)
{
char *search_ptr = strchr(str[line], letter);
while(search_ptr != NULL)
{
counter[letter - 'a']++;
search_ptr = strchr(search_ptr + 1, letter);
}
}
}
// Stampa il risultato in formato tabulare
for(letter = 'a'; letter <= 'z'; letter += 2)
printf("%c: %d\t%c: %d\n", letter, counter[letter - 'a'], letter + 1, counter[letter - 'a' + 1]);
return 0;
}