Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: GeorgeDef en 14 Octubre 2018, 23:40 pm



Título: Crear un Programa en C que almacene N datos en un arreglo
Publicado por: GeorgeDef en 14 Octubre 2018, 23:40 pm
Lo que pasa es que ya realize este codigo pero al momento de ejecutarlo que guarde mas de 10 valores me sale error de ejecución y quisiera saber si me pueden ayudar
#include<stdio.h>
#include<windows.h>
#include<conio.h>
main()
{
   int i,n,num[n];
   printf("Cuantos datos desea almacenar: ");
   scanf("%d", &n);
   for(i=0;i<n;i++)
   {
      printf("Teclea el Valor %d: ", (i+1));
      scanf("%d", &num);
   }
   system("PAUSE");
   system("CLS");
   printf("El arreglo quedo:\n");
   for(i=0;i<n;i++)
   {
      printf("%d,", num);
   }
   getche();
}


Título: Re: Crear un Programa en C que almacene N datos en un arreglo
Publicado por: MAFUS en 14 Octubre 2018, 23:44 pm
No se puede declarar un array estático usando una variable para dimensionarlo.


Título: Re: Crear un Programa en C que almacene N datos en un arreglo
Publicado por: GeorgeDef en 14 Octubre 2018, 23:48 pm
Entonces si  no es mucha molestia me podrias decir como declararlo para poder usarlo sin problemas?


Título: Re: Crear un Programa en C que almacene N datos en un arreglo
Publicado por: Beginner Web en 15 Octubre 2018, 00:03 am
Mmmmm

Código
  1. #include<stdio.h>
  2. #include<windows.h>
  3. #include<conio.h>
  4. main()
  5. {
  6.   int i,n;
  7.   printf("Cuantos datos desea almacenar: ");
  8.   scanf("%d", &n);
  9.   int num[n];
  10.   for(i=0;i<n;i++)
  11.   {
  12.      printf("Teclea el Valor %d: ", (i+1));
  13.      scanf("%d", &num);//scanf("%d",&num[i]);//ummm...
  14.   }
  15.   system("PAUSE");
  16.   system("CLS");
  17.   printf("El arreglo quedo:\n");
  18.   for(i=0;i<n;i++)
  19.   {
  20.      printf("%d,", num);//printf("%d,", num[i]);//ummm...
  21.   }
  22.   getche();
  23. }


Título: Re: Crear un Programa en C que almacene N datos en un arreglo
Publicado por: GeorgeDef en 15 Octubre 2018, 00:38 am
ya quedo resuelto mi problema, muchas gracias
Mmmmm

Código
  1. #include<stdio.h>
  2. #include<windows.h>
  3. #include<conio.h>
  4. main()
  5. {
  6.   int i,n;
  7.   printf("Cuantos datos desea almacenar: ");
  8.   scanf("%d", &n);
  9.   int num[n];
  10.   for(i=0;i<n;i++)
  11.   {
  12.      printf("Teclea el Valor %d: ", (i+1));
  13.      scanf("%d", &num);//scanf("%d",&num[i]);//ummm...
  14.   }
  15.   system("PAUSE");
  16.   system("CLS");
  17.   printf("El arreglo quedo:\n");
  18.   for(i=0;i<n;i++)
  19.   {
  20.      printf("%d,", num);//printf("%d,", num[i]);//ummm...
  21.   }
  22.   getche();
  23. }


Título: Re: Crear un Programa en C que almacene N datos en un arreglo
Publicado por: MAFUS en 15 Octubre 2018, 15:31 pm
Se sigue declarando un array con una variable y esto depende del compilador que funcione.
Para hacerlo acorde al estándar usas un array grande, suficiente para cubrir tus necesidades, o usas la memoria dinámica con malloc.


Título: Re: Crear un Programa en C que almacene N datos en un arreglo
Publicado por: Beginner Web en 15 Octubre 2018, 16:59 pm
Es cierto tiene razon declaralo fuera del main de esta forma queda mas elegante y no tenes que reescribir todo el codigo modificando el tamaño en cada modulo
const int TAMAÑOARREGLO=256;
typedef int arreglo[TAMAÑOARREGLO]; y lo usas en tu programa principal de este forma
programa principal()
{
arreglo miarreglo;
y luego lo llenas hasta donde declares otro tamaño n por ejemplo sera igual a 4, entonces llenas tu arreglo hasta la posicion 4 de tu arreglo; es decir desde la posicion 0 hasta la posicion 3;
for(int i=0;i<n;++i){agregar numero en miarreglo en la posicion i;} y asi
}
Pero todo dependera de tus necesidades, si asi te lo pide tu maestro asi sera, tambien puedes usar estructuras dinamicas que crecen hasta donde de la memoria ram


Título: Re: Crear un Programa en C que almacene N datos en un arreglo
Publicado por: WHK en 19 Octubre 2018, 03:48 am
No sale mas fácil hacer un redimensionado de memoria utilizando memcpy() o malloc() de stdlib.h para c y prevenir los desbordamientos?