Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Si no sabes, no respondas

Estas en el tema de Si no sabes, no respondas en el foro de C/C++ en Foros del Web. HOLA QUE TAL... CUANDO TRATO DE EJECUTAR MI CODIGO EN UBUNTU, ME DICE QUE HAY UNA VIOLACION DE SEGMENTO, PERO NO SE A QUE SE ...
  #1 (permalink)  
Antiguo 23/03/2012, 21:03
 
Fecha de Ingreso: diciembre-2011
Mensajes: 16
Antigüedad: 12 años, 4 meses
Puntos: 0
Si no sabes, no respondas

HOLA QUE TAL... CUANDO TRATO DE EJECUTAR MI CODIGO EN UBUNTU, ME DICE QUE HAY UNA VIOLACION DE SEGMENTO, PERO NO SE A QUE SE DEBE (SI ALGUIEN ME PUEDE DECIR QUE ES UNA VIOLACION DE SEGMENTO, LO AGRADEZCO)

ESTE ES EL CODIGO

int main()
{


int x;

do
{
cout<<"DATOS: ";
cin>>x;
}while(x<=0 || x>=21);

const int N=x;
ARREGLO A[N-1];
string CADENA;
int dato_1,dato_2;

for(int i=0;i<N;i++)
{
cin>>A[i].cadena;
cin>>A[i].dato_1;
cin>>A[i].dato_2;
A[i].visitado=false;
}

for(int i=0;i<N;i++)
{
cout<<A[i].cadena<<endl;

}

return 0;
}

LO QUE SE SUMINISTRA DE ENTRADA ES UNA LINEA

EJEMPLO:

HOLA DATO1 DATO2

DE ESA LINEA, QUIERO SACAR EL "HOLA" Y GUARDARLO

LUEGO EL DATO1 Y GUARDARLO Y ASI CON EL ULTIMO

POR ESO LOS 3 CIN, PARA LEER HASTA EL ESPACIO
  #2 (permalink)  
Antiguo 24/03/2012, 08:56
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Si no sabes, no respondas

Pues se refiere a que estás accediendo a direcciones de memoria que no has declarado.

Creo que el problema es que declaras el array ARREGLO de tamaño N-1 y luego accedes a la posición N-1, lo cual es incorrecto.

Si declaras un array de tamaño M, los índices del array son de 0 a M-1, por tanto, en tu caso sería de 0 a N-2.

Código C++:
Ver original
  1. for(int i=0;i<N-1;i++)
  2. {
  3. ...
  4. }

Saludos.
  #3 (permalink)  
Antiguo 24/03/2012, 11:33
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Si no sabes, no respondas

jajajaja si no sabes, no respondas; q mala onda... vos cuanto sabes??
  #4 (permalink)  
Antiguo 24/03/2012, 11:37
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Si no sabes, no respondas

Estás intentando a acceder a una zona de memoria dedicada al rutinas del sistema. Si no te hubiera dicho eso, seguramente huberas tenido que reiniciar el ordenador.

Esto es debido a que las aplicaciones de usuario no pueden acceder a la memoria del sistema, más que nada por seguridad, ya que sino quedaría en entredicho la seguridad de tu S.O.

Etiquetas: int, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:48.