Esercizio su vettori in C

di il
61 risposte

61 Risposte - Pagina 4

  • Re: Esercizio su vettori in C

    Ma while senza graffe?
  • Re: Esercizio su vettori in C

    Ok grazie
  • Re: Esercizio su vettori in C

    Ma dato che while non ha le graffe comprende solo la prima istruzione, perciò ' istruzione frequenza[c - 'a']++; non è compresa nel ciclo nel giusto?
  • Re: Esercizio su vettori in C

    Sbagliato.

    La while comprende la prima istruzione e la if comprende quella sotto fino al ;

    Ti ricordo che puoi scrivere anche
    
    	while ((c = getchar()) != EOF)
    		if (c >= 'a' && c <= 'z') frequenza[c - 'a']++;
    		
  • Re: Esercizio su vettori in C

    Ah e quindi entrambe le istruzioni si ripetono allo stesso turno giusto?
  • Re: Esercizio su vettori in C

    SuperManPC ha scritto:


    Ah e quindi entrambe le istruzioni si ripetono allo stesso turno giusto?
    si si ripetono scusa per la confusione
  • Re: Esercizio su vettori in C

    Stesso turno?

    La while ripete la if che, se vera, esegue l'incremento.
  • Re: Esercizio su vettori in C

    Si ok, capito
  • Re: Esercizio su vettori in C

    Un' ultima cosa, nell' istruzione printf("Lettera %c : %d\n", c + 'a', frequenza[c]);
    c + 'a' aggiunge il valore 97 a c, ma questo perché è da fare? Non dovrebbe essere già cosi?
    Mi servirebbe un ultimo chiarimento su questa cosa...
  • Re: Esercizio su vettori in C

    Ho fatto una specie di esempio di cosa fa c nel commento di fianco alla if nel while. Rimane solo la questione c + 'a'
    
    #include <stdio.h>
    // conta la frquenza dei diversi caratteri contenuti nel testo d' ingresso
    main()
    {
    	int c;
    	int frequenza[26];
    	for (c = 0; c < 26; c++)
    	{
    		frequenza[c] = 0;
    	}
    
    	while ((c = getchar()) != EOF) 
    		if (c >= 'a' && c <= 'z') frequenza[c-'a']++;//se c = b, la if è vera e frequenza[1] incrementa di 1 (b vale 98)
    
    	for (c = 0; c < 26; c++)
    		if(frequenza[c] > 0) printf("Lettera %c : %d\n", c + 'a', frequenza[c]); 
    }
    
  • Re: Esercizio su vettori in C

    
    for (c = 'a'; c < 'z'; c + 'a')
    		if(frequenza[c] > 0) printf("Lettera %c : %d\n", c, frequenza[c]);
    
    Cosi è sbagliatissimo vero?
  • Re: Esercizio su vettori in C

    Nel caso mi rispondo da solo : si lo è
  • Re: Esercizio su vettori in C

    Anzi se fosse guarda questo:
    
    for (c = 'a'; c < 'z'; c++)
    		if(frequenza[c] > 0) printf("Lettera %c : %d\n", c, frequenza[c]);
    
  • Re: Esercizio su vettori in C

    Comunque cosi mi da lo stesso le frequenze dei caratteri con frequenza 6536756579753655396569
    va bene evito di fare queste cose
  • Re: Esercizio su vettori in C

    Ah ma c + 'a' è uguale a c + 97
Devi accedere o registrarti per scrivere nel forum
61 risposte