Descarga la aplicación para disfrutar aún más
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
Compartir