Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Jack_F en 04 de Agosto 2017, 06:07
-
Ejercicio CU00512F del curso básico de programación en lenguaje C.
EJERCICIO
Crea el código de un programa que cumpla las siguientes premisas. Declara un array de enteros denominado numeroDeHijos que contenga 10 elementos. Declara una variable tipo int que se llame T. Establece el valor de T en 8 y el valor de numeroDeHijos para un localizador de valor T en 3. Procede a mostrar en pantalla un mensaje que indique cuál es el valor T y el número de hijos para el valor T. Finalmente, modifica únicamente la asignación de valor a T de modo que en vez de 3 sea 5 y ejecuta de nuevo el programa. Responde a estas preguntas:
a) ¿Qué significado podríamos atribuir a los índices del array? (Supón que se trata de un programa donde debes atribuirle un significado, si no tuvieran un significado en un programa, ¿para qué nos servirían?).
b) ¿Cuál será el primer índice del array?
c) ¿Cuál será el último índice del array?
Lo primero, no comprendo esta línea. y el valor de numeroDeHijos para un localizador de valor T en 3.
, seria ese es la inicialización del la variable numeroDeHijos, que cree, o sea el valor.
Bueno aquí esta el código.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int numeroDeHijos[10];
int T;
T = 8;
numeroDeHijos[T] = 5;
printf("El valor de T es %d \n", T);
printf("La cantidad de hijos es %d \n", numeroDeHijos[T]);
}
Respuestas:
a- Bueno creo que le daria un gran entendimiento al indice.
b- es 0.
c- es 9
Puse de esta menera , ya que se la numeracion enpienzan en 0 y en este caso termina en nueve.
Un saludo. :)
-
Básicamente no entiendo que hace numeroDeCoches[T] = 54;, ¿ para que sirve ?
-
Básicamente no entiendo que hace numeroDeCoches[T] = 54;, ¿ para que sirve ?
En este caso, T es una variable con un valor entero.
Entonces esa línea de código lo que hace es meter el número 54, en la posición del array que indique el valor de T.
Si T vale 8, pues estamos asignando el valor 54 en la posición 8 del array.
Supongo que la intención del ejemplo es comprobar que podemos acceder a los valores del vector, no solo usando directamente valores numéricos:
numeroDeCoches[0] = 12;
numeroDeCoches[3] = 23;
..si no también empleando variables:
int var1 = 0;
int var2 = 3;
numeroDeCoches[var1] = 12;
numeroDeCoches[var2] = 23;
Siempre han de ser variables de tipo int... si usamos un double u otro tipo el compilador lanzará error.
Usar variables es, de hecho, la forma más habitual de acceder a los elementos de un array.
Si quisieramos, por ejemplo, asignar el valor 100 a los 10 elementos de este array, se podría hacer así..
numeroDeCoches[0] = 100;
numeroDeCoches[1] = 100;
numeroDeCoches[2] = 100;
numeroDeCoches[3] = 100;
numeroDeCoches[4] = 100;
numeroDeCoches[5] = 100;
numeroDeCoches[6] = 100;
numeroDeCoches[7] = 100;
numeroDeCoches[8] = 100;
numeroDeCoches[9] = 100;
pero es un despropósito. Y ya ni te cuento si el array tuviera 1000 elementos, o 1000000...
En cambio, se puede hacer usando un bucle for haciendo que aumente una variable int de 0 a 9 y utilizamos esa variable para apuntar a los elementos del array:
for (int j = 0; j < 10; j++)
numeroDeCoches[j] = 100;
-
Entonces cuando creamos otra variables tipo int, en este caso int T; T = 8;, cuando asignamos un valor que es 8, ese valor ocupa la posición 8 del array numeroDeCoches[10];
y cuando lo inicializamo numeroDeCoches[T] = 5;, pero se imprime ya que la variable T esta en la posición 8 de array.
-
Entonces cuando creamos otra variables tipo int, en este caso int T; T = 8;, cuando asignamos un valor que es 8, ese valor ocupa la posición 8 del array numeroDeCoches[10];
y cuando lo inicializamo c, pero se imprime ya que la variable T esta en la posición 8 de array.
No, la variable T no está en ninguna posición del array. Es una variable independiente, que tiene un valor, en este caso 8.
Dicha variable, tu puedes utilizarla según tus necesidades.
La puedes usar para hacer una operación aritmética:
int resultado = 100 * T;
La puedes usar en una expresión condicional, ya sea para un IF:
if ( T == 8 )
.......;
else
.......;
....para un bucle:
for (int i = 0; i < T; i++)
........;
o utilizarla para cualquier otra cosa que se nos venga a la mente, y que entre dentro de las posibilidades de una variable de tipo int... incluido como ya hemos visto, para apuntar a las posiciones de un array:
numeroDeCoches[T] = 5;
Ahí estamos usando la variable T para apuntar a una posicion del array, pero esto no implica que la variable T esté ligada al array, o que forme parte de este.
La variable T es totalmente independiente del array, no tiene nada que ver con él, pero como tiene un valor numérico de tipo int, nos puede servir si así lo deseamos para apuntar a la posición de un elemento del array.
En esa línea le estamos diciendo que se vaya al elemento indicado por el valor de la variable T, en este ejemplo 8, y que ahí asigne un 5.
Pero tras esta instrucción, la variable T sigue teniendo valor 8 y sigue siendo ajena al array de manera que se puede seguir utilizando para otras operaciones cualquiera.
Para apuntar posiciones de elementos en un array, tenemos que usar un valor entero dentro de los corchetes [ ]
Este valor entero, de tipo int, podemos obtenerlo de donde nos de la gana, según necesitemos.
Podemos indicarlo directamente:
numeroDeCoches[8] = 5;
Podemos usar una variable:
numeroDeCoches[T] = 5;
Podemos usar el resultado de una operacion aritmética:
numeroDeCoches[4+4] = 5;
Podemos usar el valor que nos devuelva una función (puede que aún no hayas visto funciones):
numeroDeCoches[obtener_enteros_al_azar()] = 5;
Es decir, dentro de los corchetes tenemos que proporcionar un valor int.
Y para ello podemos utilizar cualquier expresión, elemento o porción de código cuyo resultado final sea eso, un valor int.
Y esto no implica que dicha expresión, elemento o porción de código esté ligado o relacionado con el array. Simplemente aprovechamos el valor int que nos proporciona para apuntar a un elemento del array.
Solo hay dos limitaciones en este aspecto:
1) El valor int ha de ser positivo, es decir 0 o mayor que 0.
Esto dará error:
numeroDeCoches[-8] = 5;
2) El valor int ha de ser inferior al tamaño del array.
En este ejemplo, el array tiene un tamaño de 10 elementos, por lo tanto sus posiciones se enumeran del 0 al 9.
Si le indico un numero cualquiera fuera de ese rango, se producirá una excepción (un error) durante la ejecución del programa y este dejará de funcionar.
Así que como hemos dicho, podemos obtener los valores int para apuntar a las posiciones de donde queramos, pero siempre que sepamos con seguridad que el valor int que vayamos a obtener, sea inferior al tamaño del array y que sea un numero positivo.
Por ejemplo, esta linea:
numeroDeCoches[obtener_enteros_al_azar()] = 5;
Es correcta y cualquier compilador C/C++ la dará por buena. Pero es peligrosa.
Se supone que la función obtener_enteros_al_azar() es una porción de código que hemos escrito por separado y que se encarga únicamente de proporcionarnos valores int al azar.
Si la hemos programado para que nos de enteros entre 0 y 9, que es el rango admitido por el array numeroDeCoches, no habrá problema.
Pero si la hemos programado para que nos de cualquier valor int posible al azar, pues el programa fallará porque puede darnos valores fuera de ese rango.
-
Gracias kabuto, porfin lo comprendo. No sabia que se podia hacer ese tipo de inicialización con otra variables que no sea del array.
Un saludo.
-
Mi código en respuesta al Curso con indice CU00512F.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int numeroDeHijos[10];
int T=8;
numeroDeHijos[T]=3;
printf("El valor de T %d y el numero de hijos %d\n", T, numeroDeHijos[T]);
return 0;
}