Dev - C++ - Multiplicacion de matriz por 2

 
Vista:
sin imagen de perfil

Multiplicacion de matriz por 2

Publicado por nico (1 intervención) el 23/10/2016 17:05:01
un programa que mediante un recorrido, llene una matriz con los siguientes valores:

1 2 4 8 16
2 4 8 16 32
3 6 12 24 48
4 8 16 32 64

Estoy tratandolo de hacer de esta forma pero en la primera fila y columna me salen 0 que hago ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main ()
{
 
int matrix[4][5];
int opc2=0;
for(int f =0; f<4;f++ )
{
 
cout<<"\n\n";
 
 
 
for(int c = 0;c<5;c++)
{
 
opc2=matrix[f][c]=(f*2)*(c*2);
 
cout<<opc2;
 
 
cout<<"\t\t";
}
 
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Multiplicacion de matriz por 2

Publicado por Hector (45 intervenciones) el 24/10/2016 17:06:06
Hola nico, la primera sugerencia que te puedo dar es que empieces por tabular tu código, así sera mas fácil de leer. Aquí te dejo los cambios.

1. No necesitas otra variable para imprimir, utiliza el mismo array
2. El salto de linea lo deberías colocar al final de tu código para que no tengas un espacio al inicio, aunque ya eso es a mi preferencia
3. Para poder hacer el ejercicio, básicamente lo importante es que veas el patrón que sigue los valores a imprimir, por lo menos lo que vi fue que el valor de las columna inicial siempre es duplicado en las demás columnas.

Ejemplo si en la columna 0 el valor es 1, la columna que sigue dará 2 y luego 4,8 y así sucesivamente.

Entonces lo normal seria tomar la variable de la fila y duplicarla, pero como f inicia siempre en 0 deberías de sumarle un valor. Luego cuando recorras la columna que le sigue, tomas el valor del resultado anterior y lo vuelves a duplicar. Coloque un condicional para que cuando este en la columna inicial (c == 0) simplemente tome el valor de la fila y le sume 1.

1
2
3
4
5
if(c == 0){
  matrix[f][c] = (f + 1);
}else{
  matrix[f][c] = matrix[f][c-1] * 2;
}

Aquí te dejo el código con la solución completa.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
 
int main ()
{
	int matrix[4][5];
	// 1. No es necesario la variable opc2
 
	for(int f =0; f<4;f++ )
	{
		for(int c = 0;c<5;c++)
		{
			// 3.1. Con condicional
			if(c == 0){
				matrix[f][c] = (f + 1);
			}else{
				matrix[f][c] = matrix[f][c-1] * 2;
			}
 
			cout<<matrix[f][c]; // 4. Que imprima directamente de la matriz
			cout<<"\t\t";
		}
 
		// 2. Hace el salto de linea al final
		cout<<"\n\n";
	}
}

Te sugiero que busques ejercicios de matriz que se enfoquen en manipular las filas y las columnas, como el de imprimir la diagonal primaria y secundaria, un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar