In che senso input ed output? Le funzioni le usi quando hai bisogno che ti venga restituito un valore. La funzione in programmazione è l'equivalente della funzione in matematica, cioè y = f(x), dove ti serve sapere quanto vale y per vari valori della x. Se non ti serve saperlo, allora è una procedura il costrutto che devi usare.
Riguardo la soluzione dell'esercizio, quella è una possibile soluzione. La procedura è ovviamente inutile, perchè di fatto risolve un problema che non c'è, ma è corretto fare così.
Avresti potuto usare una funzione nel caso ti fosse servita solo una delle somme, ad esempio così
Si può fare pure con le due somme, basta creare una struct che contiene due campi ( sp e sd ) e poi restituire la struct. Ma bisognerebbe allocare la struct in memoria, ecc... insomma diventa un pò più complesso.codice:int sommaPD(int&n) { int somma; while (n>0) { somma += n; cin >> n; } return somma; // qui la funzione restituisce la somma al chiamante, ti evita di passare somma per riferimento }