1. Ejercicios Informáticá II
Prácticá 1
Ejercicio 1:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 5
int main()
{
char nombre[N][20];
int tabla [N][8];
int i=0,j=0;
char l;
int aux;
//pide datos:
for(i=0; i<N; i++)
{
printf("Ingrese el nombre del equipo: n");
do
{
l=getche();
if(l!='r')
{
nombre[i][j]=l;
j++;
}
}
while((l!='r')&&(j<19));
nombre[i][j]='0';
j=0;
printf("nIngrese los partidos ganados: n");
scanf("%d", &aux);
tabla[i][2]=aux;
printf("Ingrese los partidos empatados: n");
scanf("%d", &aux);
tabla[i][3]=aux;
printf("Ingrese los partidos perdidos: n");
scanf("%d", &aux);
tabla[i][4]=aux;
printf("Ingrese los goles a favor: n");
scanf("%d", &aux);
tabla[i][5]=aux;
printf("Ingrese los goles en contra: n");
scanf("%d", &aux);
tabla[i][6]=aux;
printf("-------------------n");
9. }
int modulo (int a)
{
return sqrt(a*a);
}
Ejercicio 5
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 3
void mostrar( int [N][N]);
void transponer (int [N][N]);
int main()
{
int mt[N][N];
int i,j;
srand(time(NULL));
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
mt[i][j]=rand()%10;
}
}
printf("Matriz Original: n");
mostrar(mt);
printf("n----------n");
printf("Matriz Transpuesta: n");
transponer(mt);
mostrar(mt);
return 0;
}
void mostrar (int mt[N][N])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("-%d-", mt[i][j]);
printf("n");
}
}
void transponer(int mt[N][N])
{
10. int i,j;
int aux[N][N];
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
aux[i][j]=mt[j][i];
}
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
mt[i][j]=aux[i][j];
}
}
}
Ejercicio 6
#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++)
{
11. 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);
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--;
12. 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;
}
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:");
13. 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");
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++)
{
14. 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);
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++)
{
15. 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])
{
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++)
16. {
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));
}
Ejercicio 7
#include <stdio.h>
#include <stdlib.h>
int binario (char );
int main()
{
char num;
int bin=0;
printf("Ingrese el numero a pasar a binario: (el numero debe estar entre 0 y 255)n");
scanf("%d", &num);
bin=binario(num);
printf("El numero %d en binario es: %d", num, bin);
return 0;
}
int binario (char num)
{
short int aux;
int bin=0;
int n;
for(n=0;n<8;n++)
{
aux=0;
aux=num%2;
num/=2;
bin+=aux*pow(10,n);
}
17. return bin;
}
Ejercicio 8
#include <stdio.h>
#include <stdlib.h>
int binario (char );
int main()
{
char num;
int bin=0;
printf("Ingrese el numero a pasar a binario: (el numero debe estar entre 0 y 255)n");
scanf("%d", &num);
bin=binario(num);
printf("El numero %d en binario es: %d", num, bin);
return 0;
}
int binario (char num)
{
unsigned char mask=1;
int n, bin=0;
for(n=0;n<8;n++)
{
bin+=(num&mask)*pow(10,n);
num=num>>1;
}
return bin;
}
Ejercicio 9
#include <stdio.h>
#include <stdlib.h>
int shiftd (int);
int binario (char);
int main()
{
char num;
int bin=0;
printf("Ingrese el numero a pasar a binario: (el numero debe estar entre 0 y 255)n");
scanf("%d", &num);
18. bin=binario(num);
printf("El numero %d en binario es: %d", num, bin);
num=shiftd(num);
bin=binario(num);
printf("nluego del shift a la derecha su numero, en binario, es: %d", bin);
return 0;
}
int shiftd (int num)
{
int mask=1;
mask=mask<<(sizeof(int)*4);//*4 porque hay 4 bits por cada byte, y el sizeof me da en bytes.
mask=~mask;
num=num>>1;
return (num&mask);
}
int binario (char num)
{
short int aux;
int bin=0;
int n;
for(n=0;n<8;n++)
{
aux=0;
aux=num%2;
num/=2;
bin+=aux*pow(10,n);
}
return bin;
}
Ejercicio 10
#include <stdio.h>
#include <stdlib.h>
int cbits (unsigned int);
int binario (char);
int main()
{
unsigned int num;
int bin=0;
printf("Ingrese el numero a contar los '1s': n");
scanf("%d", &num);
bin=binario(num);
printf("El numero %d en binario es: %d", num, bin);
num=cbits(num);
printf("nHay %d '1s' en esa variable.", num);
return 0;
}
19. int cbits (unsigned int var)
{
unsigned int mask=1;
int i;
int cont=0;
for(i=0;i<(sizeof(unsigned int)*4); i++)
{
if(((var>>i)&mask)==1)
cont++;
}
return cont;
}
int binario (char num)
{
short int aux;
int bin=0;
int n;
for(n=0;n<8;n++)
{
aux=0;
aux=num%2;
num/=2;
bin+=aux*pow(10,n);
}
return bin;
}
Ejercicio 11
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
unsigned int mashup (unsigned char,unsigned char,unsigned char,unsigned char);
int binario (char );
int binario_int (int);
int main()
{
unsigned char v1=1,v2=4,v3=8,v4=16;
unsigned int vr;
vr=mashup(v1,v2,v3,v4);
printf("nv1=%d", binario(v1));
printf("nv2=%d", binario(v2));
printf("nv3=%d", binario(v3));
printf("nv4=%d", binario(v4));
printf("nvr=%d", vr); /*me va a tirar el numero decimal porque la variable int no alcanza para
almacenar este numero en binario, asique directamente mande el numero sin transformarlo.*/
return 0;