Logo Studenta

Reporte Practica 1

¡Este material tiene más páginas!

Vista previa del material en texto

Programación Visual
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE LA LAGUNA
Programación visual
	
Edgar Daniel Alba González (19130736)
6º Semestre de Ing. Electrónica
Practica #1
Profesor: Alejandro Enrique Dzul López
Índice
Introducción	3
Planteamiento del problema	4
Desarrollo	5
Resultados	6
Ejecución	13
Opción #1 Llenar libro	13
Opción #2 Ordenar los libros alfabéticamente.	15
Opción #3 Ordenar de mayor a menor los precios de los libros.	15
Opción #4 Ordenar por cantidad de libros en existencia.	16
Conclusión	17
Introducción
Una estructura de datos es una forma particular de organizar datos en una computadora para que pueda ser utilizado de manera eficiente. Diferentes tipos de estructuras de datos son adecuados para diferentes tipos de aplicaciones, y algunos son altamente especializados para tareas específicas. Las estructuras de datos son un medio para manejar grandes cantidades de datos de manera eficiente para usos tales como grandes bases de datos y servicios de indización de Internet. Por lo general, las estructuras de datos eficientes son la clave para diseñar algoritmos eficientes. Algunos métodos formales de diseño y lenguajes de programación destacan las estructuras de datos, en lugar de los algoritmos, como el factor clave de organización en el diseño de software.
La mayoría de los lenguajes ensambladores y algunos lenguajes de bajo nivel carecen de soporte de estructuras de datos. En cambio, muchos lenguajes de alto nivel y algunos lenguajes ensambladores de alto nivel, tales como MASM, tienen algún tipo de soporte incorporado para ciertas estructuras de datos, tales como los registros y arreglos. Por ejemplo, el lenguaje C soporta variables simples estáticas, dinámicas y registros, respectivamente, además de arreglos y matrices multidimensionales. La mayoría de los lenguajes de programación disponen de algún tipo de biblioteca o mecanismo en el uso de estructuras de los programas. Los lenguajes modernos por lo general vienen con bibliotecas estándar que implementan las estructuras de datos más comunes.
Planteamiento del problema
Desarrollar un programa en lenguaje C/C++ y en modo consola que posea el siguiente menú
repetitivo:
MENU
1. Llenar la lista de libros
2. Ordenar alfabéticamente los nombres de los libros
3. Ordenar por precio los libros (mayor a menor)
4. Ordenar por cantidad de libros en existencia
5. Salir
El programa deberá poseer la declaración de una Estructura de Datos llamada Libro. La cual contiene un Nombre (cadena de caracteres – máximo 40), un Precio (número real), una cantidad de libros disponibles (entero positivo). La cantidad de libros máxima es de 15, por lo que el usuario, al momento de llenar la lista de libros, deberá suministrar la cantidad de libros a dar de alta en la lista (de 1 a 15). El programador, puede añadir las funciones que desee, por ejemplo, una función para mostrar la lista de libros que puede ser utilizada después de haber ordenado (opciones 2-4).
Desarrollo
Primero se inició con la declaración de las librerías que se usaran a lo largo de la práctica, como las predeterminadas que son #include<iostream> y #include<conio.h>, así como las incluidas para desarrollar la práctica, que son: #include<stdlib.h> que es la que nos ayudara a guardar el control de procesos con una memoria dinámica y #include <string.h> que es la que nos servirá para manipular las cadenas que establecimos en el código, cambiando sus caracteres al introducir los datos que se solicitan.
Después de declarar las variables, se definió una estructura llamada Libro, donde estarán registrados los datos que se requieren y que el usuario va a definir, que son el nombre del libro, su precio y la cantidad de copias del libro. También se introdujo una variable llamada “R1” que servirá para generar una pregunta al usuario donde él mismo quiera agregar más datos de otros libros. Hay otra variable que será llamada a lo largo de los procesos del menú, que se llama libcont.
Las opciones del menú están establecidas en void, la cual establecí en cada una de las opciones del menú en forma de lista, donde se guardarán los datos ingresados por el usuario que vienen siendo el nombre, el precio y la cantidad de libros, así como también mostrar la lista.
Resultados
Código
#include<iostream>
#include<stdlib.h>
#include <conio.h>
#include <string.h>
#define CA 9999
using namespace std;
typedef struct
{
 char Nombre[40];
 int Cantidad;
 int Precio;
}Libro;
int Respuesta=0;
int libcont=0;
void llenar_libro(Libro []);
void ordenar_lista_nombre(Libro []);
void ordenar_lista_precio(Libro []);
void ordenar_lista_cantidad(Libro []);
void mostrar_lista(Libro []);
void main(void)
{
 Libro lista[CA];
 
int opc;
do{ system("cls");
cout<<"MENU"<<endl<<endl;
cout<<" 1. Llenar la lista de libros. "<<endl;
cout<<" 2. Ordenar alfabeticamente los nombres de los libros. "<<endl;
cout<<" 3. Ordenar por precio los libros (mayor a menor). "<<endl;
cout<<" 4. Ordenar por cantidad de libros en existencia. "<<endl;
cout<<" 5. Salir. "<<endl;
cout<<endl<<endl<<" Por favor eleja una de las opciones: "<<endl<<endl;
cin>>opc;
switch(opc)
{
case 1: system("cls");
cout <<endl<<"1. Llenar la lista de libros. " <<endl;
llenar_libro(lista);
system("pause");
break;
case 2: system("cls");
cout<<endl<<"2. Ordenar alfabeticamente los nombres de los libros. "<<endl;
ordenar_lista_nombre(lista);
mostrar_lista(lista);
system("pause");
break;
case 3: system("cls");
cout<<endl<<" 3. Ordenar por precio los libros (mayor a menor). "<<endl;
ordenar_lista_precio(lista);
mostrar_lista(lista);
system("pause");
break;
case 4: system("cls");
cout<<endl<<" 4. Ordenar por cantidad de libros en existencia. "<<endl;
ordenar_lista_cantidad(lista);
mostrar_lista(lista);
system("pause");
default:
break;
}
}
while(opc!=5);
cout<<endl<<endl;
}
 void llenar_libro(Libro a[])
{
 for(int i=0;i<CA;i++)
 {
 system("cls");
 cout<<"\nIngresar Informacion Del Libro "<<i+1;
 fflush(stdin);
 cout<<"\n\nDar el nombre del libro = ";
 cin.get(a[i].Nombre,40,'\n');
 cout<<"\nDar La Cantidad = ";
 cin>>a[i].Cantidad;
 cout<<"\nDar El Precio = ";
 cin>>a[i].Precio;
 cout<<"\n¿Agregar otro libro? (1 = Si, 2 = No) ";
 cin>>Respuesta;
 if (Respuesta == 2)
 {
 i=10000;
 }
 libcont=libcont+1;
 }
}
 void ordenar_lista_nombre(Libro a[])
{
 int i,j;
 Libro var_aux;
 for (i=1; i<libcont; i++)
 {
 for (j=0; j<libcont - 1; j++)
 {
 if (strcmp(a[j].Nombre,a[j+1].Nombre)>0)
 {
 var_aux = a[j];
 a[j] = a[j+1];
 a[j+1] = var_aux;
 }
 }
 }
}
 void ordenar_lista_precio(Libro a[])
{
 int i,j;
 Libro var_aux;
 for(i=0;i<libcont-1;i++)
 {
 for(j=0;j<libcont-1;j++)
 {
 if(a[j].Precio < a[j+1].Precio)
 {
 var_aux = a[j];
 a[j] = a[j+1];
 a[j+1] = var_aux;
 }
 }
 }
}
void ordenar_lista_cantidad(Libro a[])
{
 int i,j;
 Libro var_aux;
 for(i=0;i<libcont-1;i++)
 {
 for(j=0;j<libcont-1;j++)
 {
 if(a[j].Cantidad < a[j+1].Cantidad)
 {
 var_aux = a[j];
 a[j] = a[j+1];
 a[j+1] = var_aux;
 }
 }
 }
}
void mostrar_lista(Libro a[])
{
 int q;
 for(q=0;q<libcont;q++)
 {
 cout<<"\n"<<a[q].Nombre<<""<<a[q].Precio<<" "<<a[q].Cantidad<<endl;
 }
}
Ejecución
Opción #1 Llenar libro
Opción #2 Ordenar los libros alfabéticamente.
Opción #3 Ordenar de mayor a menor los precios de los libros.
Opción #4 Ordenar por cantidad de libros en existencia.
Conclusión
Como conclusión, realizar esta práctica fue bastante complicado, más que nada al momento de acomodar los procesos que se necesitan para las opciones del menú, en lo personal este programa me ayudó un poco mejorando respecto a la aplicación de menús en programación y es algo que pienso mejorar en respecto a sus aplicaciones, ya que en semestres anteriores no había desarrollado un programa como éste, pero me las pude arreglar para que pudiera funcionar. Cabe destacar la manera en la que las clases nos hacen un poco más sencillo al momento de programar, además de que contiene una estructura con sus funciones respectivas para declaración de variables y funciones, esto hace que sean más prácticos de manejar en el desarrollo del código principal del problema planteado, también haciendo mención de los constructores lo cual nos ayuda a inicializar los valores de los datos que vayamos a ingresar evitando usar más comandos y por lo tanto ahorra líneas de código haciéndolo más fácil, corto y eficiente, además de amigable para el usuario. 
				Página | 1

Otros materiales