Esempio di programmazione in linguaggio C++

Scrivere un programma che legge ripetutamente prima un intero n e poi due vettori di n componenti (con n minore o uguale a 100), e ne calcola il prodotto scalare. La lettura si arresta quando il programma legge il valore convenzionale 0 per la dimensione n. Alla fine il programma stampa solo il massimo prodotto scalare, e il numero d'ordine della coppia di vettori che lo ha prodotto.

#include <stdio.h>

/* dichiarazione */
double prodScalare (int, double*, double*);

/* definizione */
double prodScalare (int n, double *u, double *v)
{
double prod =0;
int i;
for (i=0; i<n; ++i)
prod = prod + u[i]*v[i];
return prod;
}

int main () {
int n, i, coppia=0, coppiaMax;
double u[100], v[100], prod, prodMax;

printf("inserisci n e due vettori di n componenti:\n");
scanf ("%d", &n);
while (n != 0) {
++coppia;
/* lettura vettore u */
for (i=0; i<n; ++i)
scanf("%lf", &u[i]);
/* lettura vettore v */
for (i=0; i<n; ++i)
scanf("%lf", &v[i]);
prod = prodScalare (n, u, v);
if (coppia == 1 || prod > prodMax) {
coppiaMax = coppia;
prodMax = prod;
}
printf("inserisci n e due vettori di n componenti:\n");
scanf ("%d", &n);
}
printf ("prodotto scalare massimo: %g\n", prodMax);
printf ("ottenuto per la coppia n. %d\n", coppiaMax);
return 0;
}