ProgIng - Programación en Ingeniería
Loading...
Searching...
No Matches
Ejemplo_037.c File Reference
#include <stdio.h>
#include <stdlib.h>
Include dependency graph for Ejemplo_037.c:

Go to the source code of this file.

Functions

int main (void)

Function Documentation

◆ main()

int main ( void )

Definition at line 13 of file Ejemplo_037.c.

14{
15 float **A, **B, **C, *pA, *pC;
16 int nA, mA, nB, mB, i, j, k;
17 FILE *fp;
18 do{
19 printf("Ingrese el numero de columnas de A: ");
20 scanf("%d", &nA);
21 printf("Ingrese el numro de renglones de A: ");
22 scanf("%d", &mA);
23 }while(nA<1||mA<1);
24 do{
25 printf("Ingrese el numero de columnas de B: ");
26 scanf("%d", &nB);
27 printf("Ingrese el numro de renglones de B: ");
28 scanf("%d", &mB);
29 }while(nB<1||mB<1||nB!=mA);
30 pA = (float*)malloc(nA*mA*sizeof(float));
31 if(pA==NULL)
32 return 1;
33 A = (float**)malloc(nA*sizeof(float*));
34 if(A==NULL)
35 {
36 free(pA);
37 return 2;
38 }
39 for(i=0; i<nA; i++)
40 A[i] = pA+i*mA;
41 B = (float**)malloc(nB*sizeof(float*));
42 if(B==NULL)
43 {
44 free(pA);
45 free(A);
46 return 3;
47 }
48 for(i=0; i<nB; i++)
49 {
50 B[i] = (float*)malloc(mB*sizeof(float));
51 if(B[i]== NULL)
52 {
53 free(pA);
54 free(A);
55 for(--i; i>-1; i--)
56 free(B[i]);
57 free(B);
58 return 4;
59 }
60 }
61 pC = (float*)malloc(nA*mB*sizeof(float));
62 if(pC==NULL)
63 {
64 free(pA);
65 free(A);
66 for(i=0; i<nB; i++)
67 free(B[i]);
68 free(B);
69 return 5;
70 }
71 C = (float**)malloc(nA*sizeof(float*));
72 if(C==NULL)
73 {
74 free(pA);
75 free(A);
76 for(i=0; i<nB; i++)
77 free(B[i]);
78 free(B);
79 free(pC);
80 return 6;
81 }
82 for(i=0; i<nA; i++)
83 C[i] = pC+i*mB;
84 for(i=0; i<nA; i++)
85 for(j=0; j<mA; j++)
86 {
87 printf("A[%d][%d] = ", i+1, j+1);
88 scanf("%f", A[i]+j);
89 }
90 for(i=0; i<nB; i++)
91 for(j=0; j<mB; j++)
92 {
93 printf("B[%d][%d] = ", i+1, j+1);
94 scanf("%f", B[i]+j);
95 }
96 for(i=0; i<nA; i++)
97 for(j=0; j<mB; j++)
98 for(k=0, C[i][j]=0; k<nB; k++)
99 C[i][j] += A[i][k]*B[k][j];
100 for(i=0; i<nA; i++)
101 for(j=0; j<mB; j++)
102 printf("C[%d][%d] = %f\n", i+1, j+1, C[i][j]);
103 fp = fopen("Matriz.txt", "w");
104 if(fp==NULL)
105 {
106 free(pC);
107 free(C);
108 for(i=0; i<nB; i++)
109 free(B[i]);
110 free(B);
111 free(pA);
112 free(A);
113 return 7;
114 }
115 for(i=0; i<nA; i++)
116 for(j=0; j<mB; j++)
117 fprintf(fp, "%f ", C[i][j]);
118 fclose(fp);
119 free(pC);
120 free(C);
121 for(i=0; i<nB; i++)
122 free(B[i]);
123 free(B);
124 free(pA);
125 free(A);
126 return 0;
127}