Ho appena guardato il programma, e non vi sono errori di alcuni tipo, L'ho anche provato e funziona correttamente, credo che tu non abbia capito il funzionamento del ciclo "while" ovvero tradotto letteralmente "finché". Infatti il tuo programma richiederà in input il valore del numero finché esso non sia <= a 0, in parole povere finché non si verificherà un immissione di un valore pari a 0 :
inserisci valore di n
3
inserisci un intero
1
inserisci un intero
2
inserisci un intero
3
inserisci un intero
4
inserisci un intero
6
inserisci un intero
0
la somma Þ 19
il massimo Þ6
..ecco il tuo programma eseguito, come puoi vedere è terminato una volta che ho inserito il valore 0. Se tu vuoi che siano richiesti in input tanti valori quanto il valore di "n", quindi se dico che è n = 3, allora richiedo 3 valori ti consiglio di utilizzare o un "do, while" oppure un " for" entrambi 2 tipologie di cicli. Ho provato a integrarli all'interno del tuo programma, ma per farlo mi serve che tu mi dica quale sia il problema da risolvere, altrimenti non essendone a conoscenza non posso darti una mano. Ho provato così:
#include <iostream>
using namespace std;
int main ()
{
int n;
int n1; // è una variabile che serve da appoggio per non perdere il valore originale di n
int somma = 0;
int massimo = 0;
cout <<"inserisci valore di n" << '\n';
cin >> n;
n1 = n; // così facendo riesco a inizializzare n1 a n, e calibro il ciclo con n1
for(int i = 0; i < n1; i++){
if (n > massimo)
massimo = n;
somma = somma + n;
cout <<"inserisci un intero" << '\n';
cin >> n;
}
cout <<" la somma è " << somma << '\n';
cout <<" il massimo è" << massimo << '\n';
return 0;
}
Con maggiori informazioni posso sicuramente crea un programma più performante.