Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Amelie en 22 Noviembre 2018, 03:04 am



Título: [C] Elementos de un array
Publicado por: Amelie en 22 Noviembre 2018, 03:04 am
Hola, he implentado el siguiente código en lenguaje C para generar una lista de números consecutivos desde 1 a n:

Código:
#include <stdio.h>
   
int main(void){
    printf("Ingresar cantidad de elementos: ");
    int r;
    scanf("%d", &r);
    int i = 0;
    int array[r];
     
    do {
        array[r - 1] = r;
        r = r- 1;
        ++i;
    } while (r > 0);
    printf("Lista: \n");
    for(r = 0; r < i; ++r)
        printf("%d \n", array[r]);
    return 0;
}

Mi problema ahora es el siguiente: en el mismo código arriba, quiero crear un conjunto (digamos A), en el cuál todos los elementos del array se guarden en A de la forma siguiente:

Código:
int A[] = {1,2,3,4,5,6,7,8,9,10};

Esto en el caso de haber ingresado 10 por teclado. ¿Alguien podría ayudarme con este problema?
Saludos.  :-*


Título: Re: [C] Elementos de un array
Publicado por: K-YreX en 22 Noviembre 2018, 03:11 am
Creo que no entiendo bien la pregunta porque ese programa que tienes si lo ejecutas en introduces 10, ya te está creando un conjunto (que no se llama A, se llama array) en el que tienes los números almacenados en el orden que tú quieres que estén.
Entonces no sé dónde está el problema :huh:

Igual te refieres a que quieres guardar todo el contenido de <array> en otra variable <A>. Es eso??


Título: Re: [C] Elementos de un array
Publicado por: Amelie en 22 Noviembre 2018, 03:17 am
Gracias por responder. Exactamente a eso último me refiero, guardar todo el contenido (sigamos con el ejemplo de 10) en otra variable, en este caso A. Esto debido a que en otro programa debo usar lo siguiente:

Código:
int A[] = {1,2,3,4,5,6,7,8,9,10};

Espero hacerme entender. Gracias por responder :)


Título: Re: [C] Elementos de un array
Publicado por: K-YreX en 22 Noviembre 2018, 03:28 am
Cuando declaras un array se puede inicializar directamente si conoces todos sus datos, es decir, puedes hacer esto:
Código
  1. int array[TAM] = {1,2,3,4,5,...};

Pero en tu caso que no puedes conocer esos valores antes de la ejecución del programa, tienes que declarar el nuevo array vacío y copiar después todos los valores. Como esta copia se hace después de haber declarado el nuevo array, entonces ya no puedes hacer la forma rápida que sería (en tu caso):
Código
  1. int array[TAM] = {1,2,3,4,5,...};
  2. int nuevoArray[TAM] = array;  // Esto no es correcto.

En vez de eso, debes hacer una copia elemento a elemento (como ejemplo):
Código
  1. int array[10] = {0,1,2,3,4,5,6,7,8,9};
  2. int nuevoArray[10];
  3. for(size_t i = 0; i < 10; i++)
  4.    nuevoArray[i] = array[i];

Con esto tendrías el siguiente resultado:
array[10] = {0,1,2,3,4,5,6,7,8,9}
nuevoArray[10] = {0,1,2,3,4,5,6,7,8,9}

Espero haberte ayudado con esto.


Título: Re: [C] Elementos de un array
Publicado por: AlbertoBSD en 22 Noviembre 2018, 03:47 am
Por que no hacerlo al mismo tiempo?

Código
  1.  
  2. #include <stdio.h>
  3.  
  4. int main(void){
  5.    printf("Ingresar cantidad de elementos: ");
  6.    int r;
  7.    scanf("%d", &r);
  8.    int i = 0;
  9.    int array[r],A[r];
  10.  
  11.    do {
  12.        array[r - 1] = r;
  13. A[i] = r;
  14.        r = r- 1;
  15.        ++i;
  16.    } while (r > 0);
  17.    printf("Lista: \n");
  18.    for(r = 0; r < i; ++r)
  19.        printf("%d \t", array[r]);
  20.    printf("\nLista: \n");
  21.    for(r = 0; r < i; ++r)
  22.        printf("%d \t", A[r]);
  23.    return 0;
  24. }
  25.  


Título: Re: [C] Elementos de un array
Publicado por: Amelie en 22 Noviembre 2018, 03:56 am
Muchas gracias por la ayuda, me sirvió en demasía, ya que pude resolver el problema  ;-) ;-) ;D


Título: Re: [C] Elementos de un array
Publicado por: K-YreX en 22 Noviembre 2018, 04:01 am
Por que no hacerlo al mismo tiempo?

Código
  1. #include <stdio.h>
  2. int main(void){
  3.    printf("Ingresar cantidad de elementos: ");
  4.    int r;
  5.    scanf("%d", &r);
  6.    int i = 0;
  7.    int array[r],A[r];
  8.    do {
  9.          array[r - 1] = r;
  10.          A[i] = r;
  11.          r = r- 1;
  12.          ++i;
  13.    } while (r > 0);
  14.    printf("Lista: \n");
  15.    for(r = 0; r < i; ++r)
  16.         printf("%d \t", array[r]);
  17.    printf("\nLista: \n");
  18.    for(r = 0; r < i; ++r)
  19.         printf("%d \t", A[r]);
  20.    return 0;
  21. }

Aunque hay un pequeño error, como la serie de números va decreciendo se van guardando los valores desde el final del array hacia el principio. Con eso corregido quedaría así:
Código
  1. do {
  2.        array[r - 1] = r;
  3. A[r - 1] = r; // Esta era la instruccion que guardaba el array <A> al reves que el array <array>
  4.        r = r- 1;
  5.        ++i;
  6. } while (r > 0);

PD: Un tanto extraña y poco convencional esa forma de almacenar un array aunque funcionar claro que funciona. Una alternativa:
Código
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.    printf("Ingresar cantidad de elementos: ");
  5.    int r;
  6.    scanf("%d", &r);
  7.    int i = 0;
  8.    int array[r],A[r];
  9.  
  10.    for(size_t i = 0; i < r; i++){
  11.        array[i] = i;
  12.        A[i] = i;
  13.    }
  14.  
  15.    printf("Lista: \n");
  16.    for(size_t i = 0; i < r; i++)
  17.        printf("%d \t", array[i]);
  18.  
  19.    printf("\nLista: \n");
  20.    for(size_t i = 0; i < r; i++)
  21.        printf("%d \t", A[i]);
  22.  
  23.    return 0;
  24. }

Edit: De esta manera evitas modificar el tamaño de <r> ya que representa el tamaño del array. Aunque no se va a modificar el tamaño por modificar <r> pero si el código fuese más grande puedes pensar que <r> vale el tamaño del array y como lo has modificado no es así y podrías tener problemas.

Y por último, sabéis por qué si citas un código en C aparecen "&#160" en la tabulación del código?? Eso en códigos entre etiquetas cpp no pasa. Y hay alguna forma de usar el tabulador?? Ya que eso de tener que usar muchos espacios para tabular bien el código... :-\


Título: Re: [C] Elementos de un array
Publicado por: AlbertoBSD en 22 Noviembre 2018, 04:04 am
La verdad tenia duda de si realmente esto es lo que buscabas ya que el termino

Citar
Esto en el caso de haber ingresado 10 por teclado.

Era un poco confuso.


Si es rara la forma de capturar los datos

Ya que si ingresas 0, el programa da errores con do-while

Saludos



Título: Re: [C] Elementos de un array
Publicado por: K-YreX en 22 Noviembre 2018, 04:09 am
He editado esto en mi post anterior pero como veo que habéis respondido mientras lo hacía, lo pregunto de nuevo para que no quede en el olvido:
Citar
Y por último, sabéis por qué si citas un código en C aparecen "&#160" en la tabulación del código?? Eso en códigos entre etiquetas cpp no pasa. Y hay alguna forma de usar el tabulador?? Ya que eso de tener que usar muchos espacios para tabular bien el código... :-\


Título: Re: [C] Elementos de un array
Publicado por: AlbertoBSD en 22 Noviembre 2018, 04:21 am
Y por último, sabéis por qué si citas un código en C aparecen "&#160" en la tabulación del código?? Eso en códigos entre etiquetas cpp no pasa. Y hay alguna forma de usar el tabulador?? Ya que eso de tener que usar muchos espacios para tabular bien el código... :-\

Realmente no  lo habia notado ya que casi no cito post completos.

Al parecer es error del Geshi.

Saludos


Título: Re: [C] Elementos de un array
Publicado por: Wilber592 en 22 Noviembre 2018, 15:01 pm
Hola, he implentado el siguiente código en lenguaje C para generar una lista de números consecutivos desde 1 a n:

Código:
#include <stdio.h>
   
int main(void){
    printf("Ingresar cantidad de elementos: ");
    int r;
    scanf("%d", &r);
    int i = 0;
    int array[r];
     
    do {
        array[r - 1] = r;
        r = r- 1;
        ++i;
    } while (r > 0);
    printf("Lista: \n");
    for(r = 0; r < i; ++r)
        printf("%d \n", array[r]);
    return 0;
}

Mi problema ahora es el siguiente: en el mismo código arriba, quiero crear un conjunto (digamos A), en el cuál todos los elementos del array se guarden en A de la forma siguiente:

Código:
int A[] = {1,2,3,4,5,6,7,8,9,10};

Esto en el caso de haber ingresado 10 por teclado. ¿Alguien podría ayudarme con este problema?
Saludos.  :-*

Si lo que quieres es guardar todos los números solo usa un for anidado dónde debas usarlo, si quieres enumerar una lista, o bien que deseas hacer después de almacenar tu conjunto en una variabl.