Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <fstream>
  4. #include <windows.h>
  5.  
  6. using namespace std;
  7. struct reg1{
  8.     int codigo;
  9.     int cantidad;
  10.     int precio;
  11. };
  12.  
  13. struct reg2{
  14.     int codigo;
  15.     int cantidad;
  16.     int peso;
  17. };
  18.  
  19. struct reg3{
  20.     int codigo;
  21.     int cantidad;
  22.     int datos[2];
  23. };
  24. void creapesos();
  25. void creaprecios();
  26. void juntayensena();
  27.  
  28. int main()
  29. {
  30.     char opcion;
  31.     do{
  32.         system("cls");
  33.         cout << "Este programa crea los ficheros\nLos codigos ordenados\n\nElija opcion\n\n";
  34.         cout << "1 - Crear fichero de pesos\n2 - Crear fichero de precios\n3 - Crear mezcla.dat\n4 - Salir\n";
  35.         opcion = getch();
  36.         switch (opcion){
  37.             case '1': creapesos();
  38.                     break;
  39.             case '2': creaprecios();
  40.                     break;
  41.             case '3': juntayensena();
  42.                     break;
  43.             case '4':break;
  44.  
  45.             default: cout << "\nOpcion incorrecta, pulsa del 1 al 4";
  46.                         Sleep(2000);
  47.                     break;
  48.                     }
  49.  
  50.         }while (opcion!='4');
  51.         return 0;
  52.     }
  53.  
  54. void creapesos(){
  55.     reg2 r2;
  56.     int ultimo = -1;
  57.     char seguir;
  58.     ofstream f2("pesos.dat",ios::binary);
  59.     if (f2){
  60.         cout << "\nSe crea fichero de pesos\n\n";
  61.         do{
  62.             do{
  63.                 cout << "Deme codigo: ";
  64.                 cin >> r2.codigo;
  65.             }while (r2.codigo<=ultimo); //comprobacion para que no metas un numero menor que 1 y menor que el anterior
  66.             ultimo=r2.codigo;
  67.             cout << "Deme cantidad: ";
  68.             cin >> r2.cantidad;
  69.             cout << "Deme peso: ";
  70.             cin >> r2.peso;
  71.             f2.write ((char*)&r2,sizeof(reg2));//*mirar el bloc* sizeof es el tamaño de de la estructura para guardar ese almacenamiento
  72.             cout << "\nDesea mas datos (s/n)?\n";
  73.             seguir = getch();
  74.             }while (seguir!='n');
  75.             f2.close();
  76.         }else
  77.         cout << "Error en la apertura del fichero\n";
  78.     }
  79.  
  80.  
  81. void creaprecios(){
  82.     reg1 r1;
  83.     int ultimo = -1;
  84.     char seguir;
  85.     ofstream f1("precios.dat",ios::binary);
  86.     if (f1){
  87.         cout << "\nSe crea fichero de precios\n\n";
  88.         do{
  89.             do{
  90.                 cout << "Deme codigo: ";
  91.                 cin >> r1.codigo;
  92.             }while (r1.codigo<=ultimo);
  93.             ultimo=r1.codigo;
  94.             cout << "Deme cantidad: ";
  95.             cin >> r1.cantidad;
  96.             cout << "Deme precio: ";
  97.             cin >> r1.precio;
  98.             f1.write ((char*)&r1,sizeof(reg1));
  99.             cout << "\nDesea mas datos (s/n)?\n";
  100.             seguir = getch();
  101.             }while (seguir!='n');
  102.             f1.close();
  103.         }else
  104.         cout << "Error en la apertura del fichero\n";
  105.     }
  106. void juntayensena(){
  107.     reg1 r1;
  108.     reg2 r2;
  109.     reg3 r3;
  110.     ifstream f1("precios.dat", ios::binary);
  111.     if (f1){
  112.         ifstream f2("pesos.dat", ios::binary);
  113.         if (f2){
  114.             ofstream f3("mezcla.dat",ios::binary);
  115.             if (f3){
  116.                 f1.read((char*)&r1,sizeof(reg1));
  117.                 f2.read((char*)&r2,sizeof(reg2));
  118.                 while (!f1.eof() && !f2.eof()){
  119.                     if(r1.codigo<r2.codigo){
  120.                         r3.codigo=r1.codigo;
  121.                         r3.cantidad=r1.cantidad;
  122.                         r3.datos[0]=r1.precio;
  123.                         r3.datos[1]=0;
  124.                         f1.read((char*)&r1,sizeof(reg1));
  125.                     }else if (r1.codigo>r2.codigo){
  126.                         r3.codigo=r2.codigo;
  127.                         r3.cantidad=r2.cantidad;
  128.                         r3.datos[1]=r2.peso;
  129.                         r3.datos[0]=0;
  130.                         f2.read((char*)&r2,sizeof(reg2));
  131.                         }else {
  132.                         r3.codigo=r1.codigo;
  133.                         r3.cantidad=r1.cantidad+r2.cantidad;
  134.                         r3.datos[1]=r1.precio;
  135.                         r3.datos[0]=r2.peso;
  136.                         f1.read((char*)&r1,sizeof(reg1));
  137.                         f2.read((char*)&r2,sizeof(reg2));
  138.                         }
  139.                         f3.write((char*)&r3,sizeof(reg3));
  140.                 }
  141.                 while(!f1.eof()){
  142.                     r3.codigo=r1.codigo;
  143.                     r3.cantidad=r1.cantidad;
  144.                     r3.datos[0]=r1.precio;
  145.                     r3.datos[1]=0;
  146.                     f1.read((char*)&r1,sizeof(reg1));
  147.                     f3.write((char*)&r3, sizeof(reg3));
  148.                     }while (!f2.eof()){
  149.                         r3.codigo = r2.codigo;
  150.                         r3.cantidad  = r2.cantidad;
  151.                         r3.datos[1]  = r2.peso;
  152.                         r3.datos[0]  = 0;
  153.                         f2.read((char*)&r2, sizeof(reg2));
  154.                         f3.write((char*)&r3, sizeof(reg3));
  155.                         }f1.close();
  156.                         f2.close();
  157.                         f3.close();
  158.                 }
  159.             }else cout << "Error en la apertura de pesos";
  160.         }else cout << "Error en la apertura de precios";
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement