12. Ejercicios Practica 1 (NUEVA 2014) Informática II UCA | Resueltos por Alvin Jacobs Blydenstein
maxima=maxima_absoluta(mtz);
printf("nMaxima Absoluta: %.2lfn", maxima);
return 0;
}
void cargar(double mtz[12][31])
{
FILE * arch;
int i,j;
arch=fopen("temperaturas.csv","r");
i=0;
while ((!feof(arch))&&(i<12))
{
for(j=0;j<31;j++)
{
fscanf(arch,"%lf", &mtz[i][j]);
fgetc(arch);
}
i++;
}
fclose(arch);
}
/*a. double promedio_general(double[][12]), que calcula el promedio de temperatura
de todo el año. */
double promedio_general(double mtz[12][31])
{
int i,j;
double prom=0;
for(i=0;i<12;i++)
{
for(j=0;j<31;j++)
prom+=mtz[i][j];
}
prom/=(12*31);
return prom;
}
/*b. void medias_mensuales(double[][12], double[]), que calcula el promedio de
temperatura de cada mes y asigna dicho valor en el índice correspondiente del arreglo pasado
como segundo
parámetro.*/
void medias_mensuales(double mtz[][12], double mes[])
{
int i,j;
double prom=0;
for(i=0;i<12;i++)
{
prom=0;
for(j=0;j<31;j++)
prom+=mtz[i][j];
mes[i]=prom/31;
}
}
/*c. double maxima_absoluta(double[][12]), que retorna la máxima absoluta del año.*/
double maxima_absoluta(double mtz[12][31])
{
13. Ejercicios Practica 1 (NUEVA 2014) Informática II UCA | Resueltos por Alvin Jacobs Blydenstein
double maxima=-100;
int i,j;
for(i=0;i<12;i++)
{
for(j=0;j<31;j++)
{
if(mtz[i][j]>maxima)
maxima=mtz[i][j];
}
}
return maxima;
}
(D)
#include <stdio.h>
#include <stdlib.h>
double promedio_general(double mtz[12][31], int limites[12]);
double maxima_absoluta(double mtz[12][31], int limites[12]);
int main()
{ double mtz[12][31];
double mes[12];
double prom_general;
double maxima;
int limites[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i;
cargar(mtz);
prom_general=promedio_general(mtz, limites);
printf("Promedio General: %.2lfn", prom_general);
medias_mensuales(mtz,mes,limites);
printf("nMedidas mensuales:n");
for(i=0;i<12;i++)
printf("Promedio mes %d: %.2lfn", i+1, mes[i]);
maxima=maxima_absoluta(mtz,limites);
printf("nMaxima Absoluta: %.2lfn", maxima);
return 0;
}
void cargar(double mtz[12][31])
{
FILE * arch;
int i,j;
arch=fopen("temperaturas.csv","r");
i=0;
while ((!feof(arch))&&(i<12))
{
for(j=0;j<31;j++)
{
fscanf(arch,"%lf", &mtz[i][j]);
14. Ejercicios Practica 1 (NUEVA 2014) Informática II UCA | Resueltos por Alvin Jacobs Blydenstein
fgetc(arch);
}
i++;
}
fclose(arch);
}
/*a. double promedio_general(double[][12]), que calcula el promedio de temperatura
de todo el año. */
double promedio_general(double mtz[12][31], int limites[12])
{
int i,j;
double prom=0;
for(i=0;i<12;i++)
{
for(j=0;j<limites[i];j++)
prom+=mtz[i][j];
}
prom/=(12*31);
return prom;
}
/*b. void medias_mensuales(double[][12], double[]), que calcula el promedio de
temperatura de cada mes y asigna dicho valor en el índice correspondiente del arreglo pasado
como segundo
parámetro.*/
void medias_mensuales(double mtz[][12], double mes[], int limites[12])
{
int i,j;
double prom=0;
for(i=0;i<12;i++)
{
prom=0;
for(j=0;j<limites[i];j++)
prom+=mtz[i][j];
mes[i]=prom/limites[i];
}
}
/*c. double maxima_absoluta(double[][12]), que retorna la máxima absoluta del año.*/
double maxima_absoluta(double mtz[12][31], int limites[12])
{
double maxima=-100;
int i,j;
for(i=0;i<12;i++)
{
for(j=0;j<limites[i];j++)
{
if(mtz[i][j]>maxima)
maxima=mtz[i][j];
}
}
return maxima;
}
15. Ejercicios Practica 1 (NUEVA 2014) Informática II UCA | Resueltos por Alvin Jacobs Blydenstein
Ejercicio 9:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 2
#define C 2
#define A 2
#define P 2
double prom_mat(int , int [M][C][A][P]);
double prom_alm(int , int, int [M][C][A][P]);
double prom_com(int , int [M][C][A][P]);
double prom_par(int , int, int, int [M][C][A][P]);
int main()
{
int mt[M][C][A][P];
int a=0,b=0,c=0,d=0;
int op;
int aux;
srand(time(NULL));
printf("Seleccione la opcion de carga:n0) Para Carga Masivan1) Para Carga Selectivan2) Para
Carga Aleatoria de Pruevan");
scanf("%d", &op);
switch (op)
{
case 0:
for(a=0; a<M; a++)
{
for(b=0; b<C; b++)
{
for(c=0; c<A; c++)
{
for(d=0; d<P; d++)
{
printf("Ingrese nota para Materia %d - Comision %d - Alumno %d - Parcial %d: ",
(a+1),(b+1),(c+1),(d+1));
scanf("%d", &aux);
mt[a][b][c][d]=aux;
}
}
}
}
break;
case 1:
for(a=0; a<M; a++)
{
for(b=0; b<C; b++)
{
for(c=0; c<A; c++)
{
for(d=0; d<P; d++)
{
16. Ejercicios Practica 1 (NUEVA 2014) Informática II UCA | Resueltos por Alvin Jacobs Blydenstein
mt[a][b][c][d]=rand()%10;
}
}
}
}
while((a!=-1)&&(b!=-1)&&(c!=-1)&&(d!=-1))
{
printf("Ingrese el codigo de la materia:");
scanf("%d",&a);
if(a!=-1)
{
printf("Ingrese el codigo de la comision:");
scanf("%d",&b);
if(b!=-1)
{
printf("Ingrese el codigo del alumno:");
scanf("%d",&c);
if(c!=-1)
{
printf("Ingrese el codigo del parcial:");
scanf("%d",&d);
if(d!=-1)
{
printf("Ingrese la nota:");
scanf("%d", &aux);
/*a--;
b--;
c--;
d--;
estos -- son necesarios si pensas que al ingresar datos el hombre cuando se
refiere a la primer materia (mt[0][x][x][x]) va a poner un 1 cuando en realidad deberia poner un 0. */
mt[a][b][c][d]=aux;
printf("n----------n");
}
}
}
}
}
break;
case 2:
for(a=0; a<M; a++)
{
for(b=0; b<C; b++)
{
for(c=0; c<A; c++)
{
for(d=0; d<P; d++)
{
mt[a][b][c][d]=rand()%10;
}
}
}
17. Ejercicios Practica 1 (NUEVA 2014) Informática II UCA | Resueltos por Alvin Jacobs Blydenstein
}
break;
default:
printf("!!!nOpcion Incorrectan");
break;
}
printf("n--------------------n");
op=0;
while (aux!=6)
{
printf("nnMenu:n");
printf("1- Ver promedio de una materia (solicitará el codigo de la materia)n");
printf("2- Ver promedio de un alumno (solicitará la comision y el nro. del alumno)n");
printf("3- Ver promedio de una comision (solicitara la comision)n");
printf("4- Ver promedio de un parcial (solicitará la materia, la comisión y el parcial)n");
printf("5- Volver a cargar los datos (se sobreescribirán los datos existentes)n");
printf("6- Salirn");
scanf("%d",&aux);
printf("n--------------------n");
switch (aux)
{
case 1:
printf("n Ingrese la materia:");
scanf("%d", &a);
printf("n--------------------n");
printf("Promedio: %.2lf" , prom_mat(a,mt));
printf("n--------------------n");
break;
case 2:
printf("n Ingrese la comision:");
scanf("%d", &a);
printf("n Ingrese el alumno:");
scanf("%d", &b);
printf("n--------------------n");
printf("Promedio: %.2lf" , prom_alm(a,b,mt));
printf("n--------------------n");
break;
case 3:
printf("n Ingrese la comision:");
scanf("%d", &a);
printf("n--------------------n");
printf("Promedio: %.2lf" , prom_com(a,mt));
printf("n--------------------n");
break;
case 4:
printf("n Ingrese la materia:");
scanf("%d", &a);
printf("n Ingrese la comision:");
scanf("%d", &b);
printf("n Ingrese el parcial:");
scanf("%d", &c);
printf("n--------------------n");
printf("Promedio: %.2lf" , prom_par(a,b,c,mt));
printf("n--------------------n");
18. Ejercicios Practica 1 (NUEVA 2014) Informática II UCA | Resueltos por Alvin Jacobs Blydenstein
break;
case 5:
//copy paste del codigo de arriba.
printf("Seleccione la opcion de carga:n0) Para Carga Masivan1) Para Carga Selectivan2)
Para Carga Aleatoria de Pruevan");
scanf("%d", &op);
switch (op)
{
case 0:
for(a=0; a<M; a++)
{
for(b=0; b<C; b++)
{
for(c=0; c<A; c++)
{
for(d=0; d<P; d++)
{
printf("Ingrese nota para Materia %d - Comision %d - Alumno %d - Parcial %d:
", (a+1),(b+1),(c+1),(d+1));
scanf("%d", &aux);
mt[a][b][c][d]=aux;
}
}
}
}
break;
case 1:
for(a=0; a<M; a++)
{
for(b=0; b<C; b++)
{
for(c=0; c<A; c++)
{
for(d=0; d<P; d++)
{
mt[a][b][c][d]=rand()%10;
}
}
}
}
while((a!=-1)&&(b!=-1)&&(c!=-1)&&(d!=-1))
{
printf("Ingrese el codigo de la materia:");
scanf("%d",&a);
if(a!=-1)
{
printf("Ingrese el codigo de la comision:");
scanf("%d",&b);
if(b!=-1)
{
printf("Ingrese el codigo del alumno:");
scanf("%d",&c);
19. Ejercicios Practica 1 (NUEVA 2014) Informática II UCA | Resueltos por Alvin Jacobs Blydenstein
if(c!=-1)
{
printf("Ingrese el codigo del parcial:");
scanf("%d",&d);
if(d!=-1)
{
printf("Ingrese la nota:");
scanf("%d", &aux);
/*a--;
b--;
c--;
d--;
estos -- son necesarios si pensas que al ingresar datos el hombre cuando se
refiere a la primer materia (mt[0][x][x][x]) va a poner un 1 cuando en realidad deberia poner un 0. */
mt[a][b][c][d]=aux;
printf("n----------n");
}
}
}
}
}
break;
case 2:
for(a=0; a<M; a++)
{
for(b=0; b<C; b++)
{
for(c=0; c<A; c++)
{
for(d=0; d<P; d++)
{
mt[a][b][c][d]=rand()%10;
}
}
}
}
break;
default:
printf("!!!nOpcion Incorrectan");
break;
}
break;
case 6:
break;
default:
printf("!!!nOpcion Incorrectan");
break;
}
}
return 0;
}
double prom_mat(int i, int mt[M][C][A][P])
{
20. Ejercicios Practica 1 (NUEVA 2014) Informática II UCA | Resueltos por Alvin Jacobs Blydenstein
int a,b,c;
double sum=0;
for(a=0; a<C; a++)
{
for(b=0; b<A; b++)
{
for(c=0; c<P; c++)
{
sum+=mt[i][a][b][c];
}
}
}
return ((double)sum/(C*A*P));
}
double prom_alm(int i, int j, int mt[M][C][A][P])
{
int a,c;
double sum=0;
for(a=0; a<M; a++)
{
for(c=0; c<P; c++)
{
sum+=mt[a][i][j][c];
}
}
return ((double)sum/(M*P));
}
double prom_com(int i, int mt[M][C][A][P])
{
int a,b,c;
double sum=0;
for(a=0; a<M; a++)
{
for(b=0; b<A; b++)
{
for(c=0; c<P; c++)
{
sum+=mt[a][i][b][c];
}
}
}
return ((double)sum/(M*A*P));
}
double prom_par(int i, int j, int k, int mt[M][C][A][P])
{
int a;
double sum=0;
for(a=0; a<A; a++)
{
sum+=mt[i][j][a][k];
}
return ((double)sum/(A));
}
21. Ejercicios Practica 1 (NUEVA 2014) Informática II UCA | Resueltos por Alvin Jacobs Blydenstein
Ejercicio 10:
void mostrar_bin(char v)
{
int i;
printf("nVariable en binairo:");
for(i=sizeof(char)*8;i>=0;i--)
{
if(v>=pow(2,i))
{
v-=pow(2,i);
printf("1");
}
else
printf("0");
}
printf("n");
}
Ejercicio 11:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char v=31;
mostrar_bin(v);
return 0;
}
void mostrar_bin(char v)
{
char mask=128;
int i;
printf("nVariable en binario:");
for(i=0;i<8;i++)
{
if((v&mask)==0)
printf("0");
else
printf("1");
v=v<<1;
}
printf("n");
}
Ejercicio 12:
#include <stdio.h>
#include <stdlib.h>
char shiftder(char v);
int main()
{
char v=30;
mostrar_bin(v);
22. Ejercicios Practica 1 (NUEVA 2014) Informática II UCA | Resueltos por Alvin Jacobs Blydenstein
v=shiftder(v);
mostrar_bin(v);
return 0;
}
char shiftder(char v)
{
char mask=128;
mask=~mask;
return (v>>1)&mask;
}
void mostrar_bin(char v)
{
char mask=128;
int i;
printf("nVariable en binario:");
for(i=0;i<8;i++)
{
if((v&mask)==0)
printf("0");
else
printf("1");
v=v<<1;
}
printf("n");
}
Ejercicio 13:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
unsigned int v=128+32+16+8+4+2+1;
contarunos(v);
return 0;
}
void contarunos (unsigned int v)
{
unsigned int mask=pow(2,(sizeof(unsigned int)*8)-1);
int i;
int cont=0;
for(i=0;i<sizeof(unsigned int)*8;i++)
{
if(!((mask&v)==0))
cont++;
v=v<<1;
}
printf("La variable solicitada tiene %d '1s'.n", cont);
}
23. Ejercicios Practica 1 (NUEVA 2014) Informática II UCA | Resueltos por Alvin Jacobs Blydenstein
Ejercicio 14:
#include <stdio.h>
#include <stdlib.h>
unsigned int unir_chars(char a,char b,char c,char d);
int main()
{
char a=15,b=30,c=64,d=1;
unsigned int respuesta=unir_chars(a,b,c,d);
printf("Uniendo las variables a=%d, b=%d, c=%d, d=%d, obtengo: %dn",a,b,c,d,respuesta);
return 0;
}
unsigned int unir_chars(char a,char b,char c,char d)
{
unsigned int r=0;
r=r|a;
r=r<<(sizeof(char)*8);
r=r|b;
r=r<<(sizeof(char)*8);
r=r|c;
r=r<<(sizeof(char)*8);
r=r|d;
return r;
}
Ejercicio 15:
#include <stdio.h>
#include <stdlib.h>
char cletra (char);
int main()
{
char a='c';
printf("Letra original: %cn", a);
a=cletra(a);
printf("Letra luego de 'cletrar': %cn",a);
return 0;
}
char cletra (char a)
{
unsigned char mask=32;
return a^mask;
}