Vous êtes sur la page 1sur 15

PROGRAMA NACIONAL DE FORMACIN EN INFORMATICA

(PNFI)

ALGORITMICA Y PROGRAMACION

Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

UNIDAD CURRICULAR: ALGORITMICA Y PROGRAMACION


Ejercicios Estructuras de Registros
Puntos a tratar
1. Ejercicios Resueltos de Estructuras de Registros
2. Ejercicios Propuestos de Estructuras de Registros

1. Ejercicios Resueltos de Estructuras de Registros


1. La informacin de todos los empleados de la empresa DATASYSTEM est
almacenada en una variable de tipo struct llamada empleado. La informacin con
que se cuenta de cada empleado es: nombre, sexo y sueldo. Realizar un
programa en C++ que lea en un array de estructuras los datos de los N
trabajadores de la empresa y que imprima los datos del empleado con mayor y
menor salario.
#include <iostream>
using namespace std;
struct empleado
{
char nombre[30];
char sexo[12];
float salario;
};
void main()
{
struct empleado emp[100];
int e, nemp, pmay, pmen;
float mayor=0.0, menor=9999.0;
cout << "Introduzca el numero de empleados: " << endl;
cin >> nemp;
for(e=0;e<nemp;e++)
{
cout << "Nombre: " << endl;
cin >> emp[e].nombre;
cout <<"Sexo: << endl;
cin >> emp[e].sexo;
cout <<"Salario: <<endl;
cin >> emp[e].salario;
Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

if (emp[e].salario>mayor)
{
mayor=emp[e].salario;
pmay=e;
}
if (emp[e].salario<menor)
{
menor=emp[e].salario;
pmen=e;
}
}
cout << "El trabajador con MAYOR salario",emp[pmay].nombre << endl;
cout << El trabajador con MENOR salario",emp[pmen].nombre << end;
}
2. A partir de la declaracin de las siguientes estructuras realice un programa en
C++ que lea el array ats y devuelva los datos (nombre, pas, deporte) del atleta
que ha ganado mayor nmero de medallas.
struct datos
{
char nombre[40];
char pais[25];
};
struct atleta
{
char deporte[30];
struct datos pers;
int nmedallas;
};
struct atleta ats[30];
#include <iostream>
using namespace std;
struct datos
{
char nombre[40];
char pais[25];
};
struct atleta
{
char deporte[30];
Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

int nmedallas;
struct datos pers;
};
//Array de Estructuras
struct atleta ats[3];
void main()
{
int a,posmay,maynmed=0;
for(a=0;a<3;a++)
{
cout << Nombre: " << endl;
cin >> ats[a].pers.nombre;
cout << "Pais: "<<endl;
cin >> ats[a].pers.pais;
cout <<"Deporte: "<<endl;
cin >> ats[a].deporte;
cout << "Numero de Medallas: "<<endl;
cin >> ats[a].nmedallas;
}
//nmed=ats[0].nmedallas;
for(a=1;a<3;a++)
{
if(ats[a].nmedallas>maynmed)
{
posmay=a;
maynmed=ats[a].nmedallas;
}
}
cout <<"****DATOS DEL ATLETA CON MAYOR NUMERO DE
MEDALLAS****" << endl;
cout << "NOMBRE: ",ats[posmay].pers.nombre << endl;
cout << "PAIS: ",ats[posmay].pers.pais << endl;
cout <<"DEPORTE: ",ats[posmay].deporte << endl;
cout <<"NUMERO DE MEDALLAS: ",ats[posmay].nmedallas << endl;
}

Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

3. Hacer un programa para ingresar los nombres y las notas de los alumnos de
Lenguaje de Programacin y se reporte:
a) Una Lista en orden Alfabtico.
b) Una Lista en orden de Mrito.
#include<iostream>
#include<string.h>
using namespace std;
struct Alumno
{
char nombre[40];
float nota;
};
void numAlumnos(int &n);
void ingreso(Alumno A[], int n);
void reporte(Alumno A[], int n);
void ordenAlfabetico(Alumno A[], int n);
void ordenMerito(Alumno A[], int n);
int main()
{
Alumno A[100];
int n;
numAlumnos(n);
Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

ingreso(A,n);
ordenAlfabetico(A,n);
cout<<"Lista en orden alfabetico"<<endl;
reporte(A,n);
ordenMerito(A,n);
cout<<"Lista en orden de Merito"<<endl;
reporte(A,n);
return 0;
}
void numAlumnos(int &n)
{
do{
cout<<"Numero de alumnos : ";
cin>>n;
}while(n<=0);
}
void ingreso(Alumno A[ ], int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<"Datos del alumno"<<i+1<<endl;
cout<<"Nombre : ";
cin.get();
cin.getline(A[i].nombre,40);
do{
cout<<"Nota : ";
cin>>A[i].nota;
}while(A[i].nota<0 || A[i].nota>20);
}
}
void reporte(Alumno A[ ], int n)
{
int i;
for(i=0;i<n;i++)
cout<<A[i].nombre<<"t "<<A[i].nota<<endl;
}
void ordenAlfabetico(Alumno A[] , int n)
{
int i,j;
Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

Alumno temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(A[i].nombre,A[j].nombre)>0)
{
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
void ordenMerito(Alumno A[], int n)
{
int i,j;
Alumno temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(A[i].nota<A[j].nota)
{
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
4. Desarrolle un programa que lea del terminal la informacin de varios clientes,
que guarda en un vector de clientes, y luego recorre el vector para detectar los
clientes que tienen un saldo superior a 100.0 y escribe en la pantalla sus nombres.
#include <iostream>
using namespace std;
#define MAX 100
struct
{
int id;

//identificador del cliente

char nom[20];

// nombre

float saldo;
} Tcliente;

Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

struct
{
int numero;
Tcliente cliente[MAX];
}Tlista;

void main ()
{
Tlista mis_clientes;
int i;
cout <<"Escribe el numero de clientes" << endl;
cin >>mis_clientes.numero;
for (i=0; i<mis_clientes.numero; i++)
{
cout << "Escribe idenfificador, nombre y saldo" << endl;
cin >>mis_clientes.cliente[i].id;
cin >>mis_clientes.cliente[i].nom;
cin >>mis_clientes.cliente[i].saldo;
};
for (i=0; i<mis_clientes.numero; i++)
if (mis_clientes.cliente[i].saldo > 100.0)
cout <<" El cliente es:",mis_clientes.cliente[i].nom);
}
5. Escriba un programa que imprima una lista de amigos guardados en una
agenda (tipo estructura).
/* Lista los campos de una agenda construida en el programa */
#include <iostream>
using namespace std;
#define N 3
main()
{
struct agenda
{
char nombre[25];

Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

char telefono[10];
int edad;
};
struct agenda
amigos[N]={{"Pepe","913472314",18},{"Juan","915547623",19},{"Rosa","917456
778",21}};
int i;
for (i=0; i<N; ++i)
{
cout
<<
Amigo
Telfono
Edad
",amigos[i].nombre,
amigos[i].telefono,amigos[i].edad << endl;
}
}
6. Calcular el sueldo mensual de un empleado que trabaja por horas, el pago de
cada hora trabajada depende de su categora:
CATEGORA

PAGO X HORA

26.90

24.30

21.50

Adems si el empleado trabaja ms de 150 horas mensuales tiene una


bonificacin del 5 % de sueldo. Usar estructuras
struct empleado
{
char nom[40], cat;
int horas;
double sueldo, pHora, bonf;
};
void ingresar(empleado &d);
void calcularSueldo(empleado &q);
void imprimir(empleado a);
#include <iostream.h>
Using namespace std;
int main()
{
empleado e;
ingresar(e);
Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

calcularSueldo(e);
imprimir(e);
system("PAUSE");
return 0;
}
void ingresar(empleado &d){
cout<<"Ingresar nombre del empleado: ";
cin>>d.nom;
cout<<"Ingresar categoria: ";
cin>>d.cat;
cout<<"Ingresar cantidad de horas trabajadas: ";
cin>>d.horas;
}
void calcularSueldo(empleado &q){
switch(q.cat){
case 'A': q.pHora=26.90; break;
case 'B': q.pHora=24.30; break;
case 'C': q.pHora=21.50; break;
}
q.sueldo=q.horas*q.pHora;
if(q.horas>150)
q.bonf=0.05*q.sueldo;
else
q.bonf=0;
q.sueldo=q.sueldo+q.bonf;
}
void imprimir(empleado a){
cout<<"Nombre\tCateg\tHoras\tPago\tBonf\tSueldo"<<endl;
<<a.nom<<"\t"<<a.cat<<"\t"<<a.horas<<"\t"<<a.pHora<<"\t"<<a.bonf<<"\t"<<a.s
ueldo<<endl;
}

Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

2. Ejercicios Propuestos de Registros de Estructuras


1. Define un tipo de dato que represente a una persona siendo sus campos: el
nombre (char[20]), apellido (char[20]), DNI (long int) y la edad (int). Llamar persona
a este tipo de dato. Escribir un programa que pida los datos de N personas y
muestre la cantidad de personas mayores a 50 aos, promedio de edades y
finalmente imprima en pantalla los datos de las personas ingresadas.
2. Un mdico almacena informacin de sus pacientes: nombre, direccin, telfono,
fecha ltima visita, obra social. Se desea un programa con las siguientes
opciones:
a. Introduccin de los datos.
b. Impresin en pantalla de toda la informacin de un paciente.
c. Listar los pacientes de una obra social ingresada por el usuario.
d. Generar un listado completo de todos los pacientes en orden alfabtico.
3. En un mercado se guarda la siguiente informacin de los artculos:
a. Nro de artculo
b. Precio unitario
c. Cantidad mnima necesaria
d. Cantidad actual en el local
e. Fecha de ltima venta
f. Nro de depsito (entero que representa el nro. de depsito donde se
encuentra el stock restante de este artculo)
g. Cantidad en depsito
Con esta informacin se pide realizar la siguientes funciones:
a) Disear una funcin que imprima los datos de los artculos cuya cantidad
actual en el local sea menor que la cantidad mnima necesaria y si hay
stock en depsito se debe imprimir los datos donde se encuentra la
mercadera.

Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

b) Disear una funcin que devuelva la cantidad de artculos cuyo mes de


ltima venta fue septiembre (mes 09).
4. La informacin de todos los empleados de la empresa DATASYSTEM est
almacenada en una variable de tipo struct llamada empleado. La informacin con
que se cuenta de cada empleado es: nombre y sueldo. Realice un programa en
C++ que ingrese los datos de los N empleados de la empresa, tambin se
necesita conocer el sueldo neto a pagar a sus empleados. Los descuentos a
aplicar son: Seguro Social 5%, Ahorro Habitacional 7% y Caja de Ahorro 10%,
estos descuentos son sobre el salario, y es sueldo neto es la diferencia entre el
salario y el total de las deducciones. Luego busque al empleado con mayor
sueldo, los ordene alfabticamente e imprima la informacin. Use funciones para
ello.
5. Desarrolle un programa en C++ que ingrese los datos de N trabajadores de una
empresa. La informacin con que se cuenta de cada trabajador es: nombre, sexo y
sueldo. Se necesita conocer el sueldo neto a pagar a sus empleados. Los
descuentos a aplicar son: Seguro Social 5%, Ahorro Habitacional 7% y Caja de
Ahorro 10%, estos descuentos son sobre el salario, y es sueldo neto es la
diferencia entre el salario y el total de las deducciones. Tambin debe contar la
cantidad de hombres que estn en la empresa, luego ordene alfabticamente e
imprima la informacin. Use estructura y funciones para ello.
6. Desarrolle un programa en C++ para ingresar los nombres y las notas de N
alumnos de Lenguaje de Programacin, el alumno aprueba con notas mayores o
iguales a 12 puntos. Para conocer el nmero de alumnos aprobados, el nmero
de alumnos no aprobados, calcule el promedio de notas de la seccin y se reporte
una lista en orden Alfabtico. Use estructura y funciones para ello.

Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

7. La informacin de todos los empleados de la empresa DATASYSTEM est


almacenada en una variable de tipo struct llamada empleado. La informacin con
que se cuenta de cada empleado es: nombre y sueldo. Realice un programa en
C++ que ingrese los datos de los N empleados de la empresa, tambin se
necesita conocer el sueldo neto a pagar a sus empleados. Los descuentos a
aplicar son: Seguro Social 5%, Ahorro Habitacional 7% y Caja de Ahorro 10%,
estos descuentos son sobre el salario, y es sueldo neto es la diferencia entre el
salario y el total de las deducciones. Luego busque al empleado con menor
sueldo, los ordene alfabticamente e imprima la informacin. Use funciones para
ello.
8. Desarrolle un programa en C++ que ingrese los datos de N trabajadores de una
empresa. La informacin con que se cuenta de cada trabajador es: nombre, sexo y
sueldo. Tambin se necesita conocer el sueldo neto a pagar a sus empleados. Los
descuentos a aplicar son: Seguro Social 5%, Ahorro Habitacional 7% y Caja de
Ahorro 10%, estos descuentos son sobre el salario, y es sueldo neto es la
diferencia entre el salario y el total de las deducciones. Debe contar la cantidad de
mujeres que estn en la empresa, luego ordene alfabticamente e imprima la
informacin. Use estructura y funciones para ello.
9. El profesor de deporte necesita seleccionar a varios atletas para formar el
equipo de bsquet, La informacin que maneja es Nombre y Estatura. Los
alumnos que tengan una altura mayor o igual a 1,80 m entran al equipo. Desarrolle
programa en C++ que ingrese los datos de los N estudiantes, se desea conocer el
nmero de atletas seleccionados y cul es la altura promedio. Ordene los alumnos
en orden alfabtico e imprima la informacin. Use estructura y funciones para ello.
10. El profesor de deporte organiz el equipo de bsquet, La informacin que
maneja es Nombre y Estatura. Desarrolle programa en C++ que ingrese los datos
de los N estudiantes, se desea conocer cul es el atleta de mayor estatura. El

Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

promedio de las estaturas. Ordene los alumnos en orden alfabtico e imprima la


informacin. Use estructura y funciones para ello.
11. El profesor de deporte organiz el equipo de bsquet, La informacin que
maneja es Nombre y Estatura. Desarrolle programa en C++ que ingrese los datos
de los N estudiantes, se desea conocer cul es el atleta de menor estatura. El
promedio de las estaturas. Ordene los alumnos en orden alfabtico e imprima la
informacin. Use estructura y funciones para ello.
12. Desarrolle un programa en C++ para ingresar los nombres y las notas de N
alumnos de Lenguaje de Programacin, el alumno aprueba con notas mayores o
iguales a 12 puntos. Para conocer el nmero de alumnos aprobados, el nmero
de alumnos no aprobados busque la nota ms alta y se reporte una lista en orden
Alfabtico. Use estructura y funciones para ello.
13. Desarrolle un programa en C++ para ingresar los nombres y las notas de N
alumnos de Lenguaje de Programacin, el alumno aprueba con notas mayores o
iguales a 12 puntos. Para conocer el nmero de alumnos aprobados, el nmero
de alumnos no aprobados busque la nota ms baja y se reporte una lista en orden
Alfabtico. Use estructura y funciones para ello.
14. Desarrolle un programa en C++ que ingrese los datos de N estudiantes de una
seccin. La informacin con que se cuenta de cada estudiante es: nombre, sexo y
nota. Debe contar la cantidad de hombres que estn en la seccin, cul es el
promedio de notas de la seccin, luego ordene alfabticamente e imprima la
informacin. Use estructura y funciones para ello.
15. Desarrolle un programa en C++ que ingrese los datos de N estudiantes de una
seccin. La informacin con que se cuenta de cada estudiante es: nombre, sexo y
nota. Debe contar la cantidad de mujeres que estn en la seccin, cul es el

Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella

promedio de notas de la seccin, luego ordene alfabticamente e imprima la


informacin. Use estructura y funciones para ello.
16. Se aplic una actividad de evaluacin a una seccin de N alumnos, el alumno
aprueba con notas mayores o iguales a 12 puntos. Se manejan los nombres y
notas de los estudiantes. Desarrolle un programa en C++ para conocer el nmero
de alumnos aprobados, el nmero de alumnos no aprobados, el promedio de
notas de la seccin, se desea ordenar alfabticamente, muestre toda la
informacin. Use estructura y funciones para ello.
17. Desarrolle un programa en C++ que ingrese los datos de N trabajadores de
una empresa. La informacin con que se cuenta de cada trabajador es: nombre,
edad y sueldo. Tambin se necesita conocer el sueldo neto a pagar a sus
empleados. Los descuentos a aplicar son: Seguro Social 5%, Ahorro Habitacional
7% y Caja de Ahorro 10%, estos descuentos son sobre el salario, y es sueldo neto
es la diferencia entre el salario y el total de las deducciones. Debe contar la
cantidad de empleados mayores de 50 aos que estn en la empresa, luego
ordene alfabticamente e imprima la informacin. Use estructura y funciones para
ello.
18. Desarrolle un programa en C++ que ingrese los datos de N estudiantes de una
seccin. La informacin con que se cuenta de cada estudiante es: nombre, edad y
nota. Se desea conocer el promedio de notas de la seccin, la cantidad de
alumnos mayores de edad que estn en la seccin, luego ordene alfabticamente
e imprima la informacin. Use estructura y funciones para ello.

Algortmica y Programacin

Unidad 9. Estructuras de Registros

Ing. Sullin Santaella