Autor Tema: C++ matriz bidimensional dinamica crear un arreglo dinamico  (Leído 18894 veces)

KarlaM

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Necesito ayuda con este programa que me dejaron de tarea, ya logré hacer casi todo menos la funcion para pedir los datos que llenaran la matriz. O si no de que otra forma podría hacer esto?

Escribe un programa que tenga dos funciones:
   * Una funcion que genere una matriz dinámica de M renglones por N columnas y que regrese un apuntador a esa matriz.
   *Otra funcion que reciba el apuntador devuelto por la funcion anterior, encargada de leer de la entrada estandar los valores necesarior para llenar la matriz.

   Observaciones:

    *Asuma que la matriz es de enteros.
    *La funcion main invoca las dos funciones.


Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
void generaMatriz( int **, int *, int * );
 void leeDatos( int **, int *, int * );
int main()
{
int **matriz, x, y;

generaMatriz( matriz, &x, &y );

printf("n: %d, m: %d", x, y);

leeDatos( matriz, &x, &y );

getchar();
return(0);


}

void generaMatriz( int **matriz, int *x, int *y )
{
int i, m, n;

printf("Ingresa numero de filas: ");
scanf("%d", &m); fflush(stdin);

printf("Ingresa numero de filas: ");
scanf("%d", &n); fflush(stdin);

*x=m;
*y=n;

matriz=(int **)malloc(sizeof(int *)*m);

for(i=0; i<n; i++)
{
matriz[i]=(int *)malloc(sizeof(int )*n);
}

return;
}

 void leeDatos( int **matriz, int *m, int *n )
{
int i, j;

for(i=0; i<(*m); i++ )
{
for(j=0; j<(*n); j++)
{
printf("Ingresa numero en posicion [%d][%d]: ", i, j );
scanf("%d", matriz[i][j]); fflush(stdin);
}
}

return;

}
« Última modificación: 23 de Febrero 2015, 12:27 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:C++ matriz bidimensional dinamica crear un arreglo dinamico
« Respuesta #1 en: 23 de Febrero 2015, 12:28 »
Hola creo que a partir de este ejemplo te puedes guiar para resolverlo:

Código: [Seleccionar]
#include <iostream>
using namespace std;

int main() {
    int i,j,f,c;

    cout << "Introduce el numero de filas" << endl;
    cin >> f;
    cout << "Introduce el numero de columnas" << endl;
    cin >> c;

    // creamos la matriz !
    int **M = new int* [f];
    for (i = 0; i < f; i++)
        M[i] = new int[c];

    // Comprobamos
    if (!M) {
        cout << "No se puede reservar el espacio" << endl;
        return 1;
    }

    cout << "Introduzca la matriz" << endl;
    for (i = 0; i < f; i++)
        for (j = 0; j < c; j++)
            cin >> M[i][j];

    cout << "Mostrar la matriz" << endl;
    for (i = 0; i < f; i++) {
        for (j = 0; j < c; j++)
            cout << M[i][j] << " ";
        cout << endl;
    }
    delete [] M;

    return 0;
}

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".