Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Classe ESTRAZIONE

Classe ESTRAZIONE

19372_size.png
Una classe che crea oggetti in grado di gestire estrazioni a sorte tra una serie di valori numerici progressivi senza che venga mai riproposto lo stesso valore prima che siano stati estratti tutti gli altri. Inoltre, lo stesso valore non viene mai riproposto in due estrazioni immediatamente consecutive neppure quando, esauriti i valori della lista, la lista stessa viene ripristinata.



NOTA: sostituire la chiamata alle API di Win32 GetTickCount() con la chiamata alla funzione standard del C clock() nella funzione membro inizializza(), permette di utilizzare la classe anche su piattaforme operative non Win32.






Funzioni membro:

Codice sorgente - presumibilmente C++

  1. // funzioni creatrici

  2. ESTRAZIONE();

  3. ESTRAZIONE( short nEl );

  4.  

  5. // funzioni "di impostazione"

  6. void inizializza( short nEl );

  7. void reset( void );

  8.  

  9. // funzioni "di esercizio"

  10. short estrai( void );

  11. short ultimo_estratto( void );




Esempio d'uso:

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>

  2. #include <stdlib.h>

  3. #include "estrazione.h"

  4.  

  5.  

  6. void Presenta( void );

  7. short ChiediNumeroElementi( void );

  8. void SvuotaStdin( void );

  9. bool Esci( void );

  10.  

  11.  

  12. int main() {

  13.     short i, totEl;

  14.     ESTRAZIONE e;

  15.  

  16.     do {

  17.         Presenta();

  18.  

  19.         totEl = ChiediNumeroElementi();

  20.         e.inizializza( totEl );

  21.  

  22.         for( printf("\n"), i=0; i<totEl; ++i )

  23.             printf( "%d ", e.estrai() );

  24.     } while( !Esci() );

  25.  

  26.     return 0;

  27. }

  28.  

  29.  

  30. void Presenta( void ) {

  31.     printf( "Classe ESTRAZIONE\nprogramma d'esempio\n\n" );

  32. }

  33.  

  34.  

  35. short ChiediNumeroElementi( void ) {

  36.     const int kDimBuff = 16;

  37.     char buff[kDimBuff];

  38.     short totEl;

  39.  

  40.     printf( "Quanti elementi vuoi nella lista? " );

  41.     fgets( buff, kDimBuff, stdin );

  42.  

  43.     totEl = atoi( buff );

  44.     totEl = totEl>1 ? totEl : 2; // almeno 2 elementi

  45.  

  46.     return totEl;

  47. }

  48.  

  49.  

  50. void SvuotaStdin( void ) {

  51.     int c;

  52.  

  53.     do {

  54.         c = getchar();

  55.     } while( c!=EOF && c!='\n' );

  56. }

  57.  

  58.  

  59. bool Esci( void ) {

  60.     char buff[4];

  61.  

  62.     printf( "\n\n(digita \"e\" per uscire) " );

  63.     fgets( buff, 2, stdin );

  64.  

  65.     SvuotaStdin();

  66.     system( "CLS" );

  67.  

  68.     return (*buff=='e' || *buff=='E');

  69. }




Categoria: Moduli e librerie / C++
Piattaforma:

Downloads: 788
Rating: (0 voti)
Data: 23/01/2015
Download

A proposito dell'autore

Amatore, autodidatta dai tardi anni '90. Prime esperienze in HyperTalk. Successivamente, C con qualche infarinatura di C++.

Aggiungi un commento

Inserisci il tuo commento qui
Esegui il login oppure registrati per inviare commenti