Test Foro de elhacker.net SMF 2.1

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.

void main()
{
   int vector[10];
   int x = 1;

   for(x=1; x<=10; x++)
   {
       vector[x] = 23;
   }



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


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


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.