Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: KarlaM en 22 de Febrero 2015, 22:58

Título: C++ matriz bidimensional dinamica crear un arreglo dinamico
Publicado por: KarlaM en 22 de Febrero 2015, 22:58
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;

}
Título: Re:C++ matriz bidimensional dinamica crear un arreglo dinamico
Publicado por: Ogramar 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