Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: jvm1994 en 5 Diciembre 2016, 04:07 am



Título: [Problema] Algoritmo simple.
Publicado por: jvm1994 en 5 Diciembre 2016, 04:07 am
Hola compañeros de la comunidad, tengo una consulta, cual es el error en el siguiente algoritmo.

Código
  1. void main()
  2. {
  3.    int vector[10];
  4.    int x = 1;
  5.  
  6.    for(x=1; x<=10; x++)
  7.    {
  8.        vector[x] = 23;
  9.    }


Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: [Problema] Algoritmo simple.
Publicado por: engel lex en 5 Diciembre 2016, 04:36 am
vector[10] contiene 10 elementos... empezando por 0 (siempre los array empiezan por 0)



viendolo como que vector en si mismo es un apuntador de memoria, el numero entre corchetes, es cuanto debe sumar para ir a la siguiente posición.... es decir...

imaginemos que a vector 10 tiene la posición de memoria "1000" entonces

Código:
vector[0] -> 1000 + 0
vector[1] -> 1000 + 1
vector[2] -> 1000 + 2
....
vector[n] -> 1000 + n


Título: Re: [Problema] Algoritmo simple.
Publicado por: jvm1994 en 5 Diciembre 2016, 05:17 am
Exacto, estuve analizando el algoritmo sin ejecutarlo y no logré identificar error.

Siendo que X vale 1 y la estructura repetitiva se ejecutará mientras que X < 11 o X <= 10.
La cuestión es que X nunca debería llegar a valer 11 por lo tanto no debería desbordar el vector.

1° Iteración:
X = 1;
Vector[1] = 23;
 _ _ _ _ _ _ _ _ _ _ _
|_|X|_|_|_|_|_|_|_|_|_|_|

2° Iteración:
X = 2;
Vector[2] = 23;
 _ _ _ _ _ _ _ _ _ _ _
|_|X|X|_|_|_|_|_|_|_|_|_|

3° Iteración:
X = 3;
Vector[3] = 23;
 _ _ _ _ _ _ _ _ _ _ _
|_|X|X|X|_|_|_|_|_|_|_|_|

4° Iteración:
X = 4;
Vector[4] = 23;
 _ _ _ _ _ _ _ _ _ _ _
|_|X|X|X|X|_|_|_|_|_|_|_|

5° Iteración:
X = 5;
Vector[5] = 23;
 _ _ _ _ _ _ _ _ _ _ _
|_|X|X|X|X|X|_|_|_|_|_|_|

6° Iteración:
X = 6;
Vector[6] = 23;
 _ _ _ _ _ _ _ _ _ _ _ __
|_|X|X|X|X|X|X|_|_|_|_|_|

7° Iteración:
X = 7;
Vector[7] = 23;
 _ _ _ _ _ _ _ _ _ _ _
|_|X|X|X|X|X|X|X|_|_|_|_|

8° Iteración:
X = 8;
Vector[8] = 23;
 _ _ _ _ _ _ _ _ _ _ _
|_|X|X|X|X|X|X|X|X|_|_|_|

9° Iteración:
X = 9;
Vector[9] = 23;
 _ _ _ _ _ _ _ _ _ _ _
|_|X|X|X|X|X|X|X|X|X|_|_|

10° Iteración:
X = 10;
Vector[10] = 23;
DEJA DE ITERAR.
 _ _ _ _ _ _ _ _ _ _ _
|_|X|X|X|X|X|X|X|X|X|X|_|



Pero por algún motivo en la consola cuando printeo el valor de X sale esto: (Por lo tanto me desborda el vector)

Cita de: CONSOLA
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[23]


Título: Re: [Problema] Algoritmo simple.
Publicado por: engel lex en 5 Diciembre 2016, 05:38 am
tienes un error XD estás colocando casillas de más


Código:
inicializacion: 
vector[10] = son 10 casillas

 _ _ _ _ _ _ _ _ _ _ 
|_|_|_|_|_|_|_|_|_|_|
 0 1 2 3 4 5 6 7 8 9

1° Iteración:
X = 1;
Vector[1] = 23;

 _ _ _ _ _ _ _ _ _ _ 
|_|X|_|_|_|_|_|_|_|_|
 0 1 2 3 4 5 6 7 8 9

2° Iteración:
X = 2;
Vector[1] = 23;

 _ _ _ _ _ _ _ _ _ _ 
|_|X|X|_|_|_|_|_|_|_|
 0 1 2 3 4 5 6 7 8 9

3° Iteración:
X = 3;
Vector[1] = 23;

 _ _ _ _ _ _ _ _ _ _ 
|_|X|X|X|_|_|_|_|_|_|
 0 1 2 3 4 5 6 7 8 9

4° Iteración:
X = 4;
Vector[1] = 23;

 _ _ _ _ _ _ _ _ _ _ 
|_|X|X|X|X|_|_|_|_|_|
 0 1 2 3 4 5 6 7 8 9

5° Iteración:
X = 5;
Vector[1] = 23;

 _ _ _ _ _ _ _ _ _ _ 
|_|X|X|X|X|X|_|_|_|_|
 0 1 2 3 4 5 6 7 8 9

6° Iteración:
X = 6;
Vector[1] = 23;

 _ _ _ _ _ _ _ _ _ _ 
|_|X|X|X|X|X|X|_|_|_|
 0 1 2 3 4 5 6 7 8 9

7° Iteración:
X = 7;
Vector[1] = 23;

 _ _ _ _ _ _ _ _ _ _ 
|_|X|X|X|X|X|X|X|_|_|
 0 1 2 3 4 5 6 7 8 9

8° Iteración:
X = 8;
Vector[1] = 23;

 _ _ _ _ _ _ _ _ _ _ 
|_|X|X|X|X|X|X|X|X|_|
 0 1 2 3 4 5 6 7 8 9

9° Iteración:
X = 9;
Vector[1] = 23;

 _ _ _ _ _ _ _ _ _ _ 
|_|X|X|X|X|X|X|X|X|X
 0 1 2 3 4 5 6 7 8 9

10° Iteración:
X = 10;
Vector[1] = 23;

 _ _ _ _ _ _ _ _ _ _ 
|_|X|X|X|X|X|X|X|X|X|X <- segmentation fault
 0 1 2 3 4 5 6 7 8 9




Título: Re: [Problema] Algoritmo simple.
Publicado por: jvm1994 en 6 Diciembre 2016, 04:40 am
Jaja gracias, era un error demasiado tonto.

Por suerte saqué 8 en el examen, logré encontrar el error hoy por la tarde.

Pasa que ayer a la madrugada estaba con el cerebro quemado.

Gracias.