Esercizio con vettori, caricamento random, ripetizione di un valore e menu

Predisponi il codice e l’algoritmo che risolve il seguente problema. Crea un menu con lo switch così:

  1. Carica vettore input
  2. Carica vettore random
  3. Stampa vettore
  4. Conta quante ripetizioni di un numero scelto
  5. Esci

Le funzioni di carica riempiono un vettore di 10 interi inseriti a tastiera. La seconda li carica sempre nel vettore ma in modo casuale con numeri da 0 a 100. La stampa è intuitiva fa vedere tutti i valori del vettore. Il quarto punto legge in input un valore intero e scorre il vettore contando quante volte quel valore si ripete e stampa tale conteggio.

L’esercizio non è difficile ma contiene diversi elementi interessanti visti in diverse esercitazioni singole. Per i numeri casuali/random, potete approfondire qui.

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

using namespace std;

int const DIM = 10;
	
int main() 
{
	srand(time(NULL));
	
	int scelta = -1;
	int v[DIM];
	int valore;
	int contatore = 0;

	cout << "|-------------------------------------|" << endl;
	cout << "|                MENU                 |" << endl;
	cout << "|-------------------------------------|" << endl;
	cout << "1. Carica vettore da input" << endl;
	cout << "2. Carica vettore random" << endl;
	cout << "3. Stampa vettore" << endl;
	cout << "4. Conta quante ripetizioni di un numero scelto" << endl;
	cout << "0. Esci " << endl;
		
	while (scelta != 0) //fa ripetere la scelta del menu ad oltranza!
	{			
		cout << "Scegli -> ";
		cin >> scelta;
		
	
		switch (scelta)
		{
		
			case 1:
				for (int i=0; i<DIM; i++ )
				{
					cout << "Inserisci un valore ";
					cin >> v[i];
				}
				break;
				
			case 2:
				for (int i=0; i< DIM; i++ )
				{
					v[i] = rand() % 100;
				}		
				cout << "Caricato!" << endl;	
				break;
				
			case 3:
				for (int i=0; i<DIM; i++ )
				{
					cout << v[i] << " ";
				}	
				cout << endl;		
				break;
				
			case 4:
				cout << "inserisci il valore da valutare ";
				cin >> valore;
				
				for (int i=0; i<DIM; i++ )
				{
					if (v[i] == valore)
					{
						contatore++;
					}
				}
				
				cout << "il numero "<< valore<<" si ripete "<<contatore << endl;
				break;
			
			case 0:
				//non faccio un tubo, mi serve solo per uscire dal ciclo
				break;
					
			default:
				cout << "Scelta non valida" << endl;
																
		}		
	}		
		 	
	return 0;
}

Listato GitHub -> https://github.com/alfredocentinaro/esercizi-cplusplus/tree/main/menu-vettori-random

Eseguilo su Replit -> https://replit.com/@AlfredoCentina2/munu-vettori-random

Ultima modifica 27 Febbraio 2022