Autor Tema: Arrays unidimensionales (arreglos, formaciones) en C (lenguajeC) indice CU00512F  (Leído 4901 veces)

Jack_F

  • Visitante
Ejercicio CU00512F del curso básico de programación en lenguaje C.

Citar
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.
Citar
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.
Código: [Seleccionar]
#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. :)
« Última modificación: 26 de Agosto 2017, 17:25 por Alex Rodríguez »

Jack_F

  • Visitante
Re:Arrays unidimensionales (arreglos o formaciones) en C. (CU00512F)
« Respuesta #1 en: 08 de Agosto 2017, 10:34 »
Básicamente no entiendo que hace numeroDeCoches[T] = 54;, ¿ para que sirve ?

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Arrays unidimensionales (arreglos o formaciones) en C. (CU00512F)
« Respuesta #2 en: 08 de Agosto 2017, 11:51 »
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;
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Jack_F

  • Visitante
Re:Arrays unidimensionales (arreglos o formaciones) en C. (CU00512F)
« Respuesta #3 en: 08 de Agosto 2017, 18:10 »
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.

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Arrays unidimensionales (arreglos o formaciones) en C. (CU00512F)
« Respuesta #4 en: 08 de Agosto 2017, 19:53 »
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.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Jack_F

  • Visitante
Re:Arrays unidimensionales (arreglos o formaciones) en C. (CU00512F)
« Respuesta #5 en: 11 de Agosto 2017, 04:35 »
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.

zeroradiant

  • Sin experiencia
  • *
  • Mensajes: 4
  • Map Maker
    • Ver Perfil
    • Number 1 Clan
Mi código en respuesta al Curso con indice CU00512F.

Código: [Seleccionar]
#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;
}

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".