[Problema] Algoritmo simple.

Iniciado por jvm1994, 5 Diciembre 2016, 04:07 AM

0 Miembros y 1 Visitante están viendo este tema.

jvm1994

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
"La posibilidad de crear tu mundo."

int main()
{
eMundo * Own = world_new();
if(Own != NULL)
{
    world_create(Own);
}

return 0;
}

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

jvm1994

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]
"La posibilidad de crear tu mundo."

int main()
{
eMundo * Own = world_new();
if(Own != NULL)
{
    world_create(Own);
}

return 0;
}

engel lex

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


El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

jvm1994

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.
"La posibilidad de crear tu mundo."

int main()
{
eMundo * Own = world_new();
if(Own != NULL)
{
    world_create(Own);
}

return 0;
}