Più giovane, Programma in C++.

di il
7 risposte

Più giovane, Programma in C++.

Salve a tutti, avrei un piccolo problema con il completamento di un programma. Praticamente l'output del programma dovrebbe essere così:

Quante persone vuoi immettere (max 10)? 33
Errore! Quante persone vuoi immettere (max 10)? 3

Immetti il cognome: bianchi
Immetti l'eta': 35
Immetti il cognome: verdi
Immetti l'eta': 38
Immetti il cognome: rossi
Immetti l'eta': 35

I piu' giovani sono:
bianchi
rossi

Ora io sono riuscito a creare il programma che riesce a stamparmi il più giovane fra i membri elencati, tuttavia l'esercizio mi chiede di stampare i più giovani, in caso ci fossero persone della stessa età più giovani (come mostrato nell'esempio output soprastante). Qui di sotto vi allego il programma che ho scritto, che però mi da come output solo il più giovane senza elencarmene altri con la sua stessa età.

#include <iostream>

using namespace std;

struct persona
{
	char cognome[50];
	int eta;
};

int main() 
{
	persona p[10];
	int n=0;
	
	do
	{
		cout<<"Quante persone vuoi inserire? (max 10) "<<endl;
		cin>>n;
		
		while(n>10 || n<=0)
	    {
		cout<<"ERRORE!";
		cout<<"Quante persone vuoi inserire? (max 10) "<<endl;
		cin>>n;
	    }
	}
	while(!(n<=10));
	for (int i=0; i<n ;i++)
	{
	cout<<"Immetti il cognome: "<<endl;
	cin>>p[i].cognome;
	cout<<"Immetti l'eta': "<<endl;
	cin>>p[i].eta;
	}
	cout<<"I piu' giovani sono: "<<endl;
	string young;
	for (int i=0;i<n-1;i++)
	{ 
	if (p[i].eta > p[i+1].eta) 
	    {
	    young = p[i+1].cognome;
        }
    }
  	cout<<young<<endl;	 
	return 0;
}

7 Risposte

  • Re: Più giovane, Programma in C++.

    Sai come si ordina il vettore?


    P.S. Usa i tag CODE quando inserisci codice nel forum.
  • Re: Più giovane, Programma in C++.

    Si ho letto qualcosa, ma non in maniera approfondita. Quindi con l'ordinamento del vettore si può ovviare al problema?

    Anche se però non ho capito come fare.
  • Re: Più giovane, Programma in C++.

    Ci sono DUE soluzioni, ALMENO, per risolvere l'esercizio:

    1) quella stupida
    2) quella intelligente

    Quella stupida (che cosi' stupida non e') e':

    1) scandisco il vettore per cercare l'eta' del piu' giovane
    2) scandisco il vettore e stampo il nome/cognome di tutti quelli che hanno l'eta' dell'eta' del piu' giovane

    DA NESSUNA PARTE c'e' scritto che non puoi scandire il vettore anche UN MILIONE DI VOLTE.
    Stai tranquillo, non lo consumi
  • Re: Più giovane, Programma in C++.

    Oppure determina in fase di input il più giovane (puoi farlo proprio durante l'input) e dopo scandisci una sola volta il vettore per visualizzare quelli che hanno la stessa età del più giovane.
  • Re: Più giovane, Programma in C++.

    Si, vi ringrazio a tutti e due. Sono riuscito a risolverlo scansionando il vettore due volte:
    La 1 per trovare il più giovane
    La 2 per confrontarlo con altri valori uguali

    Putroppo Oregon non capisco cosa intendi con determinare in fase di input il più giovane, sennò avrei potuto usare anche questo metodo per evitare di scansionare due volte il vettore. Comunque qui di seguito vi allego la modifica che ho aggiunto:
    
          cout << "I piu' giovani sono: "<<endl;
          int young = p[0].eta;
          
         for (int i=0;i<n-1;i++)
         { 
    	if (young > p[i+1].eta) 
    	    {
    	    young = p[i+1].eta;
                }
        }
        for (int i = 0; i < n; i++)
        {
        	if (young == p[i].eta)
        	cout << p[i].cognome << endl;
        } 
    
  • Re: Più giovane, Programma in C++.

    Durante l'input confronta il nuovo dato col il precedente e ottieni il minore
  • Re: Più giovane, Programma in C++.

    Ah ok, tutto chiaro.
Devi accedere o registrarti per scrivere nel forum
7 risposte