Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Matrices reemplazo de numeros

Estas en el tema de Matrices reemplazo de numeros en el foro de C/C++ en Foros del Web. Desarrollar un algoritmo en C++ que dado un número entero y una matriz en un archivo de texto plano, cree una nueva matriz donde se ...
  #1 (permalink)  
Antiguo 22/11/2015, 08:34
 
Fecha de Ingreso: noviembre-2015
Mensajes: 3
Antigüedad: 8 años, 5 meses
Puntos: 0
Información Matrices reemplazo de numeros

Desarrollar un algoritmo en C++ que dado un número entero y una matriz en un archivo de texto plano, cree una nueva matriz donde se reemplacen todos los números mayores al número dado por un uno (1) y todos los menores o iguales por un cero (0).

debo usar bool u otro tipo de dato ??
debo condicionar en la funcion "componentes_matriz" ?
me


#include <iostream>
#include <fstream>
#include <cstdlib>


using namespace std;

int** crear_matriz(int n, int m){
int** matriz = new int*[n];
for(int i = 0; i < n; i++){
matriz[i] = new int[m];
};
return matriz;
};

void liberar_matriz(int** matriz, int n, int m){
for(int i = 0; i < n; i++){
delete[] matriz[i];
};
delete[] matriz;
return;
};

int leer_int(istream& is){
int a;
is >> a;
return a;
};

int** leer_matriz(istream&is, int** x, int n, int m){
for (int i = 0; i < n ; i++){
for (int j = 0; j < m; j++){
x[i][j] = leer_int(is);
};
};
};

int** componentes_matriz (int z, int** x, int n, int m){
int** y = crear_matriz(n,m);
for (int i = 0; i < n ; i++){
for (int j = 0; j < m; j++){
y[i][j] = x[i][j] - z;
};
};
return y;
}

int main()
{
cout << "escriba un numero" << endl;
int z;
cin >> z;
int n=3;
int m=3;
ifstream ifs("matriz.txt");
int** x = crear_matriz(n,m);
x = leer_matriz(ifs, x, n, m);
int** y = componentes_matriz (z,x,n,m);
for (int i = 0; i < n ; i++){
for (int j = 0; j < m; j++){
if (y > 0){
cout << false << '\t';
}else{
cout << true << '\t';
};
};
cout << endl;
};
liberar_matriz(x,n,m);
ifs.close();
return 0;
}
  #2 (permalink)  
Antiguo 22/11/2015, 09:03
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Matrices reemplazo de numeros

Le pides un número al usuario, lees la matriz y la recorres. Si el elemento actual es mayor o igual al dado por el usuario, lo sustituyes por un 1, en caso contrario lo sustituyes por un 0.

Lo que no entiendo es la función componentes_matriz. No te están pidiendo que hagas una resta sino una comparación.

Para el reemplazo no necesitas ningún bool. Con un if-else te vale.

Ah sí, si sigues empeñado en crear dos matrices, x e y, tienes que acordarte de liberar ambas reservas de memoria... Únicamente estas liberando la memoria de x.

Un saludo
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.
  #3 (permalink)  
Antiguo 22/11/2015, 10:11
 
Fecha de Ingreso: noviembre-2015
Mensajes: 3
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Matrices reemplazo de numeros

Es decir que podria asignarle el valor a de x a y en la funcion componentes_matriz y luego en el main hacer la comparación de esta forma ?



Código C++:
Ver original
  1. int** componentes_matriz (int z, int** x, int n, int m){
  2.     int** y = crear_matriz(n,m);
  3.     for (int i = 0; i < n ; i++){
  4.         for (int j = 0; j < m; j++){
  5.                 y[i][j] = x[i][j];
  6. };
  7. };
  8. return y;
  9. };
  10.  
  11. int main()
  12. {
  13.     cout << "escriba un numero" << endl;
  14.     int z;
  15.     cin >> z;
  16.     int n=3;
  17.     int m=3;
  18.     ifstream ifs("matriz.txt");
  19.     int** x = crear_matriz( n, m);
  20.     x = leer_matriz(ifs, x, n, m);
  21.     int** y = componentes_matriz ( z, x, n, m);
  22.     for (int i = 0; i < n ; i++){
  23.         for (int j = 0; j < m; j++){
  24.                 if (y[i][j] > z){
  25.                 cout << "0" << '\t';
  26.     }else{
  27.         cout << "1" << '\t';
  28.     };
  29.     };
  30.     cout << endl;
  31.     };
  32.     liberar_matriz(x,n,m);
  33.     liberar_matriz(y,n,m);
  34.     ifs.close();
  35.     return 0;
  36. }
  #4 (permalink)  
Antiguo 22/11/2015, 15:37
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Matrices reemplazo de numeros

Es una forma de hacerlo. Lo que no entiendo es por qué creas y en vez de trabajar todo el rato sobre x.

Lo único que te podría decir el que vea tu código es que realmente no estás modificando un array sino simplemente sacando valores por pantalla. Creo que sería más correcto modificar la matriz y luego imprimirla.

Por cierto, no hace falta poner punto y coma después de cerrar una llave }. Eso sólo es necesario cuando la llave finaliza una clase, un struct o un enum.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.
  #5 (permalink)  
Antiguo 22/11/2015, 21:19
 
Fecha de Ingreso: noviembre-2015
Mensajes: 3
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Matrices reemplazo de numeros

graciaas , ya lo pude terminar.

Etiquetas: matriz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:29.