Ciao a tutti,
devo scrivere una funzione (alternating_sum) che calcoli la somma alternata di tutti gli elementi di un array. Per esempio se gli elementi sono: 1 2 3 4 5, deve calcolare 1-2+3-4+5 e quindi deve restituire il totale=3.
Il programma non mi da nessun errore, penso che siano sbagliati i calcoli della funzione perchè mi restituisce sempre 0 come totale.
Vi posto il mio programma.
#include <iostream>
using namespace std;
//Legge i dati di un array.
//@param a array da riempire
//@param a_capacity dimensione massima di a
//@param a_size riempito con la dimensione di a dopo la lettura
void read_data(int a[],int a_capacity,int a_size)
{
a_size=0;
int x;
while (a_size<a_capacity && (cin>>x)) {
a[a_size]=x;
a_size++;
}
}
//Calcola il totale dei dati dell'array con la somma alternata.
//@param a array
//@param a_size numero di valori di a
int alternating_sum(int a[],int a_size)
{
if (a_size==0) return 0;
int totale;
for (int i=0;i<a_size;i=i+2) {
totale=totale+a[i]-a[i+1];
}
return totale;
}
int main()
{
const int array_capacity = 20;
int array[array_capacity];
int array_size=0;
cout << "Inserire una serie di numeri interi (massimo 20) o Ctrl+Z per terminare.\n";
read_data(array,array_capacity,array_size);
if (array_size == array_capacity && !cin.fail()) {
cout << "Spiacente, i dati extra sono stati ignorati.\n";
}
int totale = alternating_sum(array,array_size);
cout << "\nIl totale della somma alternata e': " << totale << "\n";
return 0;
}
Sono abbastanza ignorante ancora in materia quindi mi scuso per eventuali errori ed orrori
Spero che mi possiate aiutare poichè il corso all'università è terminato e non ho nessuno a cui chiedere consigli.
Grazie mille.