//=======================================================================================================================================
// Name : P4ricardomd1.cpp
// Author : Ricardo Meza Díaz
// Version :
// Copyright : Your copyright notice
// Description : 16 Diciembre
2015.Diseña un programa que simula la venta de coches oficiales para
venderselos a los cuatro candidatos
// que se presentaran a las elecciones el 20 D
//=======================================================================================================================================
//Diseñar el siguiente
programa:
//Debe venderle coches
oficiales a los candidatos que se presentaran a las elecciones el 20 de
Diciembre, y que procese un vector de N posiciones con un registro en cada
posición.
//Define las constantes y tipos
de datos que estimes convenientes. Hacer un registro que contenga la enumeración
del coche, la marca y el .No debe escogerse el color ya que, todos serán
negros(trabajar con el color negro en el programa es opcional).
//En el programa principal
tendremos el siguiente menú:
//1.Introducir los datos de los
coches a vender
//2.Mostrar los datos los
coches que se van a vender
//3.Simular la venta de coche
//5.Leer los datos de los
coches del fichero(leer fichero)
//6.Salir
//Todas las opciones del menú
(excepto salir) se implementarán en módulos.
//Realiza todas las
comprobaciones necesarias para que el usuario no se confunda al introducir los
datos.
#include <iostream>
#include<stdio.h>
#include<ctype.h>
//Inlcuyo la libreria fstream
para trabajar con ficheros
#include<fstream>
using namespace std;
//Defino las constantes
#define N 3
#define M 30
//Defino el tipo de dato cadena
para el registro comunidadyciudades
typedef char cadena[M];
//Definimos un tipo de registro
comunidadesyciudades
typedef struct {
int enumeracion;
cadena nombre;
float precio;
} cochelujoso; //Nombre del
registro
//Defino el tipo de vector que
se llamara vectorciudadesycomunidades y contendra el registro
comunidadesyciudades
typedef cochelujoso vectorcoches[N];
//Prototipos modulos
void introducircoche(vectorcoches v);
void mostrarcoche(const vectorcoches v);
void ventacoche(int numerolista, const vectorcoches v);
void almacenarcoche(const vectorcoches v);
void leerdatos(ifstream & entrada);
void pasardatosficheroalvector(vectorcoches v);
int menu();
int main() {
cadena politico;
;
cout << "*********CochesOficiales
S.L************" << endl;
cout << "Solo
vendemos coches oficiales" << endl;
cout << "Bienvenido(a)," << endl;
cout << "Es usted
Pablo,Albert,Mariano o Pedro?" << endl;
cin
>> politico;
cout << "Perfecto,ahora
escoja una de nuestras opciones:" << endl;
//Declaro el
vectorcoches v
vectorcoches v;
//Declaro
variables
int nhumerolista,
ohpcion;
//Declaro un
fichero de escritura de nombre salida
ofstream salida;
//Declaro un
fichero de lectura de nombre entrada
ifstream entrada;
//Llamada al
modulo menu
//Utilizo la
variable ohpcion para guardar en ella el menu, ya que el modulo menu es una
funcion y devuelve un entero
ohpcion
= menu();
//While que
comprueba que si la opcion introducida esta entre 1 y 6,se podrá ejectura el
modulo introducido
while (ohpcion >=1
&& ohpcion <= 6) {
//Switch para
poder seleccionar entre distisntas opciones
switch (ohpcion) {
case 1:
//Llamada al
modulo 1.Introducircoche
introducircoche(v);
break;
case 2:
//Llamada al
modulo 2.Mostrarcoche
mostrarcoche(v);
break;
case 3:
//Muestra por
pantalla un mensaje para que introduscas el podio del coche
cout
<<
"Introduce
el numero de podio donde se encuentra situado el coche:"
<<
endl;
//Debes
intorducir por teclado el nuemro de podio del coche
cin
>> nhumerolista;
//Llamada al
modulo 3.Ventacoche
ventacoche(nhumerolista,
v);
break;
case 4:
//Llamada al
modulo 4.Almacenarcoche
almacenarcoche(v);
break;
case 5:
//Llamada al
modulo 5.leerdatos
leerdatos(entrada);
break;
case
6:pasardatosficheroalvector(v);
break;
}
//Se vuelve a
llamar al modulo menu otra vez para que cuando se termine de ejecutar un modulo
vuelva a preguntar que modulo quiere elegir
ohpcion
= menu();
}
//Muestra este
mensaje al salir del programa
cout << "Usted ha
salido del programa" << endl;
//Muestra en
pantalla: "Presione una tecla para continuar..." cuando se ha salido
del programa
system("PAUSE");
return 0;
}
//Definicion de modulos
//Modulo 1.Introducircoche
void introducircoche(vectorcoches v) {
//For para ir
recorriendo el vector
for (int i = 0; i <
N; i++) {
cout
<<
"Introduce
el numero de podio donde se encuentra situado el coche en el
consecionario:"
<<
endl;
cin
>> v[i].enumeracion;
//While que
comprueba que si he introducido un numero de 1 hasta 10 se podran introducir
los datos del coche
//sino
mostrara error
while (v[i].enumeracion < 1 || v[i].enumeracion > 3) {
cout << "Error,
la enumeracion debe ser >=1 o <=3" << endl;
cin
>> v[i].precio;
}
cout << "Introduce
la marca del coche:" << endl;
cin
>> v[i].nombre;
cout << "Introduce
el precio:" << endl;
cin
>> v[i].precio;
//While que
comprueba que si he intorducido el precio mayor que cero se admitira ese precio
while (v[i].precio <= 0) {
cout << "Error,
el precio debe ser >0" << endl;
cin
>> v[i].precio;
}
}
}
//Modulo 2.Mostrarcoche
void mostrarcoche(const vectorcoches v) {
//For para ir
recorriendo el vector
for (int i = 0; i <
N; i++) {
//Se muestran
por pantalla los datos de los coches introducidos en el vector hasta el momento
cout << "La
enumeracion del coche es:" << v[i].enumeracion << endl;
cout << "La marca
del coche es:" << v[i].nombre << endl;
cout << "El
precio de coche es:" << v[i].precio << endl;
}
}
//Modulo 3.Ventacoche
void ventacoche(int numerolista, const vectorcoches v) {
//Defino un
contador y lo inicializo a cero
int i = 0;
bool encontrado = false;
//While que
comprueba que el contador debe ser menor o igual al total de coches para que
pueda mostrar los datos del coche
while (i < N
&& encontrado == false) {
//If que
comprueba que si he introducido un numero correspondiente al podio del coche,se
mostraran los datos del coche
if (v[i].enumeracion == numerolista)
{
cout << "El coche
es:" << " " << v[i].nombre << endl;
cout << "Su
precio es:" << v[i].precio << " " << "euros" << endl;
cout << "Por
tanto,debe pagar:" << v[i].precio << " " << "euros"
<<
endl;
encontrado
= true;
}
//Contador que
una aumentando en una unidad
i++;
}
if(encontrado==false){
cout<<"Error.Ha
introducido un numero incorrecto"<<endl;
}
}
//Modulo 4.Almacenarcoche
void almacenarcoche(const vectorcoches v) {
//Declaro el
fichero de escritura con nombre salida
ofstream salida;
//Abro el
fichero Coches.txt para escribir en el
salida.open("Coches.txt");
//If para
comprobar que si el fichero se abrio correctamente se podra escribir en el
//sino se
mostrara un mensaje de error
if (salida.fail())
{
cout << "Error.No
he podido abrir el fichero" << endl;
}
else {
cout << "El
fichero se abrio correctamente" << endl;
cout << "Por
tanto,se ha almacenado los datos" << endl;
//For para ir
recorriendo el vector
for (int i = 0; i <
N; i++) {
salida
<< v[i].enumeracion << " " << v[i].nombre << " ";
salida
<< v[i].precio << " " << endl;
}
}
//Se cierra el
fichero
salida.close();
}
//Modulo 5.Leerdatos
void leerdatos(ifstream & entrada)
{
//Declaro el
registro cochelujoso e, ya que los pasos son por variable y tienen qque ir al main y regresar
cochelujoso e;
//Abro el
fichero Coches.txt para leer los datos que hay en el
entrada.open("Coches.txt");
//If para
comprobar que si el fichero se abrio correctamente se podra leer en el
//sino se
mostrara un mensaje de error
if
(entrada.fail()) {
cout << "Error en
la apertura del fichero Coches.txt" << endl;
cout << "Puede
ser que el fichero no exista o este corrupto" << endl;
}
else {
//Lectura
anticipada para saber si hay fin de fichero
entrada
>> e.enumeracion;
//If para
comprobar que si se ha llegado a fin de fichero se mostrara un mensaje de que
esta vacio
//sino se
mostraran los datos del fichero
if (entrada.eof())
{
cout << endl << "El
fichero Coches.txt esta vacio" << endl;
}
else {
cout << endl << "Los
datos contenidos en el fichero son: " << endl;
//While que
comprueba que mientras no se llegue al final de fichero se mostraran todos los
datos que hayan en el
while
(!entrada.eof()) {
cout << "Enumeracion:" << e.enumeracion << " ";
entrada
>> e.nombre;
cout << "Nombre
del coche:" << e.nombre << " ";
entrada
>> e.precio;
cout << "precio:" << e.precio << " " << endl;
entrada
>> e.enumeracion;
}
}
}
}
void pasardatosficheroalvector(vectorcoches v) {
{
int cont;
ifstream in;
in.open("Coches.txt");
if (in.fail()) {
cout << "Se ha
producido un error en el fichero al leer" << endl;
cout << "Revise
el fichero" << endl;
}
else {
cont
= 0;
//lectura
previa
in
>> v[cont].enumeracion;
while (!in.eof()
&& cont < N) //no fin de fichero y no sobrepasemos
el tamanio del vector
{
in
>> v[cont].nombre;
in
>> v[cont].precio;
cont++;
in
>> v[cont].enumeracion;
}
if (!in.eof()) {
cout
<<
endl
<<
"El
fichero contiene mas datos de los que
caben en el vector";
cout
<<
endl
<<
"aunque
la carga del fichero al vector, se ha
realizado satisfactoriamente"
<<
endl;
}
else {
cout
<<
endl
<<
"La
carga del fichero al vector, se ha
realizado satisfactoriamente"
<<
endl;
}
}
in.close();
}
}
//leer datos del vector
//Modulo 6.Menu
int menu() {
//Declaro una
variable opcion que sera devuelta al elegir la opcion deseada
int opcion;
cout << "1.Introducir
los datos coches" << endl;
cout << "2.Mostrar
los datos de los coches" << endl;
cout << "3.Simulacion
venta de algun coche" << endl;
cout << "4.Almacenar
los datos en el fichero de texto" << endl;
cout << "5.Leer
los datos del fichero de texto" << endl;
cout<<"6.Pasae
datos del fichero al vector"<<endl;
cout << "7.Salir" << endl;
cout << "Escoja
una opcion:" << endl;
cin
>> opcion;
//While para
comprobar que si la opcion introducida es menor que <1 || > 6 mostrara un
mensaje de error
// y que
introduzcas un numero correcto
while (opcion < 1
|| opcion > 8) {
cout
<<
"Error.Ha
introducido un numero diferente a los que le mostramos"
<<
endl;
cout << "Introduzca
un numero del 1 al 7:" << endl;
cin
>> opcion;
}
//Devuelve la
variable opcion elegida
return opcion;
}
No hay comentarios:
Publicar un comentario