|
|
|
![]() |
|
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 09: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: 16:35.