Conta ripetizioni cifre da 1 a 9

Progettare e disegnare algoritmo e codifica di un programma che legge numeri in ingresso da 1 a 9 ad oltranza finché viene inserito 0. Contare e stampare a video quante volta si presenta ognuna delle 9 cifre.

L’esercizio non è difficile ma contiene delle insidie a livello algoritmico. Prima di tutto è chiaro che abbiamo bisogno di un ciclo per leggere numeri ad oltranza. La lettura deve essere fatta a prescindere dal numero inserito, che sia compreso da 1 a 9, negativo ma semplicemente non viene considerato nel nostro flusso principale se non mostrando un messaggio di errore. Mentre un opportuno switch o una serie di if potranno aumentare il valore delle variabili c1 se inserito 1, c2 se inserito 2 e così via. La stampa dei singoli contatori può essere fatta in molti modi, qui ne abbiamo scelto uno simpatico.

Il listato del codice:

/*
* Progettare e disegnare algoritmo e codifica di un programma che legge numeri
* in ingresso da 1 a 9 ad oltranza finché viene inserito 0. 
* Contare e stampare a * video quante volta si presenta ognuna delle 9 cifre.
*/
#include <iostream>

using namespace std;

int main()
{
  int num = -1;
  int c1 =0;
  int c2 =0;
  int c3 =0;
  int c4 =0;
  int c5 =0;
  int c6 =0;
  int c7 =0;
  int c8 =0;
  int c9 =0;

  while (num != 0)
  {
    cout << "Inserisci un numero positivo" << endl;
    cin >> num;

    switch(num)
    {
      case 1:
          c1++;
          break;

        case 2:
          c2++;
          break;

        case 3:
          c3++;
          break;

        case 4:
          c4++;
          break;

        case 5:
          c5++;
          break;

        case 6:
          c6++;
          break;

        case 7:
          c7++;
          break;

        case 8:
          c8++;
          break;

        case 9:
          c9++;
          break;

        case 0:
          break;  

        default:
          cout << "Errore di inserimento" <<endl;
    }
  }
  cout << endl;
  cout<< "|*******************|" << endl;
  cout<< "|     CONTEGGIO     |" <<endl;
  cout<< "|*******************|" << endl;
  cout << "1 ->"<<c1 <<endl;
  cout << "2 ->"<<c2 <<endl;
  cout << "3 ->"<<c3 <<endl;
  cout << "4 ->"<<c4 <<endl;
  cout << "5 ->"<<c5 <<endl;
  cout << "6 ->"<<c6 <<endl;
  cout << "7 ->"<<c7 <<endl;
  cout << "8 ->"<<c8 <<endl;
  cout << "9 ->"<<c9 <<endl;

  return 0;
}

Il listato su Github -> https://github.com/alfredocentinaro/esercizi-cplusplus/blob/main/contacifre-da-1-a-9/contacifre.cpp

L’eseguibile su Replit -> https://replit.com/@AlfredoCentina2/conta-cifre-da-1-a-9

Ultima modifica 11 Gennaio 2022