|
Inicio
Generalidades
Ejercicios
Talleres
Proyecto
|
Ejercicios "amistosos"
Listas y registros
Primero, un
breve 'rewind' de Estructuras de Datos I.
#include "iostream.h"
#include "conio.h"
#include "stdio.h"
#define lp clrscr()
#define ESC 27
// Programita ejemplo para crear e imprimir una lista enlazada.
struct nodo{
long codg; // info1
char nom[20]; // info2
nodo *sig; // puntero al
siguiente nodo
}*p,*inicio=0;
void imprilista(){
cout << "Contenido de la LISTA..." << endl;
p=inicio; //
Dirección del primer nodo de la lista
if (p == 0){
cout << "Lista vacía!";getch();}
else{
while (p != 0){
cout << p->codg << " " << p->nom << endl;
p=p->sig;
}
}
cout << endl << "Hasta pronto...!";
}
void crearlista(){
lp;
int tecla;
inicio=new nodo; // para crear el primer nodo
if (inicio == 0){
cout << "Memoria insuficiente!";getch();}
else{
p=inicio;
do{
lp;
cout << "INFORMACION DEL ALUMNO" << endl;
cout << "Codigo? : "; cin >> p->codg;
cout << "Nombre -> "; gets(p->nom);
p->sig=0;
cout << "ENTER para Continuar, ESC para Salir...";
tecla=getch();
if (tecla != ESC){
p->sig=new nodo;
// crea nuevo nodo
p=p->sig;}
}while(tecla != ESC);
}
}
void main(){
crearlista();lp;
//textbackground(GREEN);textcolor(RED);
imprilista(); getch();
}
Codificar los siguientes programas de computación en Lenguaje C/C++ :
- Crear una lista enlazada para guardar el directorio telefónico de
los alumnos del curso de Datos II. Diseñar un menú con las opciones de
Adicionar, Consultar, Modificar, Borrar e Imprimir nodos de la
lista.
- Ana y Rocío compiten por la medalla olímpica de
gimnasia en el Tolima. Utilizar una estructura dinámica para leer
por teclado los puntajes emitidos por los 5 jueces, hallar el promedio
de cada gimnasta y determinar quién es la campeona.
- Crear una lista enlazada con los sueldos de N empleados e imprimir
la lista en forma descendente.
- Escriba una función que imprima en orden inverso los elementos de
una lista enlazada. Recorra la lista apilando cada elemento en una
pila. Cuando alcance el fin de la lista enlazada, extraiga
repetidamente la cima hasta que la pila se quede vacía.
- Una eliminación en una lista enlazada nos genera el siguiente
problema: cuando el elemento actual es borrado, ¿cuál se convierte
en el nuevo elemento actual? Discuta varias alternativas.
- Una cola puede ser implementada utilizando un vector y manteniendo
su tamaño actual. Los elementos de la cola se almacenan en posiciones
consecutivas del vector, con el primer elemento siempre en la
posición 0. Escriba las funciones para Insertar y Retirar. Consultar
cómo sería su implementación en lenguaje Java. (Implementar
una cola utilizando un vector NO es el método más eficiente. Trate
de localizar la razón principal por la que alguna de las operaciones
es ineficiente y proponga una implementación alternativa que resulte
plenamente satisfactoria).
Registros
// Programa ejemplo para crear un arreglo de registros:
#include "iostream.h"
#include "conio.h"
#include "stdio.h"
#define T 20 // tamaño del arreglo
#define lp clrscr();
#define g gotoxy
struct fecha{ // Registro fecha
int dd,mm,aa; // dia,mes,año
};
struct jugador{ // Registro jugador
int codi,num_cami; // código y número de camiseta
char nombre[25],sexo;
char equipo[20];
float estatura;
fecha fe_naci; // Registro anidado - fecha de nacimiento
};
// arreglo de registros de tipo jugador inicializado con un registro
jugador futbolista[T]={77,10,"David Andres Martinez V.",'M',"DEPORTES TOLIMA",1.70,18,12,85};
int i,nr;
void titulos(){
g(15,7); cout <<"CODIGO JUGADOR:";
g(15,8); cout <<"NOMBRE :";
g(15,9); cout <<"SEXO <F/M> :";
g(15,10); cout <<"ESTATURA :";
g(15,11); cout <<"Nro. CAMISETA :";
g(15,12); cout <<"EQUIPO :";
g(15,13); cout <<"FECHA DE NACIMIENTO";
g(24,14); cout <<"DIA :";
g(24,15); cout <<"MES :";
g(24,16); cout <<"AÑO :";
}
void adicionar(){
for(i=1;i<nr;i++){
lp
g(18,5);cout <<"I N G R E S O D E J U G A D O R";
titulos(); //Llama la funcion titulos()
g(35,7); cin>>futbolista[i].codi;
g(35,8); gets(futbolista[i].nombre);
g(35,9); cin>>futbolista[i].sexo;
g(35,10);cin >>futbolista[i].estatura;
g(35,11);cin >>futbolista[i].num_cami;
g(35,12);gets(futbolista[i].equipo);
g(35,14);cin>>futbolista[i].fe_naci.dd;
g(35,15);cin>>futbolista[i].fe_naci.mm;
g(35,16);cin>>futbolista[i].fe_naci.aa;
}
}
void imprimir(){
for(i=0;i<nr;i++){
lp
g(18,5);cout <<"LISTA DE JUGADORES";
titulos(); g(35,7);
cout<<futbolista[i].codi; g(35,8);
cout<<futbolista[i].nombre; g(35,9);
cout<<futbolista[i].sexo; g(35,10);
cout<<futbolista[i].estatura; g(35,11);
cout<<futbolista[i].num_cami; g(35,12);
cout<<futbolista[i].equipo; g(35,14);
cout<<futbolista[i].fe_naci.dd; g(35,15);
cout<<futbolista[i].fe_naci.mm; g(35,16);
cout<<futbolista[i].fe_naci.aa; g(35,18);
cout<<"Presione ENTER para continuar..."; getche();
}
}
void main(){
do{
lp
cout <<"Cuantos registros desea procesar? -> ";
cin>>nr;
if(nr<2 || nr>T){ // validación de entrada de dato
cout << "ERROR! numero de registros no puede ser < 2 ni > "<<T<<endl;
cout << "Por favor, intente de nuevo...";getch();}
}while(nr<2 || nr>T);
adicionar();
imprimir();
}
-
Un médico almacena la siguiente
información de sus pacientes: Cédula, nombre, teléfono, fecha de
última visita, si tiene seguridad social y un campo de observaciones.
Escriba un programa con las siguientes opciones:
a) Leer los registros de todos los
pacientes
b) Leer el nombre de un paciente y
visualizar la fecha de su última visita.
c) Imprimir el listado de todos los
pacientes ordenado alfabéticamente.
d) ¿Cuántos pacientes tienen seguridad
social?
2. Escriba un programa para leer
la cédula, nombre, código de programa, teléfono y sueldo de todos los
profesores de la universidad. Calcular un aumento del 7% a los docentes
del programa de Sistemas e imprimir un listado general de profesores
ordenado por cédula.
3. En el Instituto de Educación
a Distancia IDEAD se tienen los siguientes datos por cada alumno: Nombre,
código, fecha de nacimiento, número de semestres cursados y
calificación promedio por semestre. Escriba un programa modular que
lea registros de N alumnos y: a) Imprimir el código y
nombre de estudiantes con promedio general superior o igual a 4.0. b)
Actualizar los campos que correspondan cuando un estudiante ha finalizado
un semestre.
------------------------------------------------------------------------------------
|