Crear un Programa en C que almacene N datos en un arreglo

Iniciado por GeorgeDef, 14 Octubre 2018, 23:40 PM

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

GeorgeDef

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();
}

MAFUS

No se puede declarar un array estático usando una variable para dimensionarlo.

GeorgeDef

Entonces si  no es mucha molestia me podrias decir como declararlo para poder usarlo sin problemas?

Beginner Web

#3
Mmmmm

Código (cpp) [Seleccionar]
#include<stdio.h>
#include<windows.h>
#include<conio.h>
main()
{
  int i,n;
  printf("Cuantos datos desea almacenar: ");
  scanf("%d", &n);
  int num[n];
  for(i=0;i<n;i++)
  {
     printf("Teclea el Valor %d: ", (i+1));
     scanf("%d", &num);//scanf("%d",&num[i]);//ummm...
  }
  system("PAUSE");
  system("CLS");
  printf("El arreglo quedo:\n");
  for(i=0;i<n;i++)
  {
     printf("%d,", num);//printf("%d,", num[i]);//ummm...
  }
  getche();
}
7w7

GeorgeDef

ya quedo resuelto mi problema, muchas gracias
Cita de: Beginner Web en 15 Octubre 2018, 00:03 AM
Mmmmm

Código (cpp) [Seleccionar]
#include<stdio.h>
#include<windows.h>
#include<conio.h>
main()
{
   int i,n;
   printf("Cuantos datos desea almacenar: ");
   scanf("%d", &n);
   int num[n];
   for(i=0;i<n;i++)
   {
      printf("Teclea el Valor %d: ", (i+1));
      scanf("%d", &num);//scanf("%d",&num[i]);//ummm...
   }
   system("PAUSE");
   system("CLS");
   printf("El arreglo quedo:\n");
   for(i=0;i<n;i++)
   {
      printf("%d,", num);//printf("%d,", num[i]);//ummm...
   }
   getche();
}


MAFUS

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.

Beginner Web

#6
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
7w7

WHK

No sale mas fácil hacer un redimensionado de memoria utilizando memcpy() o malloc() de stdlib.h para c y prevenir los desbordamientos?