Aiuto esercizio c++ Liceo

giuseppe1996

Nuovo Utente
22
0
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:
 

superpatodonaldo

Utente Èlite
8,282
1,172
CPU
7350K / 7740X / 9900KF
Scheda Madre
IX APEX / X299 OCF
RAM
2x8GB DDR4
OS
vari
mai fatto c++, comunque la formula della media aritmetica è una stupidata
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
Premesso che azioni disciplinari di questo tipo sono inammissibili da parte di un professore, sei sicuro che il linguaggio sia C++ e non C?
 

giuseppe1996

Nuovo Utente
22
0
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
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
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.
 

giuseppe1996

Nuovo Utente
22
0
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
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
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:
  • Mi piace
Reazioni: giuseppe1996

giuseppe1996

Nuovo Utente
22
0
Guarda se potessi ti sposerei all'istante.... Mi resta solo un dubbio, a cosa serve il comando getline?
 
Ultima modifica:

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
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.
 

Tinwor

Utente Attivo
932
143
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
 
  • Mi piace
Reazioni: giuseppe1996

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
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.
 

giuseppe1996

Nuovo Utente
22
0
@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?
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10

Entra

oppure Accedi utilizzando