>Alexan<
18-09-2011, 23:07
ho fatto un programmino semplice semplice per calcolare la norma di un vettore...
il codice è il seguente:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
typedef double vettore[21];
void leggi_int(int&);
void leggi_vettore(vettore,int);
double norm2(vettore,int);
main()
{
int n,i;double norma;vettore v;
leggi_int(n);
leggi_vettore(v,n);
norma=norm2(v,n);
cout << setprecision(19) << norma << endl;
return 0;
}
void leggi_int(int& n)
{
cout << "\n\n inserire un numero intero maggiore di uno e minore di 20\n\n ";cin >> n;
if ((n<2)||(n>19))
{
cout << "\n\n il valore inserito non è accettabile!!!";
return leggi_int(n);
}
return;
}
void leggi_vettore(vettore v,int n)
{
int i;
for (i=1;i<=n;i++)
{
cout << "\n inserire la componente numero " << i << "\n ";cin >> v[i];
}
return;
}
double norm2(vettore v,int n)
{
int i;double norma=0;
for (i=1;1<=n;i++) norma=norma+v[i]*v[i]; // l'errore è qui!!
norma=sqrt(norma);
return norma;
}
quando vado a compilare mi dà errore di segmentazione... dovrebbe essere alla riga che ho segnato nel corpo della funzione "norm2", ma non riesco a capire perchè sia sbagliato...
qualcuno può darmi una mano??
il codice è il seguente:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
typedef double vettore[21];
void leggi_int(int&);
void leggi_vettore(vettore,int);
double norm2(vettore,int);
main()
{
int n,i;double norma;vettore v;
leggi_int(n);
leggi_vettore(v,n);
norma=norm2(v,n);
cout << setprecision(19) << norma << endl;
return 0;
}
void leggi_int(int& n)
{
cout << "\n\n inserire un numero intero maggiore di uno e minore di 20\n\n ";cin >> n;
if ((n<2)||(n>19))
{
cout << "\n\n il valore inserito non è accettabile!!!";
return leggi_int(n);
}
return;
}
void leggi_vettore(vettore v,int n)
{
int i;
for (i=1;i<=n;i++)
{
cout << "\n inserire la componente numero " << i << "\n ";cin >> v[i];
}
return;
}
double norm2(vettore v,int n)
{
int i;double norma=0;
for (i=1;1<=n;i++) norma=norma+v[i]*v[i]; // l'errore è qui!!
norma=sqrt(norma);
return norma;
}
quando vado a compilare mi dà errore di segmentazione... dovrebbe essere alla riga che ho segnato nel corpo della funzione "norm2", ma non riesco a capire perchè sia sbagliato...
qualcuno può darmi una mano??