14 novembre 2006

Soluzione della prova intermedia - SECONDA PARTE

Ecco la soluzione della seconda parte della prova del 10 novembre scorso (il programma).



#include <iostream>
using namespace std;

void LeggiIn(int* v)
{ for (int i = 0; i < 10; i++)
cin >> v[i];
}

int ContaDifferenti(int* v)
{ int ultimo = v[0];
int quanti = 1;
for (int i = 1; i < 10; i++)
{ if (v[i] != ultimo)
{ quanti++;
ultimo = v[i];
}
}
return quanti;
}

int AllocaECopia(int*& w,int* v)
{ int n = ContaDifferenti(v);
w = new int[n];
w[0] = v[0];
int i = 1, j = 0;
while (i < 10)
{ if (v[i] != w[j])
{ j++;
w[j] = v[i];
}
i++;
}
return n;
}

int Sostituisci(int* w, int n)
{ if (n == 0)
return 0;
w[0] = w[0] + Sostituisci(w+1, n-1);
return w[0];
}

int Sum(int x)
{ static int accumulatore = 0;
accumulatore = accumulatore + x;
return accumulatore;
}

void Stampa(int* v, int* w, int n, int t)
{ for (int i = 0; i < 10; i++)
cout << "v[" << i << "]=" << v[i] << endl;
cout << endl;
for (int i = 0; i < n; i++)
cout << "w[" << i << "]=" << w[i] << endl;
cout << endl;
cout << "t=" << t << endl;
}

main()
{ // domanda a)
int v[10];
LeggiIn(v);

// domanda b)
int* w;
int n = AllocaECopia(w,v);

// domanda c)
Sostituisci(w,n);

// domanda d)
int t;
for (int i = 0; i < n; i++)
t = Sum(w[i]);

// domanda e)
Stampa(v,w,n,t);

system("PAUSE");
}

1 commento:

Anonimo ha detto...

Ci chiedevamo se poteva pubblicare i risultati della 2°prova dell'esonero.
Grazie