ARRAY: in quante celle si trova, la lettera 'O' ?

di il
6 risposte

ARRAY: in quante celle si trova, la lettera 'O' ?

Salve a tutti gli appassionati del settore C, ho un problema con l'array di caratteri, ma il + è spiegarlo bene, ora ci provo:
da input di tastiera ho creato una frase e la metto in un array di caratteri;
il problema è, che chiesta una determinata lettera, deve rispondermi quante ce ne sono;
ES: in CIAO MONDO, una volta chiesto quante 'O' ci siano, mi deve dare: 3.
grazie alla variabile indice del ciclo for, ho notato che stampando tale variabile, riesco però ad ottenere i numeri di posizione delle celle cui è contenuto il valore chiesto.
A me serve la quantità di quelle lettere, e non le posizioni in cui esse si trovano. Esiste il modo?
grazie per la pazienza, buon lavoro.

6 Risposte

  • Re: ARRAY: in quante celle si trova, la lettera 'O' ?

    Conosci il concetto di variabile e di contatore?

    Sai confrontare con una if il singolo carattere dell'array con un carattere scelto dall'utente?
  • Re: ARRAY: in quante celle si trova, la lettera 'O' ?

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define SIZE 50 //Max della frase
    
    int controlla (char frase[], char chiave);
    
    int main()
    {
        char frase[SIZE], chiave;
        int risultato;
    
        printf("Immetti la frase (max %d caratteri):\n", SIZE);//Viene chiesta la frase
        gets(frase);
    
        printf("Immetti il carattere che vuoi controllare = ");//Viene chiesto il carattere
        chiave = getchar();
    
        risultato = controlla(frase, chiave); //Viene elaborato la funzione che conta quante volte il carattere è presente
        printf("Il carattere %c e' presente %d volte", chiave, risultato);
        return 0;
    }
    
    int controlla (char frase[], char chiave)
    {
        int i, conta = 0,m;
        m = strlen(frase);
        for(i=0;i<m;i++) //Ciclo che controlla ogni carattere della frase con la chiave, in caso affermativo aumenta di 1
        {
            if(frase[i] == chiave)
                conta++;
        }
        return conta;
    }
    
    Codice funzionante e con spiegazione.
    Molte volte può essere utile guardare prima un esempio, ti consiglio di provarci comunque a farlo e ogni tanto "spiare la soluzione".
  • Re: ARRAY: in quante celle si trova, la lettera 'O' ?

    Qualche osservazione nel codice

    1) non usare fflush (il funzionamento è supportato solamente da compilatori Microsoft) ma una while con la getchar (più portabile)

    2) il return conta++; finale deve essere return conta; (è una svista poco importante dato che non pregiudica il funzionamento)
  • Re: ARRAY: in quante celle si trova, la lettera 'O' ?

    oregon ha scritto:


    Qualche osservazione nel codice

    1) non usare fflush (il funzionamento è supportato solamente da compilatori Microsoft) ma una while con la getchar (più portabile)

    2) il return conta++; finale deve essere return conta; (è una svista poco importante dato che non pregiudica il funzionamento)
    Grazie, la prima osservazione non la conoscev, per la seconda è stata davvero un errore di distrazione che giustamente non altera il risultato.

    Mi ritengo anche io un novellino, la mia non è stata presunzione, ma appena vedo qualcuno che ha bisogno di un aiuto con qualche programmino mi ci butto volentieri

    Comunque aggiustato
  • Re: ARRAY: in quante celle si trova, la lettera 'O' ?

    Eduadie ha scritto:


    Mi ritengo anche io un novellino, la mia non è stata presunzione
    Ma figurati ... ci conosciamo anche in altri forum ...
    ma appena vedo qualcuno che ha bisogno di un aiuto con qualche programmino mi ci butto volentieri
    E fai bene ...
  • Re: ARRAY: in quante celle si trova, la lettera 'O' ?

    Grazie del consiglio OREGON, infatti dovevo usare una if e un altra variabile, oltre a quella dell'indice del ciclo for: il programma è troppo lungo da far vedere ma in questa riga di codice ho risolto il problema:

    if (frase[s]== ta) { b++; frase_x[s]= ta; }

    All'interno del ciclo for con l'indice (int s), mi è bastato usare la if che mi controlla se la richiesta di lettera dell'utente (char ta) è identica al contenuto di frase[s], poi incrementare con un altra variabile (int b), le possibili lettere trovate.

    grazie ancora, come sempre un consiglio proveniente da praticanti del settore, vale molto di più di una ostinazione a far tutto da soli, specie quando i tempi cominciano a farsi lunghi.
    Ancora grazie a questo forum e a chi ci lavora dentro.
    BUON PROSEGUIMENTO A TUTTI....
Devi accedere o registrarti per scrivere nel forum
6 risposte