codice:
/*
Si scriva un programma che, assegnato in ingresso, ad un vettore V, un insieme
di n valori interi, calcoli la somma som ed il prodotto prod degli elementi del
vettore V e visualizzi quindi i valori di som e prod. Di ogni elemento del vettore,
si calcoli inoltre la radice quadrata in due modi distinti: utilizzando la funzione
di libreria sqrt e scrivendo esplicitamente le istruzioni per il calcolo della
radice quadrata come limite di una successione, con precisione assegnata in ingresso.
Si produca quindi, sul supporto di uscita, una tabella che per ogni valore V[i]
riporti i valori di sqrt(V[i]) e della radice di V[i] calcolata nel secondo modo.
Si strutturi il programma in sottoprogrammi (ad esempio: input, somma, prodotto,
radice, output).
ESEMPIO
INPUT
n = 4
V= 2 4 6 8
errore tollerato per il calcolo della radice quadrata = 0.1
OUTPUT
la somma degli elementi del vettore e' = 20
il prodotto degli elementi del vettore e' = 384
V[i] RQ1[i] RQ2[i]
2 1.41421 1.41667
4 2 2.00061
6 2.44949 2.44949
8 2.82843 2.82847
*/
#include<iostream>
using namespace std;
#include<stdlib.h>
#include<math.h>
//Prototipi delle funzioni
void input(int &n, int v1[], double&E);
void somma(int n,int v1[],int &som);
void prodotto(int n, int v1[], int &prod);
void radice_sqrt(int n, int v1[], double rq1[]);
void radice_newton(int &n,int v1[],double E,double rq2[]);
void output(int som, int prod,int n, int v1[], double rq1[],double rq2[]);
int main()
{
//Dichiarazioni
int v1[100];
int n;
int som;
int prod;
double rq1[100];
double E;
double rq2[100];
//Chiamate delle funzioni
input(n,v1,E);
somma(n,v1,som);
prodotto(n,v1,prod);
radice_sqrt(n,v1,rq1);
radice_newton(n,v1,E,rq2);
output(som,prod,n,v1,rq1,rq2);
cout<<"\n\n";
system("PAUSE");
return 0;
}
void input(int &n, int v1[], double&E)
{
int i;
cout<<"N = ";
cin>>n;
cout<<"V= ";
for(i=0;i<n;i++)
{
cin>>v1[i];
}
cout<<"\nerrore tollerato per il calcolo della radice quadrata = ";
cin>>E;
}
void somma(int n,int v1[],int &som)
{
int i;
som = 0;
for(i=0;i<n;i++)
{
som = som + v1[i];
}
}
void prodotto(int n, int v1[], int &prod)
{
int i;
prod=1;
for(i=0;i<n;i++)
{
prod = prod * v1[i];
}
}
void radice_sqrt(int n, int v1[], double rq1[])
{
int i;
for(i=0;i<n;i++)
{
rq1[i] = sqrt(double(v1[i]));
}
}
void radice_newton(int &n,int v1[],double E,double rq2[])
{
int i;
double Y;
int k;
Y=1;
if(i<n && fabs((Y*Y-v1[i])/v1[i])>E)
{ Y=(Y+v1[i]/Y)/2;
i++;
}
else
{
rq2[n]=Y;
n++;
}
}
void output(int som, int prod,int n, int v1[], double rq1[],double rq2[])
{
int i;//indice di scorrimento del vettore
cout<<"la somma degli elementi del vettore e' = " << som<<"\n";
cout<<"il prodotto degli elementi del vettore e' = "<<prod<<"\n";
cout<<"V[i]\t\t RQ1[i]\t\t RQ2[i]\n";
for(i=0;i<n;i++)
{
cout<<v1[i]<<"\t\t"<<rq1[i]<<"\t\t"<<rq2[i]<<"\n";
}
}
Grazie a tutti come al solito...