Olaf "El Blanco"
2006-02-04 15:24:54 UTC
Empiezo con el tema...
Y si ves alguna mala costumbre, házmela saber.
¿Como puedo saber antes de ejecutar el código, si había o no memoria
suficiente?
#include <stdio.h>
#include <stdlib.h>
/* Carga un vector con enteros aleatorios. Devuelve la cantidad que han
cargado */
int carga_datos_a(int *EsteVector)
{
int cantidad, i;
printf ("Se cargará el vector con enteros aleatorios\n");
printf ("Ingrese la cantidad de elementos:\n");
printf ("--> ");
scanf ("%d", &cantidad);
EsteVector = (int*)malloc(cantidad * sizeof(int));
for (i=0; i<cantidad; i++)
*(EsteVector + i) = rand();
return cantidad;
}
/* Imprime Elemento del vector, direccion de celda de memoria, contenido */
void mostrar(int *EsteVector, int cantidad)
{
int i;
for (i=0; i<cantidad; i++)
/* Los int ocupan 2 bytes. */
printf ("%3d\t\t%10u\t\t%20d\n", i, &EsteVector + i + 2 ,
*(EsteVector + i));
}
int main()
{
int *vector;
int c;
/*
¿Porque en 'carga_datos' paso directamente el nombre del vector, o sea
la
direccion del primer elemento??? Y en 'mostrar' tengo que ponerle un
&??
*/
c = carga_datos_a(vector);
/* Carga datos al vector y decime cuantos datos quisieron cargarle */
mostrar(&vector, c);
/* Muestra el vector con la cantidad que te devuelve la anterior funcion
*/
free (vector);
system("PAUSE");
return 0;
}
Y si ves alguna mala costumbre, házmela saber.
¿Como puedo saber antes de ejecutar el código, si había o no memoria
suficiente?
#include <stdio.h>
#include <stdlib.h>
/* Carga un vector con enteros aleatorios. Devuelve la cantidad que han
cargado */
int carga_datos_a(int *EsteVector)
{
int cantidad, i;
printf ("Se cargará el vector con enteros aleatorios\n");
printf ("Ingrese la cantidad de elementos:\n");
printf ("--> ");
scanf ("%d", &cantidad);
EsteVector = (int*)malloc(cantidad * sizeof(int));
for (i=0; i<cantidad; i++)
*(EsteVector + i) = rand();
return cantidad;
}
/* Imprime Elemento del vector, direccion de celda de memoria, contenido */
void mostrar(int *EsteVector, int cantidad)
{
int i;
for (i=0; i<cantidad; i++)
/* Los int ocupan 2 bytes. */
printf ("%3d\t\t%10u\t\t%20d\n", i, &EsteVector + i + 2 ,
*(EsteVector + i));
}
int main()
{
int *vector;
int c;
/*
¿Porque en 'carga_datos' paso directamente el nombre del vector, o sea
la
direccion del primer elemento??? Y en 'mostrar' tengo que ponerle un
&??
*/
c = carga_datos_a(vector);
/* Carga datos al vector y decime cuantos datos quisieron cargarle */
mostrar(&vector, c);
/* Muestra el vector con la cantidad que te devuelve la anterior funcion
*/
free (vector);
system("PAUSE");
return 0;
}