Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/05/2014, 08:54
Avatar de Drewermerc
Drewermerc
 
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 3 meses
Puntos: 5
Respuesta: Suma de 2 Vectores en DevC

hola vangod.
bueno pues no es tan dificil como se veo o dice con un par de practicas ya te vas dando cuenta de como funciona es cierto que habeses tienes que tener cierto cudados pero bueno en lo personal no es muy complicado.

hola Designss.
bueno ssolo agrgando algo a la informacion de codigo que te proporciono vangodp yo le agregaria calloc y realloc.
ya que calloc aparte de reservar memoria tambien te la inicializa con 0 y realloc esta redimenciona el tamaño de espacio de memoria por ejemplo si nesesitas un espacio inical de 3 y despues as adelante en tu programa de 5 solo aplicas realloc y la memoria la redmencionas a 5 espacios. aqu te dejo el codigo de vangodp con estas funciones.

Código C:
Ver original
  1. #include <stdio.h>
  2.     #include <stdlib.h>
  3.     int main () {
  4.         //======================================================================
  5.         int numeroElementos;
  6.         int * vector;// una tabla es un puntero que apunta al primer objeto de una cadena, este sera nuestro puntero    
  7.         //======================================================================  
  8.         printf ( "¿Cuántos elementos quieres? " );
  9.         scanf ( "%d", &numeroElementos );  //Ahora si pedimos el tamaño que va tener eso en el heap
  10.      
  11.         //======================================================================  
  12.         //malloc reserva la cantidad de numeroElementos multiplicado por el tamaño de un int si por
  13.         //ejemplo en nuestro ordenador un int tiene 4 bytes sera el numero que ingresemos multiplicado por 4.
  14.         //Si vamos gradar float el calculo sera numeroElementos * sizeof ( float ) y asi para todos los tipos ;)
  15.         vector = ( int * ) malloc ( sizeof ( int ), sizeof( int ) );  
  16.                
  17.         //======================================================================  
  18.         //calloc reserva la cantidad de numeroElementos, el tamaño de un int si por
  19.         //ejemplo en nuestro ordenador un int tiene 4 bytes sera el numero que ingresemos multiplicado por 4.
  20.         //Si vamos gradar float el calculo sera numeroElementos * sizeof ( float ) y asi para todos los tipos ;)
  21.         //a diferencia de malloc es que los dos elementos se ponen separados asi como se muestra acontinuacion
  22.         //estructura de la funcion es void *calloc(size_t nmemb, size_t size);
  23.         // en nmemb la catidad de memoria a reservar y despues d ela coma  va el tipo de datos que se quiere reservar ya sea int, cloat etc
  24.         vector = ( int * ) calloc ( sizeof ( int ), sizeof( int ) );
  25.  
  26.         //lo que hace realloc es redimencionar  el espacio de memoria por ejemplo con calloc inicializamos solo un espacio de tipo
  27.         //int con realloc lo ponemos redimecionar a 2, 3 , 4 etc. y si queremos redimencionar mas solo tenemos que volver a poner
  28.         // realloc con nose 6, 7, 8 etc.
  29.         // estructura de la funcion es void *realloc(void *ptr, size_t size);
  30.         // *ptr es el puntero a edireccionar en este caso vector y la coma es el numero de espacios que se quieres ocupas ya sea
  31.         //4, 5, 6, 7, 8 etc
  32.         vector = ( int * ) realloc (vector, 5);
  33.        
  34.         //======================================================================
  35.         // Eso es muy importante ya que comprueba que se aya creado nuestra tabla, caso no se hubiera creado
  36.         //no iba a saber y entonces el programa se cerraria de forma inesperada cuando le asignamos una variable,
  37.         //como la memoria dinámica no se libera sola..
  38.         //quedaría llena con cosas que allí habíamos puesto anteriormente, si una sola variable falla al crearla
  39.         //deberías mostrar un mensaje de error y borrar todo lo anterior o bien puedes volver a intentar crear la tabla pero si no logras,
  40.         //estas obligado a liberas lo que antes habias creado antes de cerrar el programa ;)
  41.         //¡Recuerdalo! Jamas usar una tabla que no se cree correctamente o el programa se crashea ok;)    
  42.         if ( vector == NULL ) {
  43.             perror ( "Problemas reservando memoria" );
  44.             exit ( 1 );
  45.         }
  46.      
  47.      
  48.      
  49.         //======================================================================  
  50.         // trabajamos con el vector
  51.         //Una vez creado y comprobado lo usas de manera normal como una tabla normal solo que a esa si le ibas a poder decir el
  52.         //tamaño que tiene antes de crearla.
  53.      
  54.      
  55.      
  56.         //======================================================================  
  57.         // lo liberamos
  58.         //Como dije antes la memoria dinámica no se libera sola, debes liberarla antes, lo que no se es
  59.         //si tendrías que liberar antes a cada posición de la tabla[0],tabla[1]tabla[2]... como dije desconozco malloc y familia XD
  60.         free ( vector );
  61.        
  62.         return 0;
  63.     }
solo puedes usar malloc o calloc solas, no juntas si usas malloc no puedes usar calloc y si usas calloc no puedes usar malloc.
bueno espero que te sea util esto.
saludos.
drewermerc.