|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2006
Città: Bracciano (RM)
Messaggi: 243
|
[C++] Errore di segmentazione
ho fatto un programmino semplice semplice per calcolare la norma di un vettore...
il codice è il seguente: Codice:
#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;
}
qualcuno può darmi una mano??
__________________
My Mod |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
Quote:
Codice:
for (i=1;1<=n;i++) norma=norma+(v[i])*(v[i]); |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
I cicli for andrebbero riscritti come Codice:
for (int i=0; i<n; ++i) // ...
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: May 2009
Messaggi: 186
|
Attenzione:
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Feb 2006
Città: Bracciano (RM)
Messaggi: 243
|
lo so, ma ho definito la variabile vettore come un array che ha dimensione sempre di almeno n+1, appunto per comodità nel definire i cicli!
anche correggendo il programma come dite voi l'errore c'è lo stesso! P.S. @Freaxxx: ho provato anche a mettere le parentesi come hai detto tu, ma non risolve... Scusate... non avevo visto che nell'ultimo ciclo c'è un 1 invece della i... grazie ESSE-EFFE!
__________________
My Mod Ultima modifica di >Alexan< : 19-09-2011 alle 10:47. |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: May 2009
Messaggi: 186
|
Scusa, ma hai visto l'errore che ho evidenziato?
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Codice:
for (i=1;1<=n;i++) norma=norma+v[i]*v[i]; che erroraccio 1 <= n??? è i <= n, altrimenti logicamente va in loop e i arriva alle stelle |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Oct 2009
Messaggi: 157
|
Gli errori di segmentazione sono la cosa per cui mi ci cemento fino all'esaurimento. Usa software di Debugging, o il debugger incluso nel tuo compilatore. Ti facilita la vita ed eviti nervi ed arrabbiature contro il tuo PC
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:44.




















