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
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
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]
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
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.