Esercizio su vettori in C

di Anonimizzato28411 il
61 risposte

61 Risposte - Pagina 3

  • SuperManPC ha scritto:


    oregon ha scritto:


    E che c'entra la frequenza con il controllo di cui parli??

    Devi solo CONTARE

    frequenza[c]++;
    Ma direi che a me non server contare le lettere minuscole
    No forse mi sono sbagliato, forse mi serve
  • Ti ho già detto come fare e che la if non c'entra nulla. Ma tu insisti. Ritorna a

    frequenza[c]++;


    con cui ottieni la frequenza di TUTTI i caratteri. Qui non si tratta di basi del C ma di ragionamento.
  • Ora forse ho capito i tuoi suggerimenti…, però c da solo non è un numero intero e per l' indice ci vuole un intero, quindi si scrive frequenza[c - 'a'] non frequenza[c] vero?
  • oregon ha scritto:


    Ti ho già detto come fare e che la if non c'entra nulla. Ma tu insisti. Ritorna a

    frequenza[c]++;


    con cui ottieni la frequenza di TUTTI i caratteri. Qui non si tratta di basi del C ma di ragionamento.
    Ah ok non pensavo che con un ciclo e dentro frequenza[c]++ potevo ottenere tutte le frequenze
  • Non pensavi ma se ci rifletti pensa a cosa succede e cosa vuol dire esattamente

    frequenza[c]++

    Perché non fai un esempio pratico con una piccola frase e ci mostri cosa succede?
  • Si ok lo faccio e invio qua
  • Forse non è questo l' esempio che chiedevi oppure corrispondeva all' esercizio di prima? Nel caso cosi non mi va ancora, secondo te perché?
    
    #include <stdio.h>
    // conta la frquenza dei diversi caratteri contenuti nel testo d' ingresso
    main()
    {
    	int c, i;
    	int frequenza[26];
    	for (i = 0;i < 26;++i)
    	{
    		frequenza[i] = 0;
    	}
    
    	while ((c = getchar()) != EOF)
    	{
    		if (c >= 'a' && c <= 'z')
    			frequenza[c-'a']++;
    		printf("%d", frequenza[c-'a']);
        }
    }
    
  • Comunque frequenza[c]++ è frequenza[c] = frequenza[c] + 1;Questo è quello che fa veramente forse?
  • SuperManPC ha scritto:


    Comunque frequenza[c]++ è frequenza[c] = frequenza[c] + 1;Questo è quello che fa veramente forse?
    Certo. Non conosci l'operatore ++ ?
  • Si si lo conosco, posso farti vedere il codice che adesso conta la frequenza ma fa casino un po'?.
  • Lo hai mostrato già no?
  • Eh si ma non funziona come vorrei...
  • Si si non lo rimando mi sono sbagliato
  • Secondo printf e quello che c'è dentro è giusto come sintassi e ragionamento ? Perché non fa quello che vorrei
  • La visualizzazione deve avvenire quando hai finito di inserire la frase, fuori dal while, ovviamente, se no come conta le frequenze?
    
    	while ((c = getchar()) != EOF)
    		if (c >= 'a' && c <= 'z')
    			frequenza[c - 'a']++;
    
    	for(c=0; c<26; c++)
    		if(frequenza[c]>0)
    			printf("Lettera %c : %d\n", c+'a', frequenza[c]);
    			
Devi accedere o registrarti per scrivere nel forum
61 risposte