Aiuto esercizio c++ Liceo

Pubblicità

giuseppe1996

Nuovo Utente
Messaggi
22
Reazioni
0
Punteggio
25
Salve a tutti,
scusatemi se vi scrivo ma sono veramente disperato; il mio professore mi odia perchè sono stato con sua figlia e mi ha detto che mi avrebbe fatto fare un esercizio alla lavagna dopodomani (venerdì). Io sono riuscito a farmi dire che tipo di esercizio e lui mi ha dato la traccia.
Dato un elenco di n alunni, inserire nome, età e calcolare la media della loro età
Vi prego aiutatemi sono disperatooooooooooo :cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry:
 
si sono sicuro che sia C++, lui mi ha detto che da qualche parte si deve usare un contatore però non ho capito bene che devo fare.... Vi supplico aiutatemi
 
Avete studiato l'allocazione dinamica (new e delete)? Classi? Vector?
Devo saperlo per scrivere codice conforme al livello della classe, altrimenti il prof. se ne accorgerebbe subito che esso è stato scritto da qualcun altro.
 
Guarda noi siamo solamente agli inizi del c++, abbiamo fatto i comandi più elementari, l'ultima volta spiegò il ciclo for ma mai fatto quello che hai detto tu
 
L'esercizio che hai postato richiede l'utilizzo dell'allocazione dinamica della memoria. Cioè tipo:
Codice:
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::cin;
using std::string;
using std::getline;


int main()
{
  cout << "Quanti valori inserire?" << endl;
  int N;
  cin >> N;
  string *nomi_cognomi = new string[N];
  int *voti = new int[N];
  for (int i = 0; i < N; i++)
   {
     cout << "Inserisci il " << i +1  << " nome e cognome: ";
     cin.ignore();
     getline(cin, nomi_cognomi[i] );
     cout << "ed il suo voto: ";
     cin >> voti[i];
   }


   int media = 0;
   for (int i = 0; i < N; i++)
    {
      media = media + voti[i];
     }
cout << "La media è: " << media / N << endl;

//system("pause");
return 0;
}
Infatti non puoi usare i normali array, perché essi richiedono una dimensione costante e non variabile.
È un errore logico perché il compilatore non ti dice nulla (in alcuni linguaggi lo standard prevede questo tipo di inizializzazione).
 
Ultima modifica:
Guarda se potessi ti sposerei all'istante.... Mi resta solo un dubbio, a cosa serve il comando getline?
È una funzione più che un comando.
Comunque permette di prendere in input anche i caratteri. Così posso acquisire sia il nome sia il cognome.
Se il professore non ti ha parlato di ciò, usa cin una volta per il nome ed una per il cognome; puoi togliere anche cin.ignore().
Sappi che quel codice non va semplicemente imparato a memoria, ma capito.
 
L'esercizio che hai postato richiede l'utilizzo dell'allocazione dinamica della memoria. Cioè tipo:
Codice:
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::cin;
using std::string;
using std::getline;


int main()
{
  cout << "Quanti valori inserire?" << endl;
  int N;
  cin >> N;
  string *nomi_cognomi = new string[N];
  int *voti = new int[N];
  for (int i = 0; i < N; i++)
   {
     cout << "Inserisci il " << i +1  << " nome e cognome: ";
     cin.ignore();
     getline(cin, nomi_cognomi[i] );
     cout << "ed il suo voto: ";
     cin >> voti[i];
   }


   int media = 0;
   for (int i = 0; i < N; i++)
    {
      media = media + voti[i];
     }
cout << "La media è: " << media / N << endl;

//system("pause");
return 0;
}
Infatti non puoi usare i normali array, perché essi richiedono una dimensione costante e non variabile.
È un errore logico perché il compilatore non ti dice nulla (in alcuni linguaggi lo standard prevede questo tipo di inizializzazione).
Se siete agli inizi mi sa che questa soluzione non è proprio il massimo... Bisogna fare qualcosa di più semplice. @giuseppe1996 puoi mica dire con precisione gli argomenti che avete affrontato fino ad ora? @signore del tempo: toglimi una curiosità(gli standard non li seguo molto) perchè hai dichiarato la variabile int n con la lettere maiuscola? Ho sempre letto/visto/sentito che sono le costanti quelle con le lettere maiuscole... Grazie mille
 
Se siete agli inizi mi sa che questa soluzione non è proprio il massimo... Bisogna fare qualcosa di più semplice. @giuseppe1996 puoi mica dire con precisione gli argomenti che avete affrontato fino ad ora? @signore del tempo: toglimi una curiosità(gli standard non li seguo molto) perchè hai dichiarato la variabile int n con la lettere maiuscola? Ho sempre letto/visto/sentito che sono le costanti quelle con le lettere maiuscole... Grazie mille
Difficile? Eppure ho cercato di renderlo il più semplice possibile. Infatti in C++ gli array stile C sono rimpiazzati dai vector, generalmente.
@signore del tempo: toglimi una curiosità(gli standard non li seguo molto) perchè hai dichiarato la variabile int n con la lettere maiuscola? Ho sempre letto/visto/sentito che sono le costanti quelle con le lettere maiuscole... Grazie mille
Si le costanti vengono dichiarate in maiuscolo. Sia col #define che con const (enum, #ifndef , ...). Ho usato il maiuscolo perché:
-n è già di per sé un nome molto vario
-se ci rifletti bene, nel programma N è come se fosse costante, dopo l'input.
-è una mia abitudine dichiarare le grandezze degli oggetti con nomi in maiuscolo, magari anche utilizzando un suggerimento di dove viene usato (ex: in questo caso potrebbe essere SIZE_VOTI, SIZE_NOMI_COGNOMI, o anche generalmente SIZE).
Chiaramente queste sono delle piccole ottimizzazioni che aiutano maggiormente in progetti grossi a cui lavorano magari più persone.
 
@signore del tempo hai fatto veramente tantissimo per me, scusami se ti rompo ma con quale comando tu fai in modo che tutti i voti vengano salvati?
 
Pubblicità
Pubblicità
Indietro
Top