Bloque 7.5: Matrices Dinamicas

Поділитися
Вставка
  • Опубліковано 13 гру 2024

КОМЕНТАРІ • 46

  • @cachaloteoscar467
    @cachaloteoscar467 3 роки тому +5

    Es increible como despues de tanto tiempo sigues ayudando a gente con tus videos, voy a 3ºESO y siempre me ha interesado el como iba la programación pero me parecía difícil. Empecé viendo tus videos hace pocas semanas y mira ya estoy aquí. Muchas gracias!!

  • @Ianjar1801
    @Ianjar1801 6 місяців тому

    Dios es bueno el video y me ha ayudado para una tarea a pesar de que este video ya ti 10 años pero hasta ahorita sigue funcionando

  • @christiansanchez6314
    @christiansanchez6314 6 років тому

    Muchas gracias bro, gracias a este video entendi al fin como se maneja la memeoria dinamica para matrices y el porque de la funcion malloc, que lastima que tiene tan poco likes tu video. Es el único que me ha ayudado!! Saludos

  • @lenincastillo7527
    @lenincastillo7527 6 років тому

    Muchas gracias por el aporte, me sirvio de mucho, saludos

  • @gymiiiju
    @gymiiiju 8 років тому +6

    realmente eres el papu de los papus

  • @tiexgameplay6107
    @tiexgameplay6107 8 місяців тому

    Muy bien explicado

  • @matiasaguilar1538
    @matiasaguilar1538 4 роки тому

    Hola, llevo haciendo el curso desde hace unas semanas y hasta ahora todo ha ido sobre ruedas, es muy didáctico y dinámico, sin embargo en este bloque he tenido unos problemas que no he sido capaz de resolver: a la hora de compilar el programa no suelta errores ni nada, pero en la ejecución no reserva el espacio de memoria solicitado para las matrices y hace cosas extrañas, he reescrito el codigo en varias ocasiones y aun así no consigo resolver el error. Te comparto lo que he escrito a ver si puedes darme una mano. Desde ya muchas gracias. el canal y los cursos son de lo mejor.
    Te dejo el código:
    #include
    #include
    int main () {

    int **m1;
    int **m2;
    int filas,colum,i,j;

    printf("Introduce el numero de filas: ");
    scanf("%i",&filas);

    printf("Introduce el numero de columnas: ");
    scanf("%i",&colum);

    m1 = (int**)malloc(filas*sizeof(int*));
    if (m1==NULL){
    printf("No se ha podido reservar memoria.
    ");
    exit(1);
    }
    for (i = 0; i < filas; i++){
    m1[i] = (int*)malloc(colum*sizeof(int));
    if (m1[i]==NULL){
    printf("No se ha podido reservar memoria.
    ");
    exit(1);
    }
    }

    for(i= 0; i

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  4 роки тому

      Buenas, utiliza el depurador, ahi veras como se esta comportando el codigo. Un saludo.

    • @620774404
      @620774404 4 роки тому

      Estas incrementando la i dos veces. Segundo for de la sección scanf("%i",&m1[i][j]); debes incrementar j

  • @xavidoze5952
    @xavidoze5952 6 років тому

    Eres un crak tio. me ha ayudado mucho este video 🤙🏻

  • @ordogbmx
    @ordogbmx 7 років тому

    Gracias Master!! Me quedó clarísimo!!!

  • @juliangonzaga333
    @juliangonzaga333 3 роки тому +2

    Cuando haces scanf y les con %i es por ser tipo entero, si lo declarara con float sería %f

  • @carlossantaella139
    @carlossantaella139 8 років тому

    ya entendi xD pero tuve que ir a otras fuentes de información aunque aprecio mucho tu intensión de explicar y gracias por eso hubiese usado valores predeterminados por ejemplo filas = 3; colum = 3; ya que estabas explicando en base a 3 columnas y filas en el ejemplo de la grafica

  • @christianovethalbacisneros5339
    @christianovethalbacisneros5339 9 років тому +13

    creo que se olvido liberar la memoria en este y en los siguientes videos.

  • @osvaldogarciareyes6158
    @osvaldogarciareyes6158 3 роки тому

    Gracias

  • @arsrivaszaredan8217
    @arsrivaszaredan8217 4 роки тому

    Excelente explicación :D

  • @iTiago98
    @iTiago98 10 років тому +7

    Bloque 7.2: Malloc y Realloc con Vector Dinamico en este vídeo (minuto 7:00) dices que junto al vector hay que poner tantos * como tenga el vector/matriz, restándole uno. En éste, sin embargo, has escrito m1 y m2 sin nigún *. ¿Son prescindibles o te equivocaste en el 7.2?

    • @lorxagamer6895
      @lorxagamer6895 7 років тому +2

      m1 = (int**)malloc(filas*sizeof(int*)); La primera vez se declara asi para indicar que es una matriz de ahi para darle memoria a los vectores dentro de la matriz se hace m1[i] = (int*)malloc(colum*sizeof(int)); por que son eso vectores dentro de una matriz y ya no es necesario poner los dos asteriscos **

  • @NeoGamerESP
    @NeoGamerESP 8 років тому +2

    perdona, si se creara una matriz de mas de 2 dimensiones de forma dinamica habria que poner por ejemplo ***m1?(para matriz de 3 dimensiones)

  • @dongnez
    @dongnez 4 роки тому +1

    Yo lo he realizado con funciones, no se si es correcto pero funciona:
    -------------------------------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------------------------------
    #include
    #define Max_filas 20
    #define Max_columnas 20
    // Declaracion Funciones
    void LecturaMatriz(int Matriz2x2[Max_filas][Max_columnas], int *filas, int *columnas);
    void ImprimirMatriz(int Matriz2x2[Max_filas][Max_columnas], int *filas, int *columnas);
    //Main
    void main(){
    int Matriz2x2[Max_filas][Max_columnas];
    int filas, columas;
    LecturaMatriz(Matriz2x2, &filas, &columas);
    printf("
    -Pa rellenar-
    ");
    ImprimirMatriz(Matriz2x2, &filas, &columas);
    printf("Terminado
    ");
    }
    //Funciones
    void LecturaMatriz(int Matriz2x2[Max_filas][Max_columnas], int *filas, int *columnas){
    printf("Dame el numero de filas: ");
    scanf("%d",filas);
    printf("Dame el numero de columnas: ");
    scanf("%d",columnas);
    int datos, DameFila = 1;
    //Tiene que ser < 2 porque es una matriz 2x2
    for ( int fila = 1; fila

  • @pablogarces3913
    @pablogarces3913 4 роки тому

    ta de pana hnitooo

  • @Pointgamer2001_LOL
    @Pointgamer2001_LOL 4 роки тому

    Excelente Vídeo, vaya que me ha gustado demasiado, he aquí mi DUDA: ¿Es posible crear un numero de matrices "n", y cada matriz con "x" columnas y "y" filas?

  • @LuisReyes-gs6jh
    @LuisReyes-gs6jh 4 роки тому

    lo tengo escrito igual, pero al poner los valores me marca que el programa dejo de funcionar.
    tiene algo que ver que lo haga en dev c++?
    o tengo un error?

  • @_Yeibi_
    @_Yeibi_ 5 років тому

    ¿Cómo se programaría una matriz dinámica donde solo quiero que las filas sean estáticas (p.e. 10) y que las columnas sean dinámicas? ¿Y viceversa?

  • @JesusRamos-vd4xz
    @JesusRamos-vd4xz 5 років тому

    Buenas noches, si no es una matriz cuadrada, ¿Qué se tiene que modificar en el código?
    Saludos
    Gracias

  • @zetta_2
    @zetta_2 3 місяці тому

    Pregunta: como hago para destruir la matriz (liberar la memoria)?

  • @josem1111
    @josem1111 5 років тому +2

    Y porque no libera la memoria con free?

    • @chuarmander
      @chuarmander 5 років тому +2

      se olvido claramente, es imprescindible

  • @carlossantaella139
    @carlossantaella139 8 років тому

    tengo varias dudas pero la que me causa mayor inquietud es por que cuando vas a poner las columnas pones por ejemplo m1[i] y xq usas un bucle cuando en las filas no lo usastes

    • @carlossantaella139
      @carlossantaella139 8 років тому

      +Carlos Santaella ya vi!! jjaja hay que ver que para programar hay que entender los detalles del proceso de casa paso

  • @carmensofiaorozcojaramillo5627
    @carmensofiaorozcojaramillo5627 10 років тому

    tengo una duda si v[2] es igual a v+2 entonces v[2][2] a que corresponde sin esos corchetes o no se puede de esa forma?

    • @cirx77
      @cirx77 6 років тому +1

      Asumiendo que es una matriz de 3*3 entonces corresponde a v+8 si no me equivoco..o sea
      v[0][0]=v+0,
      v[0][1]=v+1 ,
      v[0][2]=v+2,
      v[1][0]=v+3,
      v[1][1]=v+4,
      v[1][2]=v+5,
      v[2][0]=v+6,
      v[2][1]=v+7,
      v[2][2]=v+8..
      Se que esto se responde 3 años despues pero si a alguno le sirve..

  • @ZUK-DT-em4wf
    @ZUK-DT-em4wf 6 років тому

    Yo lo que no entiendo muy bien, es, por qué cada vez que se le asigna los valores a las filas/columnas solo es «m1[i]», por que una matriz es así «matriz[filas][columnas]», y «m1[i]» hace referencia solo a las filas, en los dos de los casos y aun así se crean las columnas........a no ser...que para eso sirvan los punteros....es la única cosa lógica que se me ocurre, o sea, **m1
    el primer puntero hace referencia a las filas y en el segundo (asignación de memoria ) se utiliza solo un puntero....
    matriz [*] [*] ======== matriz[filas]: con los dos punteros accedemos a las filas.
    matriz [ ] [*]=========matriz[columnas]: con uno, a las columnas. estoy en lo correcto???????????

  • @thrafiker10
    @thrafiker10 10 років тому

    duda: porque tenemos que inicializar solo m1 en filas y despues m1[i] en todas las columnas., no solo en una como en las filas.
    m1 = (int*) malloc (filas*sizeof(int));
    for(i=0; i

    • @pablopiedad90
      @pablopiedad90 7 років тому

      No entiendo muy bien tu pregunta, pero me aventuro a contestarte, como una matriz es un vector de vectores, y al ya haber reservado memoria para las filas, hay que reservar memoria para las columnas, y eso se hace por bucle. Esto es porque a cada fila le corresponden un numero concreto de columnas. Ademas, al tener mas de una fila, hemos de usar bucles para poder reservar toda la memoria de la matriz

  • @JoseGonzalez-yb7om
    @JoseGonzalez-yb7om 7 років тому

    PORQUE Y DONDE SALE LA VARIABLE MAT SI NUNCA LA DECLARO

  • @alejandropereyra438
    @alejandropereyra438 5 років тому

    Ami me salta un error aquí no se que he hecho mal.
    for(i=0;i

    • @alejandropereyra438
      @alejandropereyra438 5 років тому

      este es todo el código que he escrito :
      #include
      #include
      #include
      int main (){
      int filas,colum;
      int **m1;
      int **m2;
      int i , j;

      printf("Introduce el numero de filas: ");
      fflush(stdin);
      scanf("%i",&filas);

      printf("Introduce el numero de columnas: ");
      fflush(stdin);
      scanf("%i",&colum);

      //reservar espacio de memoria.

      m1=(int**)malloc(filas*sizeof(int*));
      if(m1==NULL)
      {
      printf("No se ha podido reservar espacio en memoria.");
      exit(1);
      }

      for(i=0;i

  • @Jeem0003
    @Jeem0003 9 років тому

    Saludos amigo, muy buen vídeo felicidades, tengo un problema, e tratado de usar el realloc para el aumento en una matriz dinámica, realice todo igual como lo hiciste tu, y al momento de aplicar el realloc solo me aumentan las columnas, sabes como aumentar filas?, te dejo una parte del algoritmo que estoy usando
    coutfx;
    coutcx;
    p=(int**) realloc(p,sizeof(int)*(inf+fx));
    for(int i=0;ip[i][j];
    }
    }
    cout

    • @EmpiezaAProgramar
      @EmpiezaAProgramar  9 років тому +2

      +jeem19961229 usas c++ y no c, el uso de calloc, malloc y realloc no te aseguro que sea igual.
      En el futuro si no haces las cosas igual que yo las enseño (usando C++ por ejemplo), mejor abstenerse de preguntar.
      Un saludo.

  • @Richard-xh5iw
    @Richard-xh5iw 5 років тому

    Hola ke tal, me podrias alludar. quiero saber si esta bien o que y que realice mal con este ejemplo. me podrias decir si es un Objeto dinámico con la forma que ise. o si está totalmente mal y no es dinámico o si. por favor.
    #include
    #include
    #include
    using namespace std;
    class AUTO
    {
    private:
    std::string _color;
    std::string _marca;
    int _precio;
    public:
    void ingresar(string nombre, string marca, int precio);
    };
    void AUTO::ingresar(string nombre, string marca, int precio)
    {

    cout

  • @edkaem259
    @edkaem259 8 років тому

    A mi igual con realloc me compila bien, miren:
    typedef struct {
    char *nombre;
    char *autor;
    }libro;
    void cambio(char aux[50]);
    int main(){
    char aux[50];
    libro JDT;
    printf("Introduce un nombre para el libro: ");
    fgets(aux,50,stdin);
    cambio(aux);
    JDT.nombre = (char*)realloc(JDT.nombre,(strlen(aux)+1)*sizeof(char));
    if(JDT.nombre == NULL) {
    printf("No se a podido reservar memoria.
    ");
    exit(1);
    }
    strcpy(JDT.nombre,aux);
    printf("Introduce un autor para el libro: ");
    fflush(stdin);
    fgets(aux,50,stdin);
    cambio(aux);
    JDT.autor = (char*)malloc((strlen(aux)+1)*sizeof(char));
    if(JDT.autor == NULL) {
    printf("No se a podido reservar memoria.
    ");
    exit(1);
    }
    strcpy(JDT.autor,aux);
    printf ("%s.
    ",JDT.nombre);
    printf ("%s.
    ",JDT.autor);
    free(JDT.nombre);
    free(JDT.autor);
    system("pause");
    return 0;
    }
    void cambio(char aux[50]){
    int i, temp = 0;
    for(i=0; i

  • @jaimesotorodriguez3325
    @jaimesotorodriguez3325 3 роки тому

    No se puede ver mas borroso y chiquito el codigo?