Você está na página 1de 3

PAUTA 2º Prueba Teoría

Programación y Computación (Ingeniería)


Miércoles, 31 de octubre de 2012

Problema 1:
(30 Pts.) Cree un programa en C que realice lo siguiente:

1) Una función para leer por teclado los elementos de una matriz cuadrada de enteros de tamaño nxn con
valores entre 5 al 30.
2) Una función para mostrar una matriz de nxn con su respectivo formato.
3) Una función que calcule transpuesta de una matriz de nxn.
4) Una función que determine si dos matrices son iguales.
5) En la función main:
 Leer el valor de n validando que esté en el rango [1,6]
 Generar las matrices A y B
 Mostrar las matrices A y B
 Calcular y mostrar Bt
 Determinar si se cumple que A es simétrica, es decir, que A=At
#include <iostream.h>
#include <conio.h> main()
{ int n,A[6][6],B[6][6],At[6][6],Bt[6][6];
void leer(int X[6][6],int n) //" Leer el valor de n validando que esté en el rango [1,6]
{ do{
int i,j; cout<<"Ingrese dimension de la matriz cuadrada:";
for(i=1;i<=n;i++) cin>>n;
for(j=1;j<=n;j++) }while((n<0)||(n>6));
do{ cin>>X[i][j];
}while((X[i][j]<5)||(X[i][j]>30)); //" Generar las matrices A y B
} cout<<"\nIngrese datos de la matriz A:\n";
leer(A,n);
void mostrar(int X[6][6],int n) cout<<"\nIngrese datos de la matriz B:\n";
{ leer(B,n);
int i,j;
for(i=1;i<=n;i++) //" Mostrar las matrices A y B
{for(j=1;j<=n;j++) cout<<"\nLa matriz A es:\n";
cout<<"\t"<<X[i][j]; mostrar(A,n);
cout<<"\n"; cout<<"\nLa matriz B es:\n";
} mostrar(B,n);
}
//" Calcular y mostrar Bt
void transpuesta(int X[6][6],int n,int Xt[6][6]) transpuesta(B,n,Bt);
{ cout<<"\nLa transpuesta de B es:\n";
int i,j; mostrar(Bt,n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) //" Determinar si se cumple que A es simétrica
Xt[j][i]=X[i][j]; transpuesta(A,n,At);
} if(igual(A,At,n)==0) cout<<"\nA es simetrica\n";
else cout<<"\nA NO es simetrica\n";
int igual(int X[6][6],int Y[6][6],int n) getche();
{ }
int i,j,res=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(Y[i][j]!=X[i][j]) res=1;
return(res);
}
Problema 2:
(30 Pts.) Implemente un programa en C++ que realice lo siguiente:

1) Una función que lea y/o genere los datos de los arreglos para almacenar los nombres de los trabajadores
de una empresa minera y la cantidad de días trabajados de cada uno en los meses de enero, febrero y
marzo considerando:
• Enero con la cantidad de días en el rango de 14 a 31
• Febrero con la cantidad de días en el rango de 7 a 27
• Marzo con la cantidad de días en el rango de 10 a 30
• Totales es la suma de los días obtenidos en los 3 meses

2) Una función que muestre los datos almacenados de la empresa minera.

Nº Trabajador Enero Febrero Marzo Totales


1 Hugo 27 21 18 66
2 Paco 15 12 29 56
3 Luis 24 7 19 50

n Patricio 23 21 14 58

3) Una función que retorne la posición del mayor elemento de un mes X.


4) Una función que imprima solo los nombres de los trabajadores ordenados de la Z a la A.
5) En la función main y utilizando las funciones anteriores debe realizar:
 Ingresar el número de trabajadores validando que este en el rango entre 1 y 95.
 Ingresar los datos.
 Mostrar los datos.
 Indique el nombre de los trabajadores con más días trabajados en enero y febrero
 Imprima solo el nombre de los trabajadores en forma ordenada
#include <iostream.h>
#include <conio.h>
//funcion 1
void leer(int n, char T[95][10],int E[95],int F[95],int M[95],int To[95])
{
int i;
for(i=1;i<=n;i++)
{ cout<<"Nombre trabajador:";
cin>>T[i];
E[i]=rand()%18+14;
F[i]=rand()%21+7;
M[i]=rand()%21+10;
To[i]=E[i]+F[i]+M[i];
}
}
//funcion 2
void mostrar(int n, char T[95][10],int E[95],int F[95],int M[95],int To[95])
{
int i;
cout<<"\nNombre Enero Febrero Marzo Total";
for(i=1;i<=n;i++)
cout<<"\n"<<T[i]<<"\t"<<E[i]<<"\t"<<F[i]<<"\t"<<M[i]<<"\t"<<To[i];
}
//funcion 3
int mayor(int n,int Z[95])
{
int pos=1,i;
for(i=1;i<=n;i++)
if(Z[i]>Z[pos]) pos=i;
return(pos);
}

//funcion 4
void orden(int n,char T[95][10])
{
int i,j;
char aux[10];
for(i=1;i<=n;i++)
for(j=1;j<=n-i;j++)
if (strcmp(T[j],T[j+1])<0) {strcpy(aux,T[j]);
strcpy(T[j],T[j+1]);
strcpy(T[j+1],aux);}
cout<<"\n Los trabajadores son:\n";
for(i=1;i<=n;i++)
cout<<"\n"<<T[i];
}

main()
{ int n,enero[95],febrero[95],marzo[95],total[95];
char nombre[95][10];

// Ingresar el número de trabajadores validando que este en el rango entre 1 y 95


do{
cout<<"Ingrese numero de trabajadores:";
cin>>n;
}while((n<0)||(n>95));

//Ingresar los datos


leer(n,nombre,enero,febrero,marzo,total);

//Mostrar los datos.


mostrar(n,nombre,enero,febrero,marzo,total);

//Indique el nombre de los trabajadores con más días trabajados en enero y febrero
cout<<"\nMayor dias trabajados en Enero: "<<nombre[mayor(n,enero)];
cout<<"\nMayor dias trabajados en Febrero: "<<nombre[mayor(n,febrero)];

//Imprima solo el nombre de los trabajadores en forma ordenada


orden(n,nombre);

getche();
}

Você também pode gostar