Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- #include <fstream>
- #include <windows.h>
- using namespace std;
- struct reg1{
- int codigo;
- int cantidad;
- int precio;
- };
- struct reg2{
- int codigo;
- int cantidad;
- int peso;
- };
- struct reg3{
- int codigo;
- int cantidad;
- int datos[2];
- };
- void creapesos();
- void creaprecios();
- void juntayensena();
- int main()
- {
- char opcion;
- do{
- system("cls");
- cout << "Este programa crea los ficheros\nLos codigos ordenados\n\nElija opcion\n\n";
- cout << "1 - Crear fichero de pesos\n2 - Crear fichero de precios\n3 - Crear mezcla.dat\n4 - Salir\n";
- opcion = getch();
- switch (opcion){
- case '1': creapesos();
- break;
- case '2': creaprecios();
- break;
- case '3': juntayensena();
- break;
- case '4':break;
- default: cout << "\nOpcion incorrecta, pulsa del 1 al 4";
- Sleep(2000);
- break;
- }
- }while (opcion!='4');
- return 0;
- }
- void creapesos(){
- reg2 r2;
- int ultimo = -1;
- char seguir;
- ofstream f2("pesos.dat",ios::binary);
- if (f2){
- cout << "\nSe crea fichero de pesos\n\n";
- do{
- do{
- cout << "Deme codigo: ";
- cin >> r2.codigo;
- }while (r2.codigo<=ultimo); //comprobacion para que no metas un numero menor que 1 y menor que el anterior
- ultimo=r2.codigo;
- cout << "Deme cantidad: ";
- cin >> r2.cantidad;
- cout << "Deme peso: ";
- cin >> r2.peso;
- f2.write ((char*)&r2,sizeof(reg2));//*mirar el bloc* sizeof es el tamaño de de la estructura para guardar ese almacenamiento
- cout << "\nDesea mas datos (s/n)?\n";
- seguir = getch();
- }while (seguir!='n');
- f2.close();
- }else
- cout << "Error en la apertura del fichero\n";
- }
- void creaprecios(){
- reg1 r1;
- int ultimo = -1;
- char seguir;
- ofstream f1("precios.dat",ios::binary);
- if (f1){
- cout << "\nSe crea fichero de precios\n\n";
- do{
- do{
- cout << "Deme codigo: ";
- cin >> r1.codigo;
- }while (r1.codigo<=ultimo);
- ultimo=r1.codigo;
- cout << "Deme cantidad: ";
- cin >> r1.cantidad;
- cout << "Deme precio: ";
- cin >> r1.precio;
- f1.write ((char*)&r1,sizeof(reg1));
- cout << "\nDesea mas datos (s/n)?\n";
- seguir = getch();
- }while (seguir!='n');
- f1.close();
- }else
- cout << "Error en la apertura del fichero\n";
- }
- void juntayensena(){
- reg1 r1;
- reg2 r2;
- reg3 r3;
- ifstream f1("precios.dat", ios::binary);
- if (f1){
- ifstream f2("pesos.dat", ios::binary);
- if (f2){
- ofstream f3("mezcla.dat",ios::binary);
- if (f3){
- f1.read((char*)&r1,sizeof(reg1));
- f2.read((char*)&r2,sizeof(reg2));
- while (!f1.eof() && !f2.eof()){
- if(r1.codigo<r2.codigo){
- r3.codigo=r1.codigo;
- r3.cantidad=r1.cantidad;
- r3.datos[0]=r1.precio;
- r3.datos[1]=0;
- f1.read((char*)&r1,sizeof(reg1));
- }else if (r1.codigo>r2.codigo){
- r3.codigo=r2.codigo;
- r3.cantidad=r2.cantidad;
- r3.datos[1]=r2.peso;
- r3.datos[0]=0;
- f2.read((char*)&r2,sizeof(reg2));
- }else {
- r3.codigo=r1.codigo;
- r3.cantidad=r1.cantidad+r2.cantidad;
- r3.datos[1]=r1.precio;
- r3.datos[0]=r2.peso;
- f1.read((char*)&r1,sizeof(reg1));
- f2.read((char*)&r2,sizeof(reg2));
- }
- f3.write((char*)&r3,sizeof(reg3));
- }
- while(!f1.eof()){
- r3.codigo=r1.codigo;
- r3.cantidad=r1.cantidad;
- r3.datos[0]=r1.precio;
- r3.datos[1]=0;
- f1.read((char*)&r1,sizeof(reg1));
- f3.write((char*)&r3, sizeof(reg3));
- }while (!f2.eof()){
- r3.codigo = r2.codigo;
- r3.cantidad = r2.cantidad;
- r3.datos[1] = r2.peso;
- r3.datos[0] = 0;
- f2.read((char*)&r2, sizeof(reg2));
- f3.write((char*)&r3, sizeof(reg3));
- }f1.close();
- f2.close();
- f3.close();
- }
- }else cout << "Error en la apertura de pesos";
- }else cout << "Error en la apertura de precios";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement