Enrere Mòdul 5
Fonaments de Programació. Llenguatge C/C++---
Pràctica    Resum teòric Exercicis
Pràctica d'ampliació

 
Repetició dels caràcters alfabètics amb majúscules

Volem generar 30000 nombres aleatòries entre el nombre 65 ( caràcter A ) i el 90 ( caràcter Z ), i emmagatzemar aquest resultat de tal forma que el programa llistarà tots els caràcters alfabètics
entre la A i la Z amb el nombre de vegades que han sortit.En total son 26 lletres, des de l'A a la Z.
 

Desenvolupament de la pràctica

Creeu un nou arxiu del tipus C anomenat m5p09.cc i escriviu el següent codi:

/* m5p09.cc  - Repetició dels caràcters alfabètics amb majúscules - */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
   int i=1,inici=65, tope=90,dada;
   int valors[26]={0};
   time_t t; // per genera la semilla

   //Inicialitzar la generació de nombres aleatoris
   srand((unsigned) time(&t));

   printf( "generem de nombres aleatoris \n\n" );
   for( i=1; i<=30000; i++ ){
      dada=rand() % 26 ; // des de 0 a 25 ambdós inclosos
      valors[dada]++;
   }

   //resultats
   for(i=0;i<26;i++)
      printf("\n lletra %c nombre de vegades   %d",i+65,valors[i]);
 

return 0;
}

 

Captura de l'execució del programa.

 

Explicació del programa

Amb el següent fragment de codi:

 
 for( i=1; i<=30000; i++ ){
      dada=rand() % 26 ; // des de 0 a 25 ambdós inclosos
      valors[dada]++;
   }

generem nombres aleatoris entre 0 i 25 ambdós inclosos. Tenim un vector valors[]  de 26 posicions, ( recordeu que els índex van des de 0 a 25 ) i fem correspondre l’índex 0 amb el 65, l’índex 1 amb el 66, ..., l’índex 25 amb el 90.

 D'aquesta manera tenim a la cel·la amb índex 0 el total de vegades que ha sortit el zero i el fem correspondre amb la lletra 'A' que a la taula ASCII ocupa la posició 65 i així successivament.

Amb les següents instruccions es mostra en el pantalla el contingut de cada cel·la i l'índex al que li sumen 65.

   //resultats
   for(i=0;i<26;i++)
      printf("\n lletra %c nombre de vegades   %d",i+65,valors[i]);

La sortida del programa més o menys és la següent: