Está en la página 1de 4

1 #include <stdio.

h>
2 #include <stdlib.h>
3 //Nombre del equipo: K-UAMitos, Grupo:CTG10, Fecha de realización del código ejecutable:04/01/23
4 //Descripción del programa: Programa que Tabula las precipitaciones en mm de la estación
climotologics UAM-Azcapotzalco y determina los totales, máximos, mínimos y promedios tanto
anuales como mensuales de las precipitaciones registradas en el periodo de |970 a 2021.
5 //Integrantes: Sosa Vazquez Fernando, Lopez Reyes Alicia,Jimenez Mendoza Karin Obeth.
6 //Diccionario de variables de entrada:
7 //va= vector que almacena los años (años)
8 //ml= Matriz de lluvias (mm)
9 //Diccionario de variables de salida:
10 //sumaa= vector que almacena los totales anuales de lluvias (mm)
11 //mínimoa =vector que almacenan los valores de los mínimos anuales (mm)
12 //máximoa=vector que almacenan los valores de los máximos anuales (mm)
13 //meses= es un vector que almacena strings con los meses del año (adimensional)
14 //mes= es un vector que almacena strings con los meses del año (adimensional)
15 //TME= vector que almacena los totales mensuales (adimensional)
16 //PRM= almacena los promedios de cada año (mm)
17 //MAM= almacena los valores de los elementos máximos mensuales (mm)
18 //MIM=almacena los valores de los mínimos mensuales (mm)
19 //proma= vector que almacena promedios anuales (mm)
20 //Diccionario de variables intermedias:
21 //i=iterador o contador para los renglones (adimensional)
22 //j=iterador para las columnas (adimensional)
23 //vs= vector que convierte los datos de la matriz de lluvias de un renglón en un vector para
ser usado en las funciones (mm)
24 //emaximoa= vector que almacena el número del mes del máximo de cada año (adimensional)
25 //eminimoa= vector que al almacena el número del mes del mínimo de cada año (adimensional)
26 //vsm= vector que convierte todas las columnas de la matriz de lluvias en vectores (mm)
27 //EMAM= elemento máximo mensual (adimensional)
28 //EMIM= elemento mínimo mensual (adimensional)
29 //vpam=determina el máximo de los máximos anuales (adimensional)
30 //vpamin=determina el mínimo de los mínimos anuales (adimensional)
31 //vpromam= variable que nos ayuda a determinar el año y el valor del promedio maximo en todo
el periodo (adimensional)
32 //vpromamin= variable que nos ayuda a determinar el año y el valor del promedio mínimo en todo
el periodo (adimensional)
33 //proma= vector que almacena promedios anuales (mm)
34 //vpllma=compara el máximo de los máximos mensuales nos da un número entre 1 y 12
(adimensional)
35 //vpllmb compara el mínimo de los mínimos mensuales (adimensional)
36 //vppllma: Variable intermedia nos dice la posición del elemento más grande del vector de
promedios mensuales, número entre el 1 y 12 (adimensional)
37 //vppllmb: vector intermedia nos dice la posición del elemento más pequeño del vector de
promedios mensuales (adimensional)
38 //Diccionario de Funciones:
39 // funcion sumatoria: suma elementos de un vector proporcionándole la cantidad de elementos de
éste y el vector en cuestión
40 // funcion maximo: Determina el máximo elemento de un vector proporcionándole la cantidad de
elementos de éste y el vector en cuestión
41 // funcion minimo: Determina el minimo elemento de un vector proporcionándole la cantidad de
elementos de éste y el vector en cuestión
42 float sumatoria (int X,float N[]);
43 float maximo (int X,float N[]);
44 float minimo(int X,float N[]);
45 int main()
46 {
47 int i,j,va[60],emaximoa[60],eminimoa[60],EMAM[100],EMIM[100],vpromanm,vpromanmin,NA;
48 float
ml[60][20],vs[20],sumaa[60],maximoa[60],minimoa[60],vsm[100],TME[20],PRM[20],MAM[20],MIM[20],pr
oma[60];
49 int vpam,vpamin,vpllma,vpllmb,vppllma,vppllmb;
50 char
*meses[12];meses[1]="ENE";meses[2]="FEB";meses[3]="MAR";meses[4]="ABR";meses[5]="MAY";meses[6]
="JUN";
51 meses[7]="JUL";meses[8]="AGO";meses[9]="SEP";meses[10]="OCT";meses[11]="NOV";meses[12]="DIC";
52 char *mes[12];mes[1]="ENE";mes[2]="FEB";mes[3]="MAR";mes[4]="ABR";mes[5]="MAY";mes[6]="JUN";
53 mes[7]="JUL";mes[8]="AGO";mes[9]="SEP";mes[10]="OCT";mes[11]="NOV";mes[12]="DIC";
54 FILE *E;
55 FILE *S;
56 E=fopen("entrada.txt","r");
57 S=fopen("salida.txt","w");
58 printf("Favor de introducir la cantidad de años con que desea trabajar, entre el 1 y 52:\n");
59 scanf("%i",&NA);
60 fprintf(S,"TABLA DE PRECIPITACIONES DE LA ESTACION CLIMATOLOGICS UAM-AZCAPOTZALCO (en
milimetros)\n");
61 fprintf(S,"AÑO ENE FEB MAR ABR MAY JUN JUL AGO SEP OCT NOV
DIC TAN PRA MAA MMA MIA MmA\n");
62 for(i=1;i<=NA;i++) //Lectura de datos, conversion de matriz a vector, y determinacion de los
elementos del vector suma de lluvias
63 {
64 fscanf(E,"%i",&va[i]);
65 for(j=1;j<=12;j++)
66 {
67 fscanf(E,"%f",&ml[i][j]);
68 vs[j]=ml[i][j];//conversion de datos de la matriz en vectores
69 }
70 sumaa[i]=sumatoria(12,vs); //Determina los N elementos del vector de sumatorias anuales.
71 proma[i]=sumatoria(12,vs)/12;//Determina los N elementos del vector de medias anuales.
72 emaximoa[i]=maximo(12,vs);//Determina los N elementos del vector de posiciones de maximos
anuales
73 eminimoa[i]=minimo(12,vs);//Determina los N elementos del vector de posiciones de minimos
anuales
74 minimoa[i]=vs[eminimoa[i]];//Determina los N elementos del vector de minimos anuales
75 maximoa[i]=vs[emaximoa[i]];//Determina los N elementos del vector de maximos anuales
76 }
77 for(i=1;i<=NA;i++)
78 {
79 fprintf(S,"%i ",va[i]);
80 for(j=1;j<=12;j++)
81 {
82 fprintf(S,"%.1f ",ml[i][j]);
83 }
84 fprintf(S,"%.1f ",sumaa[i]); //Aquí está imprimiendo cada suma como un vector
85 fprintf(S,"%.1f ",proma[i]);//Aquí se imprime la media
86 fprintf(S,"%.1f ",maximoa[i]);//Aquí se imprime el maximo por año como vector
87 fprintf(S,"%s ",meses[emaximoa[i]]);//Se imprime el mes donde se ubica el maximo anual
como vector de char
88 fprintf(S,"%.1f ",minimoa[i]);//Aquí se imprime el minimo por año como vector
89 fprintf(S,"%s",mes[eminimoa[i]]);//Aquí se imprime el mes donde se ubica el minimo anual
como vector de char
90 fprintf(S,"\n");
91 }
92 fprintf(S,"TME ");
93 for(j=1;j<=12;j++)
94 {
95 for(i=1;i<=NA;i++)
96 {
97 vsm[i]=ml[i][j];
98 }
99 TME[j]=sumatoria(NA,vsm);//Determina los 12 elementos del vector de totales mensuales
100 fprintf(S,"%.1f ",TME[j]);
101 }
102 fprintf(S,"\n");
103 fprintf(S,"PRM ");
104 for(j=1;j<=12;j++)
105 {
106 for(i=1;i<=NA;i++)
107 {
108 vsm[i]=ml[i][j];//Conversión de las columnas de la matriz de lluvias en vectores para su
utilización en los subprogramas sumatoria, maximo, y minimo.
109 }
110 PRM[j]=sumatoria(NA,vsm)/NA;//Determina los 12 elementos del vector de promedios mensuales
111 fprintf(S," %.1f ",PRM[j]);
112 }
113 fprintf(S,"\n");
114 fprintf(S,"MAM ");
115 for(j=1;j<=12;j++)
116 {
117 for(i=1;i<=NA;i++)
118 {
119 vsm[i]=ml[i][j];
120 }
121 EMAM[j]=maximo(NA,vsm);//Determina los 12 elementos del vector de posciones de maximos mensuales
122 MAM[j]=vsm[EMAM[j]];//Determina los 12 elementos del vector de maximos mensuales
123 fprintf(S," %.1f ",MAM[j]);
124 }
125 fprintf(S,"\n");
126 fprintf(S,"aMM ");
127 for(j=1;j<=12;j++)
128 {
129 for(i=1;i<=NA;i++)
130 {
131 vsm[i]=ml[i][j];
132 }
133 EMAM[j]=maximo(NA,vsm);
134 fprintf(S," %i ",va[EMAM[j]]);// Imprime el año del Maximo mensual usando el vector de
posición de maximos mensuales
135 }
136 fprintf(S,"\n");
137 fprintf(S,"MIM ");
138 for(j=1;j<=12;j++)
139 {
140 for(i=1;i<=NA;i++)
141 {
142 vsm[i]=ml[i][j];
143 }
144 EMIM[j]=minimo(NA,vsm);//Determina los 12 elementos del vector de posciones de minimos mensuales
145 MIM[j]=vsm[EMIM[j]];//Determina los 12 elementos del vector de minimos mensuales
146 fprintf(S," %.1f ",MIM[j]);
147 }
148 fprintf(S,"\n");
149 fprintf(S,"amM ");
150 for(j=1;j<=12;j++)
151 {
152 for(i=1;i<=NA;i++)
153 {
154 vsm[i]=ml[i][j];
155 }
156 EMIM[j]=minimo(NA,vsm);
157 fprintf(S," %i ",va[EMIM[j]]);// Imprime el año del Maximo mensual usando el vector de
posición de minimos mensuales
158 }
159 fprintf(S,"\n\n");
160 vpam=maximo(NA,maximoa);//Escalar que determina la posición del máximo de los elementos del
vector máximo mensual
161 vpamin=minimo(NA,minimoa);//Escalar que determina la posición del máximo de los elementos del
vector minimo mensual
162 vpromanm=maximo(NA,proma);//Escalar que determina la posición del máximo de los elementos del
vector promedio mensual
163 vpromanmin=minimo(NA,proma);//Escalar que determina la posición del minimo de los elementos
del vector promedio mensual
164 fprintf(S,"De todo el periodo,el año donde se registro la lluvia mas alta fue:%i, y fue con un
total de %.1f lluvias\n",va[vpam],maximoa[vpam]);
165 fprintf(S,"De todo el periodo,el año donde se registro la lluvia mas baja fue:%i, y fue con un
total de %.1f lluvias\n",va[vpamin],minimoa[vpamin]);
166 fprintf(S,"De todo el periodo,el año donde se presento el promedio mas alto de lluvias fue:%i,
y fue con un total de %.1f lluvias\n",va[vpromanm],proma[vpromanm]);
167 fprintf(S,"De todo el periodo,el año donde se presento el promedio mas bajo de lluvias fue:%i,
y fue con un total de %.1f lluvias\n",va[vpromanmin],proma[vpromanmin]);
168 fprintf(S,"\n\n");
169 vpllma=maximo(12,MAM);//Escalar que determina la posición del elemento máximo del vector
Maximo mensual
170 vpllmb=minimo(12,MIM);//Escalar que determina la posición del elemento minimo del vector
Maximo mensual
171 vppllma=maximo(12,PRM);//Escalar que determina la posición del elemento máximo del vector
promedio mensual
172 vppllmb=minimo(12,PRM);//Escalar que determina la posición del elemento minimo del vector
promedio mensual
173 fprintf(S,"De todo el periodo,el mes donde mas lluvias se registraron fue:%s , y fue de %.1f
lluvias\n",meses[vpllma],MAM[vpllma]);
174 fprintf(S,"De todo el periodo,el mes donde menos lluvias se registraron fue:%s, y fue de %.1f
lluvias\n",meses[vpllmb],MIM[vpllmb]);
175 fprintf(S,"De todo el periodo,el mes donde se encuentra el promedio de lluvias mas alto fue:%s
y fue de %.1f lluvias\n",mes[vppllma],PRM[vppllma]);
176 fprintf(S,"De todo el periodo,el mes donde se encuentra el promedio de lluvias mas bajo fue:%s
y fue de %.1f lluvias\n",mes[vppllmb],PRM[vppllmb]);
177 return 0;
178 }
179 ///////////////////////////////////////////////////////////////////////////
180 float sumatoria (int X,float N[])//Subprograma de suma
181 {
182 float s;
183 int cont;
184 s=0;
185 for(cont=1;cont<=X;cont++)
186 {
187 s=s+N[cont];
188 }
189 return s;
190 }
191 //////////////////////////////////////////////////////////////////////////
192 float maximo (int X,float N[]) //Determina el maximo de un conjunto de valores
193 {
194 float M;
195 int c,e;
196 M=-10000;
197
198 for(c=1;c<=X;c++)
199 {
200 if(M<N[c])
201 {
202 M=N[c];
203 e=c;
204 }
205 }
206
207 return e; //Retorna la posición del valor maximo
208 }
209 ////////////////////////////////////////////////////////////////////////////
210 float minimo (int X,float N[]) //Determina el minimo de un conjunto de valores
211 {
212 float M;
213 int c,e;
214 M=10000;
215
216 for(c=1;c<=X;c++)
217 {
218 if(M>N[c])
219 {
220 M=N[c];
221 e=c;
222 }
223 }
224
225 return e; //Retorna la posición del valor minimo
226 }
227
228
229

También podría gustarte