Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ayuda con array dinamico

Estas en el tema de ayuda con array dinamico en el foro de C/C++ en Foros del Web. Hola, tengo un problema con el uso de arrays dinamicos. he conseguido corregir todos los errores que daba al compilar pero al ejecutarse el programa ...
  #1 (permalink)  
Antiguo 31/10/2010, 13:36
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
ayuda con array dinamico

Hola, tengo un problema con el uso de arrays dinamicos. he conseguido corregir todos los errores que daba al compilar pero al ejecutarse el programa da este error:

Infracción de acceso al escribir en la ubicación 0xcdcdcdcd.

saludos y gracias


Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. void introducir(int *, double numeros[]);
  6. void ordenar(int n, double numeros[]);
  7. void buscar();
  8.  
  9. int main()
  10. {
  11.     int n=0;
  12.     double *numeros = NULL;
  13.  
  14.     introducir(&n, numeros);
  15.     ordenar(n, numeros);
  16.     buscar();
  17.  
  18.     system("PAUSE");
  19.     return 0;
  20. }
  21.  
  22.  
  23.  
  24.  
  25. void introducir(int *pn, double *numeros)
  26. {
  27.     int i = 0;
  28.     int bites = 0, q=0;
  29.     printf("cantidad de numeros: ");
  30.     scanf("%d", pn);
  31.  
  32.     q = *pn;
  33.     bites = q * sizeof(int);
  34.  
  35.     if((numeros = (double *)malloc(bites)) == NULL)
  36.     {
  37.         printf("insuficiente espacio de memoria\n");
  38.         //return -1;
  39.     }
  40.    
  41.  
  42.     printf("\nIntroducir numeros: ");
  43.     for(i; i<*pn; i++)
  44.     {
  45.         scanf("%lf", numeros[i]);  // <=== el error lo da al llegar a aqui
  46.     }
  47.  
  48.     //imprimir datos para ver que estan bien:
  49.  
  50.     printf("\nIMPRIMIR DATOS:\n");
  51.     for(i=0; i<*pn; i++)
  52.     {
  53.         printf("\n=>%lf", numeros[i]);
  54.     }
  55. }
  56.  
  57. void ordenar(int n, double numeros[])
  58. {
  59.     int i = 0, j = 0;
  60.     double buffer = 0;
  61.     for(j;j<n-1;j++)
  62.     {
  63.         for(i=0; i<n; i++)
  64.         {
  65.             if(numeros[i] < numeros[i+1])
  66.             {
  67.                 numeros[i] = buffer;
  68.                 numeros[i] = numeros[i+1];
  69.                 numeros[i+1] = buffer;
  70.             }
  71.         }
  72.     }
  73.     printf("\nIMPRIMIR DATOS:\n");
  74.     for(i=0; i<n; i++)
  75.     {
  76.         printf("\n=>%lf", numeros[i]);
  77.     }
  78. }
  79.  
  80. void buscar()
  81. {
  82. }
  #2 (permalink)  
Antiguo 31/10/2010, 17:19
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: ayuda con array dinamico

A primera vista
vos calculas el espacio para q enteros con esta instruccion: bites = q * sizeof(int);

Pero despues en esta instruccion lo casteas a doble:
if((numeros = (double *)malloc(bites)) == NULL)

Por lo que te esta faltando memoria. Proba cambiando int por double aqui:
bites = q * sizeof(double);

Etiquetas: dinamico
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:39.