Esercizio con funzione che ritorna una struct

Introduzione

Problema

Realizzare un programma in C++ che dopo aver caricato un array di N elementi con N inserito da tastiera, calcoli la somma degli elementi di posto pari e di posto dispari. 
Realizzare una funzione C++ che rittorni una struct. Le struct in C++/C sono molto utili quando occorre far tornare tipi di dati differenti da una funzione. Una funzione è un sottoprogramma che ritorna un valore, ma in senso più generalizzato può far ritornare anche una struttura un arraym una struct. 
Nell’esempio sotto riportato  è stata definita una funzione che calcola le somme come richiesto dal problema e ritorna una  struct contenente i valori calcolati nella stessa. 

La codifica C++ è:

#include <iostream>
using namespace std;
struct numeri
{
int x;
int y;
};
void carica(int x[],int l);
struct numeri calcola(int x[],int l);
int main ()
{
struct numeri num;
int n;
int a[100];
cout << "\n Inserici la dimensione del vettore\n";
cin >> n;
carica(a,n);
num=calcola(a,n);
cout << "\nLa somma dei pari è "<< num.x << endl;
cout << "La somma dei dispari è " << num.y << endl;
cout << endl;
}
void carica(int x[],int l)
{
int k;
for (k=0;k<l;k++)
{
cout << "\n Inserisci gli elementi\n";
cin >> x[k];
}
}
struct numeri calcola(int x[],int l)
{
struct numeri tmp;
int k;
tmp.x=0;
tmp.y=0;
for (k=0;k<l;k++)
{
if ((k+1)%2==0)
tmp.x=tmp.x+x[k];
else
tmp.y=tmp.y+x[k];
}
return tmp;
}