elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++] Matrices
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C++] Matrices  (Leído 2,974 veces)
C--

Desconectado Desconectado

Mensajes: 7



Ver Perfil
[C++] Matrices
« en: 19 Noviembre 2012, 06:11 am »

Hola a todos..... tengo una duda existencial que aun no puedo resolver... necesito crear una matriz cuadrada de dimension n ingresada por el usuario por consola y luego el programa imprime la matriz con determinada forma creada por mi.

El codigo es el siguiente:

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

void printMatriz(int m[][], int n){

    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            cout << m[i][j];
            if(j==n-1) cout << endl;
        }
    }
    cout << endl;

}

void forma(int m[][], int n){

    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            if(i==0) m[i][j] = 1;
            if(j==0||j==n-1) m[i][j] = 1;
            if(i==n-1) m[i][j] = 1;
        }
    }
    printMatriz(m,n);

}

int main(){

    int n = -1;
    int f;
    do{
        do{
            cout << "Ingrese dimension de matriz cuadrada mayor a 4: ";
            cin >> n;
            if(n==0) break;
        }while(n<5);
        int m[n][n];
        forma(m,n);        
    }while(n!=0);
    return 0;

}

Sé que esta mal la recepción de la matriz en las funciones, pero estoy perdido en como hacerlo funcionar.

Dado el código anterior, ¿Cuáles serían las modificaciones que ustedes le harían para realizar lo que quiero?
No es necesario que lo expliquen, sólo escriban el código funcional, con el menor numero de cambios posibles, así yo me encargo de investigar bien cómo es que funciona (si explican, mejor (más rapido). Si no, bien igual, que yo me craneo :P).

Saludos y gracias.


« Última modificación: 19 Noviembre 2012, 06:18 am por C-- » En línea

ecfisa

Desconectado Desconectado

Mensajes: 114


Ver Perfil
Re: [C++] Matrices
« Respuesta #1 en: 19 Noviembre 2012, 12:24 pm »

Hola.

Un ejemplo:
Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6.  
  7. void llenar(int **, int);
  8. void mostrar(int **, int);
  9.  
  10. int main()
  11. {
  12.  int **mat, n, f;
  13.  
  14.  srand(time(NULL));
  15.  do{
  16.    cout << "Dimension de la matriz cuadrada: ";
  17.    cin >> n;
  18.  } while ( n < 5 || n == 0);
  19.  if (n) {
  20.    mat = new int*[n];
  21.    for(int f=0; f < n; f++) mat[f] = new int[n];
  22.    llenar(mat,n);
  23.    mostrar(mat,n);
  24.  }
  25.  return 0;
  26. }
  27.  
  28. void llenar(int **m, int n) {
  29.  for(int i=0;i<n; i++)
  30.    for(int j=0; j<n; j++) m[i][j] = rand()%99;
  31. }
  32.  
  33. void mostrar(int **m, int n) {
  34.  for(int i=0;i<n;i++) {
  35.    for(int j=0;j<n;j++) {
  36.      cout.width(4);
  37.      cout << left << m[i][j];
  38.    }
  39.    cout << endl;
  40.  }
  41. }
  42.  


Saludos.


En línea

C--

Desconectado Desconectado

Mensajes: 7



Ver Perfil
Re: [C++] Matrices
« Respuesta #2 en: 19 Noviembre 2012, 20:39 pm »

Excelente!! Hiciste exactamente lo que pedía :)
MUY agradecido.

Sólo me quedó una duda: Ya que la matriz se creó con new, ¿No es necesario poner en algun lado el comando delete para liberar memoria (en mi caso, al final del do-while del main que creé y antes del return, por ejemplo), y de ser así, cómo quedaría en el codigo para liberar esta matriz en particular?
« Última modificación: 19 Noviembre 2012, 22:41 pm por C-- » En línea

ecfisa

Desconectado Desconectado

Mensajes: 114


Ver Perfil
Re: [C++] Matrices
« Respuesta #3 en: 20 Noviembre 2012, 02:26 am »

Hola.
Citar
Sólo me quedó una duda: Ya que la matriz se creó con new, ¿No es necesario poner en algun lado el comando delete para liberar memoria
Si, totalmente!! Te pido mil disculpas por el olvido. :(

Código
  1.  ...
  2.  for(int i=0;i < n; i++) delete [] mat[i];
  3.  delete [] mat;
  4.  return 0;
  5. }
  6.  

Saludos.
« Última modificación: 20 Noviembre 2012, 02:48 am por ecfisa » En línea

C--

Desconectado Desconectado

Mensajes: 7



Ver Perfil
Re: [C++] Matrices
« Respuesta #4 en: 21 Noviembre 2012, 01:14 am »

Muy agradecido nuevamente :)

Salu2!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
matrices en C#
Programación General
volterra 4 10,540 Último mensaje 18 Mayo 2010, 06:26 am
por Og.
matrices
Programación C/C++
aral90 2 2,503 Último mensaje 9 Diciembre 2011, 20:13 pm
por aral90
matrices
.NET (C#, VB.NET, ASP)
legomanticore 4 3,824 Último mensaje 14 Mayo 2012, 03:02 am
por $Edu$
matrices en c
Programación C/C++
ALONSOQ 9 5,166 Último mensaje 27 Junio 2012, 05:15 am
por twins
matrices
Programación C/C++
lorderick 3 3,370 Último mensaje 8 Septiembre 2012, 05:12 am
por CSQCasimiro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines