C/Visual C - Operaciones con matrices double

 
Vista:
sin imagen de perfil

Operaciones con matrices double

Publicado por Daniel (4 intervenciones) el 09/10/2014 04:20:55
Necesito implementar este programa para que una fila se pueda multiplicar por numeros decimales y negativos con double


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int matriz[10][10]; /* Matriz a la que se le intercambian filas */
    int fil, /* Numero de filas de la matriz */
        col, /* Numero de columnas de la matriz */
        fi, /* Fila a ser multiplicada*/
        mul; /* Factor de multiplicacion */
    int h,k,i,j,l,m;
    printf("Ingrese el numero de filas");
    scanf(" %d",&fil);
    printf("Ingrese el numero de columnas");
    scanf(" %d",&col);
    printf("Ingrese el numero de fila que va a multiplicar");
    scanf(" %d",&fi);
    printf("Ingrese el factor de multiplicacion");
    scanf(" %d",&mul);
    for (h=0; h<fil; h++)
    {
        for (k=0; k<col; k++)
        {
            scanf(" %d",&matriz [h][k]);
        }
        printf("\n");
    }
    printf("Su matriz es:");
    printf("\n");
    for (i=0; i<fil; i++)
    {
        for (j=0; j<col; j++)
        {
            printf(" %d",matriz [i][j]);
        }
        printf("\n");
    }
    Row_Elementary_Op_2( matriz, fil, col, fi, mul );
    printf("El resultado de la fila %d Por el factor %d es",fi,mul);
    printf("\n");
    printf("\n");
    for (l=0; l<fil; l++)
    {
        for (m=0; m<col; m++)
        {
            printf(" %d",matriz [l][m]);
        }
        printf("\n");
    }
}
void
Row_Elementary_Op_2( mtx, mtx_rows, mtx_cols, row, alfa )
int mtx[10][10]; /* Matriz a la que se le aplica la operacion */
int mtx_rows, /* Numero de filas de la matriz */
    mtx_cols, /* Numero de columnas de la matriz */
    row, /* Fila a ser multiplicada */
    alfa; /* Factor de multiplicacion */
{
    int aux;
    int i=0;
    for (i; i<=mtx_cols; i++ )
    {
        mtx[row][i]=mtx[row][i]*alfa;
    }
}
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

Operaciones con matrices double

Publicado por Capitan Kirk (97 intervenciones) el 09/10/2014 08:33:19
Para empezar, tanto la matriz como el factor de multiplicación deben ser de tipo double.
Al ingresar los datos de la matriz y del factor, el especificador debe ser %f (que es para double).
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

Operaciones con matrices double

Publicado por Chema (234 intervenciones) el 09/10/2014 18:27:34
Unos ejemplos que pueden ayudarte a comprender el tema.
Es un ejemplo un poco avanzado a tu nivel, lo siento, cosas simples no me motivan.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
 
#define AR_SIZE ( (10 * sizeof(int*)) + (10 * 10 * sizeof(int) ) )
 
int main(void){
	char *block;
	float **ptr;
	float *pc;
	float *ip;
	float result;
	int i, j ;
 
	block = malloc( AR_SIZE);
	pc = (float*)block;
	ptr = (float**)pc;
	pc+= 10;
 
	for ( i = 0 ; i < 10; i++,ptr++){
		 pc+=10;
		*ptr = (float*)pc;
	}
 
	ptr = (float**) block;
	ip =*ptr;
 
	for ( i = 0 ; i < 10; i++,ptr++){
		ip =*ptr;
		for ( j = 0 ; j < 10; j++, ip++)
			 *ip = j+i;
	}
 
	ptr = (float**) block;
	ip =*ptr;
 
	ptr[0][0] = 66.66;
	ptr[1][1] = 44.44;
	ptr[2][2] = 77.77;
	ptr[9][0] = 88.88;
 
	for ( i = 0 ; i < 10; i++,ptr++){
		ip =*ptr;
		printf("\n");
		for ( j = 0 ; j < 10; j++, ip++)
			 printf(" %6.3f",*ip);
	}
	printf("\n--------Suma----------\n");
 
	ptr = (float**) block;
	ip =*ptr;
	result = 0;
 
	for ( i = 0 ; i < 10; i++,ptr++){
		ip =*ptr;
		for ( j = 0 ; j < 10; j++, ip++) {
			result += *ip;
		}
		printf(" %6.3f\n",result);
		result = 0;
	}
 
	free(block);
	return 0;
}
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

Operaciones con matrices double

Publicado por Chema (234 intervenciones) el 09/10/2014 18:59:59
El mismo ejemplo anterior usando indices.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
 
#define AR_SIZE ( (10 * sizeof(int*)) + (10 * 10 * sizeof(int) ) )
int main(void){
	char *block;
	float **ptr;
	float *pc;
	float result;
	int i, j ;
 
	block = malloc( AR_SIZE);
	pc = (float*)block;
	ptr = (float**)pc;
	pc+= 10;
 
	for ( i = 0 ; i < 10; i++,ptr++){
		 pc+=10;
		*ptr = (float*)pc;
	}
 
	ptr = (float**) block;
 
	for ( i = 0 ; i < 10; i++){
		printf("\n");
		for ( j = 0 ; j < 10; j++){
			 ptr[i][j] = j+i;
		}
	}
 
	ptr[0][0] = 66.66;
	ptr[1][1] = 44.44;
	ptr[2][2] = 77.77;
	ptr[9][0] = 88.88;
 
	for ( i = 0 ; i < 10; i++){
		printf("\n");
		for ( j = 0 ; j < 10; j++){
			 printf(" %6.3f",ptr[i][j]);
		}
	}
 
	printf("\n--------Suma----------\n");
 
	for (result = 0, i = 0 ; i < 10; i++){
		printf("\n");
		for ( j = 0 ; j < 10; j++){
			 result += ptr[i][j];
		}
		 printf(" %6.3f",result);
		result = 0;
	}
 
 
	free(block);
	return 0;
}
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
sin imagen de perfil

Operaciones con matrices double

Publicado por Daniel (4 intervenciones) el 13/10/2014 21:31:08
Muchas gracias, enserio fue de gran utilidad tu aporte, en realidad estoy interesado en conocer mas acerca del mundo de la programación.
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