Logo Studenta

Reporte Practica 2

¡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 #2
Profesor: Alejandro Enrique Dzul López
Índice
Introducción	3
Planteamiento del programa	4
Desarrollo	5
Resultados	6
Ejecución	14
Opción #1 Llenar la lista de libros.	14
Opción #2 Ordenar alfabeticamente los nombres de los libros.	16
Opción #3 Ordenar por precio los libros (de mayor a menor).	17
Opción #4 Ordenar por cantidad de libros en existencia.	17
Opción #5 Crear un archivo de texto con la lista de los libros	18
Opción #6 Leer la lista de libros en un archivo	19
Conclusión	20
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.
Los archivos o ficheros son la forma en la que C++ permite el acceso al disco.
Todos los procesos tienen abiertos, por defecto, los archivos 0(entrada), 1(salida) y 2(salida de errores), de manera que en C++ se corresponden con los objetos cin, cout y cerr. De estos últimos, el primero pertenece a la clase ifstream, que a su vez desciende de istream (flujo de entrada). Los dos últimos pertenecen a la clase ofstream, que desciende de la clase ostream (flujo de salida).
Los archivos de texto son los más sencillos de manejar, pues, como ya se ha mencionado, para trabajar con ellos se emplean los operadores de inserción y extracción que ya se conocen de la consola.
Planteamiento del programa
Desarrollar un programa, en lenguaje C++ y en modo consola, basado en la práctica #01. Basados en el MENU, se modificarán las últimas opciones como sigue:
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 – Guardar la lista de libros en un archivo
6 – Leer la lista de libros de un archivo
7 – Salir
En el programa se anexaron las opciones 5 y 6 para el manejo de archivos. En ambos casos, el archivo
se llamará p02.txt, y tendrá el siguiente formato:
NombreLibro1 PrecioLibro1 Existencia1
NombreLibro2 PrecioLibro2 Existencia2
NombreLibro3 PrecioLibro3 Existencia3
NombreLibroM PrecioLibroM ExistenciaM
NombreLibroN PrecioLibroN ExistenciaN
Desarrollo
Para solucionar el problema iniciamos con la declaración de las librerías que utilizaremos en el desarrollo del programa; en este programa definí un límite de 9999, mismo que utilicé en la practica pasada, la cual me ayuda a romper el ciclo del ingreso de los libros después proseguí a iniciar la función principal a la cual llamé switch (que se utiliza para seleccionar uno o más bloques de ejecución) el cual está separado por 7 opciones que componen el menú de la práctica. 
Después de eso, continue a realizar cada una de las opciones, al inicio del programa realice un typedef struct la cual me permitió declarar la estructura que llamé Libro (esta estructura tiene para poder registrar Nombre en 40 caracteres, Precio, Cantidad), después llame a los espacios vacíos (void) los cuales guardaban los datos de la estructura, al tener estos espacios vacíos, pude agregar una lista la cual me ayudó a ingresar los datos y guardarlos, al tener esos datos continue a realizar los arreglos que me permitirán llenar, guardar y ordenar los datos requeridos al usuario. 
En las últimas 2 opciones utilicé el método de “Guardar Archivo” que me permite crear un archivo de texto que registra los datos ingresados y la otra opción es “Lectura De Texto”, que es parecido a la opción mostrar_lista o similares, donde el único cambio es que encuentra un archivo de texto y lo lee sin necesidad de ingresar previamente.
Resultados
Código
#include<iostream>
#include<stdlib.h>
#include <conio.h>
#include<fstream.h>
#define CA 9999
using namespace std;
typedef struct
{
 char Nombre[40];
 int Cantidad;
 int Precio;
}Libro;
fstream l;
string Linea;
int R1=0;
int libcont=0;
int cantidadlibros=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 guardar_lista(Libro []);
void leer_lista(Libro []);
void main(void)
{
Libro lista[CA];
int opc;//Declaración de variable de tipo entero
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. Guardar la lista de libros en un archivo. "<<endl;
cout<<" 6. Leer la lista de libros de un archivo. "<<endl;
cout<<" 7. Salir. "<<endl;
cin>>opc;
switch(opc)
{
case 1: system("cls");
cout <<endl<<"1. Llenar la lista de libros. " <<endl;
llenar_libro(lista);
cout <<endl;
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);
cout <<endl;
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);
cout <<endl;
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);
cout <<endl;
system("pause");
break;
case 5: system("cls");
cout<<endl<<" 5. Guardar la lista de libros en un archivo. "<<endl;
cout<<"\nEscritura del archivo\n";
guardar_lista(lista);
cout <<endl;
system("pause");
break;
case 6: system("cls");
cout<<endl<<" 6. Leer la lista de libros de un archivo. "<<endl;
leer_lista(lista);
cout <<endl;
system("pause");
default:
break;
}
}
while(opc!=7);
cout<<endl<<endl;
}
/*Funciones*/
 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<<"\nIngrese la cantidad de libros = ";
 cin>>a[i].Cantidad;
 cout<<"\nIngrese el Precio = ";
 cin>>a[i].Precio;
 cout<<"\n¿Desea agregar otro libro? (1 = Si, 2 = No) ";
 cin>>R1;
 if (R1 == 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<<"\nNombreLibro"<<q+1<<" = "<<a[q].Nombre<<" "<<"PrecioLibro"<<q+1<<" = "<<a[q].Precio<<" "<<"Existencia"<<q+1<<" = "<<a[q].Cantidad;
 }
}
void guardar_lista(Libro a[])
{
int i;
 l.open("p02.txt",ios::out);
 for(i=0;i<libcont;i++)
 {
 l<<"\nNombreLibro"<<i+1<<" = "<<a[i].Nombre<<" "<<"PrecioLibro"<<i+1<<"= "<<a[i].Precio<<" "<<"Existencia"<<i+1<<" = "<<a[i].Cantidad;
 }
 l.close();
}
void leer_lista(Libro a[])
{
if(!l.is_open())
l.open("p02.txt",ios::in);
while(getline(l, Linea))
cout<<Linea<<"\n";
l.close();
 }
Ejecución
Opción #1 Llenar la lista de libros.
Opción #2 Ordenar alfabeticamente los nombres de los libros.
Opción #3 Ordenar por precio los libros (de mayor a menor).
Opción #4 Ordenar por cantidad de libros en existencia.
Opción #5 Crear un archivo de texto con la lista de los libros
Sin archivo de texto
Indicación de archivo de texto creado
Con archivo de texto ya creado
Opción #6 Leer la lista de libros en un archivo
Conclusión
Como conclusión, realizar esta práctica fue bastante complicado y fácil a la vez, más que nada al momento de acomodar los procesos que se necesitan para las opciones del menú y agregar las nuevas opciones que se requerían, en lo personal este programa me ayudó un poco a mejorar respecto a la aplicación de menús en programación y es algo que necesito mejorar en respecto a sus aplicaciones, como es el agregar información a un archivo de texto, pero lo pude desarrollar para que pudiera funcionar. 
 pág. 2

Otros materiales