(Esercizio vettori). Un professore di matematica ha una classe di studenti non molto disciplinati. Deluso dalla mancanza di rispetto dei suoi studenti, decide di annullare la lezione se all’inizio della stessa sono presenti meno di un certo numero di studenti. Implementare una funzione che dato in input un vettore con il tempo di arrivo (negativo se in anticipo o positivo se in ritardo) e un numero con il minimo numero di studenti accettabile stampa “YES” se il professore tiene la lezione o “NO” se non la tiene.

Esercizio vettori

Analisi del problema

Dati input:

  • a: vettore di interi che rappresentano i minuti di anticipo o di ritardo degli studenti
  • k: numero minimo di studenti per non annullare la lezione

Nella figura di esempio abbiamo un vettore con due studenti in anticipo, uno puntuale e tre in ritardo. Se k fosse uguale a tre, la funzione restituirebbe la stringa “YES” perchè il numero di studenti che soddisfano i requisiti di puntualità è proprio 3. Viceversa se k fosse uguale a quattro la funzione dovrebbe restituire il valore “NO” in quanto il numero di studenti puntuali (3) è inferiore al numero di studenti necessari per fare la lezione (k=4).

L’intestazione della funzione sarà la seguente:

string profArrabbiato(vector<int> a, int k)
{

}

Ragionamento

Proponiamo una codifica della funzione in linguaggio C++. Per risolvere il problema è possibile scorrere tutte le celle del vettore e contare il numero di valori uguali o minori di 0 che rappresentano gli studenti puntuali. Se il valore di questi studenti è uguale o supera il valore degli studenti necessari per fare la lezione (k) allora la funzione restituisce “yes“, altrimenti “no“. (Esercizio vettori)

Per scorrere tutte le celle del vettore è possibile usare un’iterazione definita:

for(int i=0; i<a.size();i++)
{
}

A questo punto è necessario dichiarare una variabile che mantiene il conto degli studenti puntuali:

int contPuntuali = 0;

Se il valore della cella attuale è minore o uguale di 0, allora aumentiamo il valore di contPuntuali:

int contPuntuali =0;

for(int i=0; i<a.size();i++)
{
     if(a[i]>=0)
       contPuntuali++;
}

Infine se i valore dei puntuali è maggiore o uguale del valore k allora la funzione stampa “YES” altrimenti stampa “NO”.

string profArrabbiato(vector<int> a, int k)
{
  int contPuntuali =0;

  for(int i=0; i<a.size();i++)
  {
     if(a[i]>=0)
       contPuntuali++;
  }
  if(contPuntuali>=k)
     return "YES";
  else
     return "NO";
}

Programma

Vai al codice

Torna a vettori

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.