#include <stdio.h>
#include <stdlib.h>
Go to the source code of this file.
|
| double * | crearMat (int r, int c) |
| double ** | crearMatC (int r, int c) |
| double ** | crearMatD (int r, int c) |
| int | capturar (double *M, int r, int c, char *str) |
| int | imprimir (double *M, int r, int c) |
| int | imprimirM (double **M, int r, int c) |
| double * | multiplicar (double *M1, int r1, int c1, double *M2, int r2, int c2) |
| double ** | multiplicarM (double **M1, int r1, int c1, double **M2, int r2, int c2) |
| int | capturarM (double **M, int r, int c, char *str) |
| int | liberar (double **M, int r) |
| int | main (int argc, char *argv[]) |
◆ capturar()
| int capturar |
( |
double * | M, |
|
|
int | r, |
|
|
int | c, |
|
|
char * | str ) |
Definition at line 52 of file Ejemplo040.c.
53{
54 int i, j;
55 for(i=0; i<r; i++)
56 for(j=0; j<c; j++)
57 {
58 printf("%s[%d][%d] = ", str, i+1, j+1);
59 scanf(
"%lf",
M+c*i+j);
60 }
61 return 0;
62}
◆ capturarM()
| int capturarM |
( |
double ** | M, |
|
|
int | r, |
|
|
int | c, |
|
|
char * | str ) |
Definition at line 129 of file Ejemplo040.c.
130{
131 int i, j;
132 for(i=0; i<r; i++)
133 for(j=0; j<c; j++)
134 {
135 printf("%s[%d][%d] = ", str, i+1, j+1);
136 scanf(
"%lf",
M[i]+j);
137 }
138 return 0;
139}
◆ crearMat()
| double * crearMat |
( |
int | r, |
|
|
int | c ) |
Definition at line 4 of file Ejemplo040.c.
5{
7 M = (
double*)malloc(r*c*
sizeof(
double));
9 return NULL;
11}
◆ crearMatC()
| double ** crearMatC |
( |
int | r, |
|
|
int | c ) |
Definition at line 13 of file Ejemplo040.c.
14{
16 int i;
17 M = (
double**)malloc(r*
sizeof(
double*));
19 return NULL;
20 M[0] = (
double*)malloc(r*c*
sizeof(
double));
22 {
24 return NULL;
25 }
26 for(i=1; i<r; i++)
29}
◆ crearMatD()
| double ** crearMatD |
( |
int | r, |
|
|
int | c ) |
Definition at line 31 of file Ejemplo040.c.
32{
34 int i;
35 M = (
double**)malloc(r*
sizeof(
double*));
37 return NULL;
38 for(i=0; i<r; i++)
39 {
40 M[i] = (
double*)malloc(c*
sizeof(
double));
42 {
43 for(--i; i>-1; i--)
46 return NULL;
47 }
48 }
50}
◆ imprimir()
| int imprimir |
( |
double * | M, |
|
|
int | r, |
|
|
int | c ) |
Definition at line 64 of file Ejemplo040.c.
65{
66 int i, j;
67 for(i=0; i<r; i++)
68 {
69 for(j=0; j<c; j++)
70 printf(
"%.4lf\t",
M[c*i+j]);
71 printf("\n");
72 }
73 return 0;
74}
◆ imprimirM()
| int imprimirM |
( |
double ** | M, |
|
|
int | r, |
|
|
int | c ) |
Definition at line 76 of file Ejemplo040.c.
77{
78 int i, j;
79 for(i=0; i<r; i++)
80 {
81 for(j=0; j<c; j++)
82 printf(
"%.4lf\t",
M[i][j]);
83 printf("\n");
84 }
85 return 0;
86}
◆ liberar()
| int liberar |
( |
double ** | M, |
|
|
int | r ) |
Definition at line 141 of file Ejemplo040.c.
142{
143 int i;
144 for(i=0; i<r; i++)
147 return 0;
148}
◆ main()
| int main |
( |
int | argc, |
|
|
char * | argv[] ) |
Definition at line 150 of file Ejemplo040.c.
151{
152 int rA, rB, cA, cB;
153 double **A, **B, **C;
154 do{
155 printf("Ingrese el numero de renglones de A: ");
156 scanf("%d", &rA);
157 }while(rA<1);
158 do{
159 printf("Ingrese el numero de columnas de A: ");
160 scanf("%d", &cA);
161 }while(cA<1);
163 if(A==NULL)
164 return 1;
166 do{
167 printf("Ingrese el numero de renglones de B: ");
168 scanf("%d", &rB);
169 }while(rB<1);
170 do{
171 printf("Ingrese el numero de columnas de B: ");
172 scanf("%d", &cB);
173 }while(cB<1);
175 if(B==NULL)
176 {
177 free(A[0]);
178 free(A);
179 return 2;
180 }
183 if(C==NULL)
184 {
185 free(A[0]);
186 free(A);
188 return 4;
189 }
190 printf("A\n");
192 printf("B\n");
194 printf("C\n");
196 free(A[0]);
197 free(A);
199 free(C);
200 return 0;
201}
int capturarM(double **M, int r, int c, char *str)
double ** multiplicarM(double **M1, int r1, int c1, double **M2, int r2, int c2)
int liberar(double **M, int r)
double ** crearMatD(int r, int c)
double ** crearMatC(int r, int c)
int imprimirM(double **M, int r, int c)
◆ multiplicar()
| double * multiplicar |
( |
double * | M1, |
|
|
int | r1, |
|
|
int | c1, |
|
|
double * | M2, |
|
|
int | r2, |
|
|
int | c2 ) |
Definition at line 88 of file Ejemplo040.c.
89{
90 int i, j, k;
91 double *M3;
92 if(c1!=r2)
93 {
94 printf("Error: En el tamaño de las matrices.\n");
95 return NULL;
96 }
98 if(M3==NULL)
99 return NULL;
100 for(i=0; i<r1; i++)
101 for(j=0; j<c2; j++)
102 for(k=0, M3[i*c1+j]=0; k<c1; k++)
103 M3[i*c2+j] += M1[i*c1+k]*M2[k*c2+j];
104
105
106
107 return M3;
108}
double * crearMat(int r, int c)
◆ multiplicarM()
| double ** multiplicarM |
( |
double ** | M1, |
|
|
int | r1, |
|
|
int | c1, |
|
|
double ** | M2, |
|
|
int | r2, |
|
|
int | c2 ) |
Definition at line 110 of file Ejemplo040.c.
111{
112 int i, j, k;
113 double **M3;
114 if(c1!=r2)
115 {
116 printf("Error: En el tamaño de las matrices.\n");
117 return NULL;
118 }
120 if(M3==NULL)
121 return NULL;
122 for(i=0; i<r1; i++)
123 for(j=0; j<c2; j++)
124 for(k=0, M3[i][j]=0; k<c1; k++)
125 M3[i][j] += M1[i][k]*M2[k][j];
126 return M3;
127}