Mi servono idee sulla function

di il
30 risposte

Mi servono idee sulla function

1) dati come parametri di input un array di char determina e restituisce come parametro di output il carattere più frequente.

2) dati come parametri di input un array di char e il suo size, determina e restituisce come parametro di un dato logico che indica se il testo nell’array è sono contenute tutte le lettere dell'alfabeto italiano.

30 Risposte

  • Re: Mi servono idee sulla function

    Vuoi una soluzione semplice o efficiente? Parliamo di esercizi elementari?
  • Re: Mi servono idee sulla function

    .
  • Re: Mi servono idee sulla function

    Scusate linguaggio C
    soluzioni semplici.
  • Re: Mi servono idee sulla function

    Alloca un altro vettore (o due) di dimensioni analoghe inizializzato a zero.
    Scansiona il vettore è aggiorna il contatore nel vettore /i ausiliario.
    scansiona il vettore ausiliario per il max.

    Secondo esercizio Alloca un vettore da 26 interi inizialozzato a zero
    Scansiona array in ingresso setta array finale se trovi carattere.
    scansiona vettore per trovare valori a zero (buchi)
  • Re: Mi servono idee sulla function

    21 interi, non 26: visto che parlava di alfabeto italiano vanno escluse j, k, w, x e y.
    Rimangono la questione del trattare i caratteri con segni diacritici (accenti vari) e quella del voler differenziare o non differenziare maiuscole e minuscole. Fatta la scelta, si elabora la soluzione.

    P.S. Nell'italiano corrente, per quel che ne so, i segni diacritici sono solo gli accenti gravi e acuti posti sulle cinque vocali, il che esclude umlaut e altri segni tipici di altre lingue, semplificando parecchio il procedimento (si può agevolmente rimanere nell'ambito dei caratteri ASCII estesi, no?). Sarebbe buona cosa prevedere che venga segnalata come condizione d'errore la presenza nel testo di caratteri estranei all'insieme di quelli concessi nell'alfabeto italiano, ricordandosi di considerare però validi i segni di punteggiatura e spaziatura e le cifre numeriche (che comunque non andrebbero conteggiati, non essendo lettere dell'alfabeto italiano). Che fare con i segni che non appartengono a nessuna delle quattro categorie? Altra scelta che dipende dall'obbiettivo che decidi di darti.
  • Re: Mi servono idee sulla function

    Aldo ... facciamo 26 così non impazzisci con gli indici e l'ASCII. Fidati.
  • Re: Mi servono idee sulla function

    Sì, comprendere le 26 lettere è più lineare. Andavo dietro alla richiesta (esplicitata) di usare l'alfabeto italiano. E' una scelta da fare prima di iniziare a pensare la soluzione.

    Semplicità per semplicità, la mia idea di escludere i segni diacritici che non siano accenti gravi e acuti sulle vocali è buona e, ancora una volta, coerente con la specifica "testo in italiano". Del resto, trascurare integralmente l'esistenza dei segni diacritici non è possibile, perché per un computer "e", "è" e "é" sono tre cose diverse! A voler essere pignoli c'è poi la questione dell'attivazione d'una localizzazione opportuna (tramite locale.h?) che sostituisca quella predefinita del C -- a seconda della localizzazione scelta, l'assegnazione dei caratteri successivi a 127 cambia radicalmente, e le vocali accentate sono in quell'ambito.
  • Re: Mi servono idee sulla function

    L'unica cosa che non riesco a capire è quel dato logico? true false?
    sisi bisogna escludere segni diacritici
    per il carattere più frequente come faccio a fargli contare tutte le lettere e memorizzarle?
  • Re: Mi servono idee sulla function

    toni1705 ha scritto:


    per il carattere più frequente come faccio a fargli contare tutte le lettere e memorizzarle?
    Come ho già indicato avrai un vettore fatto grosso modo così

    quanti[]

    Avrai, dopo aver effettuato il primo ciclo di conteggio, un risultato simile a questo

    quanti['A'] =0
    quanti['B'] =3
    quanti['C'] =1
    ...
    quanti['Z'] =2

    Ora ciclerai, nel vettore quanti, per trovare il massimo, che in questo esempio sarà 3, da cui dedurrai che la maggior frequenza è la B.

    Se sei curioso ti faccio pure il pippone per la conversione degli UTF8 europei (ho già postato due volte la relativa funzione), ma suppongo che nel tuo caso sia sufficiente quanto ho già scritto.
  • Re: Mi servono idee sulla function

    +m2+ ha scritto:


    Se sei curioso ti faccio pure il pippone per la conversione degli UTF8 europei (ho già postato due volte la relativa funzione)
    Non sarebbe male avere tale esposizione.
    Grazie.
  • Re: Mi servono idee sulla function

    vuott ha scritto:


    +m2+ ha scritto:


    Se sei curioso ti faccio pure il pippone per la conversione degli UTF8 europei (ho già postato due volte la relativa funzione)
    Non sarebbe male avere tale esposizione.
    Grazie.
    è nel thread delle fatture elettroniche
  • Re: Mi servono idee sulla function

    #include <stdio.h>
    
    #define DIM 80
    
    int main(void) {
    
        char testo[DIM];
        char carattere;
        int occorrenze;
        int i;
    
        /* leggi stringa */
        printf("Inserisci una stringa:\n");
        scanf("%s", testo);
        getchar();
        /* legge il carattere */
        printf("Inserisci un carattere:\n");
        scanf("%c", &carattere);
    
        occorrenze = 0;
        /* legge tutti i caratteri della stringa. Se il carattere i-esimo
           corrisponde al carattere letto allora la variabile 'occorrenze'
           viene incrementata di uno */
        for (i = 0; testo[i] != '\0'; i++) {
    	 if (testo[i] == carattere)
    	     occorrenze++;
        }
    
        printf("Il numero di occorrenze del carattere %c nella stringa e' %d\n", carattere, occorrenze);
    
        return 0;
    }
    Ho iniziato cosi ora lo passo a function
  • Re: Mi servono idee sulla function

    Sei fuori strada con quel codice ... Ma li leggi i suggerimenti?
  • Re: Mi servono idee sulla function

    #include <stdio.h>
    
    #define DIM 80
    int conta (char testo[],int q[],int n);
    int main() {
    
        char testo[DIM];
        char carattere;
        int occorrenze;
        int i;
        /* leggi stringa */
        printf("Inserisci una stringa:\n");
        scanf("%s", testo);
        fgets(testo,DIM,stdin);
    
    }
    
    int conta(char testo[],int q[],int n)
    {
        int i,max;
    }
    ora uso quel vettore q per scorrere il testo, e creo una variabile 'carattere' per salvare in carattere quante volte è stata usata al termine del ciclo riporto carattere=0; e riparto giusto?
Devi accedere o registrarti per scrivere nel forum
30 risposte