lunes, 30 de mayo de 2016

Practica 10 a subir

//================================================================================================================================
// Name        : P3ricardomd1.cpp
// Author      : Ricardo Meza Díaz
// Version     :
// Copyright   : Your copyright notice
// Description : 2 Diciembre.2015.Programa de trabajo con dos vectores.Uso del while,prototipos,modulos,variables aleatorias...
//================================================================================================================================

#include <iostream>
using namespace std;
#define N 10
//Definicion tipo de dato vector vectordatos
typedef int  vectordatos[N];

//Prototipo modulos
void introducirnumerosaleatorio(vectordatos v1 );
void mostrartodoslosnumerosdelvector(const vectordatos v1);
int mostrarcuantosvaloresdistintosdecero(vectordatos v1);
int mostrarcuantasvecesserepiteunnumero(vectordatos v1,int numerorepetido);
bool mostrarsidosarrayssoniguales(const vectordatos v1,const vectordatos w1);
int menu();

int main() {
     cout<<"Buenas,"<<endl;
     srand(time(NULL));
     vectordatos v,w;
     int ohpcion,seleccion,nhumerorepetido,chontador;

     //Switch para escoger opciones en el menu
     //Llamada al modulo menu
     ohpcion=menu();
     while(ohpcion>=1 &&ohpcion<=5){

     switch(ohpcion){
     case 1: cout<<"Cual de los vectores quiere seleccionar.Introduzca 1 o 2?"<<endl;
     cin>>seleccion;
     if(seleccion==1){
         introducirnumerosaleatorio(v);
     }
     else{
         introducirnumerosaleatorio(w);
     }

     break;
     case 2:cout<<"Cual de los vectores quiere seleccionar.Introduzca 1 o 2?"<<endl;
     cin>>seleccion;
     if(seleccion==1){
         mostrartodoslosnumerosdelvector(v);
     }
     else{
         mostrartodoslosnumerosdelvector(w);
     }
     break;
     case 3:cout<<"Cual de los vectores quiere seleccionar.Introduzca 1 o 2?"<<endl;
     cin>>seleccion;
     if(seleccion==1){
         chontador=mostrarcuantosvaloresdistintosdecero(v);
         cout<<"Hay"<<" "<<chontador<<" "<<"numeros distintos de cero "<<endl;
     }
     else{
         chontador=mostrarcuantosvaloresdistintosdecero(w);
         cout<<"Hay"<<" "<<chontador<<" "<<" numeros distintos de cero"<<endl;
     }
     break;
     case 4:cout<<"Cual de los vectores quiere seleccionar.Introduzca 1 o 2?"<<endl;
     cin>>seleccion;
     if(seleccion==1){
         cout<<"Introduce un numero entero positivo"<<endl;
         cin>>nhumerorepetido;
          chontador=mostrarcuantasvecesserepiteunnumero(v,nhumerorepetido);
         cout<<"El numero"<<" "<<nhumerorepetido<<"se repite"<<" "<<chontador<<" "<<"veces"<<endl;
     }
     else{
         cout<<"Introduce un numero entero positivo"<<endl;
         cin>>nhumerorepetido;
          chontador=mostrarcuantasvecesserepiteunnumero(w,nhumerorepetido);
         cout<<"El numero"<<" "<<nhumerorepetido<<"se repite"<<" "<<chontador<<" "<<"veces"<<endl;
     }
     break;
     case 5:
     if(mostrarsidosarrayssoniguales(v,w)==true){
         cout<<"Los dos array son iguales"<<endl;
     }
     else{
         cout<<"Los dos arrays son diferentes"<<endl;

     }
     break;
     }
     ohpcion=menu();
     }
     cout<<"Usted ha salido del programa"<<endl;
     system("PAUSE");
     return 0;
}
//Modulo 1
void introducirnumerosaleatorio(vectordatos v1){
     for(int i=0;i<N;i++){
         v1[i]=rand()%31;
         cout<<"El numero aleatorio:"<<i<<"es:"<<v1[i]<<endl;
     }
     cout<<"Los numero aleatorios han sido introducidos correctamente"<<endl;

}
//Modulo 2
void mostrartodoslosnumerosdelvector(const vectordatos v1){
     for(int i=0;i<N;i++){
              cout<<"El numero"<<i<<"es:"<<v1[i]<<endl;
         }
}
//Modulo 3
int mostrarcuantasvecesserepiteunnumero(vectordatos v1,int numerorepetido){
     int contador=0;
         for(int i=0;i<N;i++){
              if(v1[i]==numerorepetido){
                   contador=contador+1;
              }
         }
         return contador;
     }
//Modulo 4
int mostrarcuantosvaloresdistintosdecero(vectordatos v1){
     int contador=0;
              for(int i=0;i<N;i++){
                   if(v1[i]!=0){
                        contador=contador+1;
                   }
              }
              return contador;
         }
//Modulo 5
bool mostrarsidosarrayssoniguales(const vectordatos v1,const vectordatos w1){
     bool iguales;
     iguales=true;
     int i=0;
     while(iguales==true&&i<N){
         if(v1[i]!=w1[i]){
              iguales=false;
         }
         i++;
     }
     return iguales;
}
//Modulo 6
int menu(){
     int opcion;
     cout<<"Introduce un opcion:"<<endl;
     cout<<"1.Introducir en el array datos aleatorios entre 0 y 30"<<endl;
     cout<<"2.Mostrar todos los elementos del array seleccionado"<<endl;
     cout<<"3.Mostrar cuantos valores hay distintos de cero en el array seleccionado"<<endl;
     cout<<"4.Mostrar cuantas veces se repite un valor en el array seleccionado"<<endl;
     cout<<"5.Mostrar si los dos arrays son iguales"<<endl,
     cout<<"6.Salir"<<endl;
     cin>>opcion;
     while(opcion<=1&&opcion>=6){
                   cout<<"Error.Ha introducido un numero diferente a los que le mostramos"<<endl;
                   cout<<"Introduzca un numero del 1 al 6:"<<endl;
                   cin>>opcion;
              }
         return opcion;

     }



Ultima Entrega curso 2015-2016

//=======================================================================================================================================
// 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;
}