Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
Al MWC Qualcomm annuncia una coalizione industriale per lanciare il 6G entro il 2029 e introduce agenti IA per la gestione autonoma della RAN. Ericsson, presente sul palco, conferma la direzione: le reti del futuro saranno IA-native fin dalla progettazione
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air è un ultraleggero da 1 kg con Ryzen 5 6600H, display 14" 16:10 e 16 GB LPDDR5. Offre buona portabilità, autonomia discreta e costruzione in alluminio, ma storage PCIe 3.0 e RAM saldata limitano l'espandibilità. A 549 euro sfida brand più noti nella stessa fascia di mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-09-2011, 00:07   #1
>Alexan<
Member
 
L'Avatar di >Alexan<
 
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;
}
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??
__________________
My Mod
>Alexan< è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2011, 00:26   #2
Freaxxx
Senior Member
 
L'Avatar di Freaxxx
 
Iscritto dal: Dec 2006
Messaggi: 3808
Quote:
Originariamente inviato da >Alexan< Guarda i messaggi
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;
}
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??
prova a mettere quel v[i] tra parentesi tonde insieme al v[i] che precede

Codice:
for (i=1;1<=n;i++) norma=norma+(v[i])*(v[i]);
Freaxxx è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2011, 09:23   #3
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da >Alexan< Guarda i messaggi
ho fatto un programmino semplice semplice per calcolare la norma di un vettore...
il codice è il seguente:

Codice:
  for (i=1;i<=n;i++)
    {
      cout << "\n  inserire la componente numero " << i << "\n     ";cin >> v[i];
    }
In C++ gli indici di un vettore di dimensione N vanno da 0 a N-1, non da 1 a N
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
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2011, 09:59   #4
ESSE-EFFE
Member
 
Iscritto dal: May 2009
Messaggi: 186
Attenzione:

Quote:
Originariamente inviato da >Alexan< Guarda i messaggi
Codice:
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;
}
__________________
ESSE-EFFE.com
Sviluppo software e Web
Creazione loghi - Bergamo
ESSE-EFFE è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2011, 10:42   #5
>Alexan<
Member
 
L'Avatar di >Alexan<
 
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.
>Alexan< è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2011, 10:45   #6
ESSE-EFFE
Member
 
Iscritto dal: May 2009
Messaggi: 186
Quote:
Originariamente inviato da >Alexan< Guarda i messaggi
anche correggendo il programma come dite voi l'errore c'è lo stesso!
Scusa, ma hai visto l'errore che ho evidenziato?
__________________
ESSE-EFFE.com
Sviluppo software e Web
Creazione loghi - Bergamo
ESSE-EFFE è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2011, 10:48   #7
pabloski
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
pabloski è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2011, 12:52   #8
>Alexan<
Member
 
L'Avatar di >Alexan<
 
Iscritto dal: Feb 2006
Città: Bracciano (RM)
Messaggi: 243
Quote:
Originariamente inviato da ESSE-EFFE Guarda i messaggi
Scusa, ma hai visto l'errore che ho evidenziato?
si si!! ho editato il messaggio prima che rispondessi di nuovo!
grazie ancora a tutti!
__________________
My Mod
>Alexan< è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2011, 14:49   #9
Emalele1688
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
Emalele1688 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Costo della memoria alle stelle? Non ave...
GPT-5.4 cambia il modo di usare ChatGPT:...
Centinaia di petabyte in una molecola: l...
Lenovo al MWC 2026: dal PC modulare all'...
Huawei presenta gli agenti di IA per le ...
Alla scoperta di GAIA, la piattaforma IA...
Crimson Desert alla ricerca dell'equilib...
Ray-Ban Meta, video privati visionati da...
Epic Games fa causa a un ex collaborator...
BYD Blade Battery di seconda generazione...
Pop Mart vs Bambu Lab: la battaglia lega...
Control Resonant entra nella fase alpha ...
1.040 Hz e tecnologia Mini LED: TCL sfid...
Smart retail: arrivano le soluzioni di H...
MOVA, guida all'acquisto per scegliere i...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:05.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v