Hola, necesitaría ayuda con un programa, que compara dos archivos/ficheros con números enteros, compáralos entre si, y ordenar los números de ambos ficheros de menor a mayor y guardarlo en otro fichero.
Acá dejo lo que tengo de código. Agradecería su ayuda.
/*
    1. Crear dos archivos que contengan la siguiente informacion:
            
            archivo 1: 1    5   11  15  19  21
            archivo 2: 2    4   6   8   10  14
            
    2. Con los archivos 1 y 2 generar un tercer archivo donde se guarde la información 
        ordenada, es decir, el resultado debeerá ser:
            
            1 2 4 5 6 8 10 11 14 15 19 21
            
    NOTA: no utilizar vectores
    
    3. Agregar las opciones para mostrar por pantalla los 3 archivos.
*/
#include<iostream.h>
#include <stdio.h>
struct numeros{
    
    int num;
    int nu;
    
}nume, numeA, numeB;
FILE *fichero;
FILE *archivo;
FILE *doc;
void menu();
void cargar();
void MostrarFicheroU();
void cargarS();
void MostrarFicheroD();
void CargarT();
void MostrarFicheroT();
main (){
    
    menu();
    
}
void menu(){
    
    int opcion =0;
    
    cout << "\n Ingrese la opcion que desee ";
    cout << "\n1.Cargar 1° Fichero \n2.Mostrar Fichero 1 \n3.Cargar 2° Fichero \n4.Mostrar Fichero 2 \n5.Fichero 3 \n6.Mostrar Fichero 3 \n7.Salir \n";
    cin >> opcion;
    system("cls");
    switch (opcion){
        
        case 1:
                cargar();
                break;
        case 2:
                MostrarFicheroU();
                break;
        case 3:
                cargarS();
                break;
        case 4:
                MostrarFicheroD();
                break;
        case 5:
                CargarT();
                break;
        case 6:
                MostrarFicheroT();
                break;
        case 7:
                system("exit");
                break;
        default:
                cout<<"\nOpcion incorrecta";
                menu();
    }
}
void cargar(){
    
    fichero =fopen("Fichero.dat","w");
    
    cout << "\n \tIngrese los numeros del primer Fichero ";
    
    for (int r=0; r<=5; r++){
        
        cout<< "\nIngrese " << r << "° numero del fichero";
        
        cin >> nume.num;
        
        fwrite(&nume, sizeof(struct numeros), 1, fichero);
        
    }
    
    fclose(fichero);
    menu();
}
void MostrarFicheroU(){
    fichero = fopen("Fichero.dat", "r");
 
        if(fichero == NULL)
        {
                printf("\nFichero no existe! \nPor favor creelo");
                menu();
        }
 
        fread(&nume, sizeof(struct numeros), 1, fichero);
 
        cout<<"\n \t Numeros primer fichero";
 
        while(!feof(fichero))
        {
                cout<<"\n "<< nume.num;
                fread(&nume, sizeof(struct numeros), 1, fichero);
        
        }
        
    fclose (fichero);
    menu();
}
void cargarS(){
    
    archivo = fopen("Archivo.dat","w");
    
    cout << "\n \tIngrese los numeros del primer Fichero ";
    
    for (int r=0; r<=5; r++){
        
        cout<< "\nIngrese " << r << "° numero del fichero";
        
        cin >> numeA.num;
        
        fwrite (&numeA, sizeof(struct numeros), 1, archivo);
        
    }
    
    fclose(archivo);
    menu();
}
void MostrarFicheroD(){
  
    archivo = fopen("Archivo.dat", "r");
 
    if(archivo == NULL)
    {
        printf("\nFichero no existe! \nPor favor creelo");
        menu();
    }
 
    fread(&numeA, sizeof(struct numeros), 1, archivo);
 
    cout<<"\n \t Numeros segundo fichero";
 
    while(!feof(archivo))
    {
        cout<<"\n "<< numeA.num;
        fread(&numeA, sizeof(struct numeros), 1, archivo);
        
    }
        
    fclose (archivo);
    menu();
}
void CargarT(){
    
    doc = fopen("Documento.dat","w");
    fichero = fopen ("Fichero.dat", "r");
    archivo =fopen ("Archivo.dat", "r");
    
    int menor=0;
    int nu=0;
    fread (&nume, sizeof(struct numeros), 1, fichero);
    fread (&numeA, sizeof(struct numeros), 1, archivo);
    
    while(!feof (fichero)){
        
        while(!feof(archivo)){
            
            if ((nume.num < numeA.num)&&(nume.num > menor))
            {
                menor = nume.num;
                nu = numeA.num;        
            }
            else
            {
                menor = numeA.num;
                nu = nume.num;   
            }
            
            fread (&numeA, sizeof(struct numeros), 1, archivo);
            fread (&nume, sizeof(struct numeros), 1, fichero);
            
            numeB.num = menor;
            numeB.nu = nu;
            fwrite(&numeB, sizeof(struct numeros), 1, doc);    
           
        }
        
    }
    fclose(fichero);
    fclose(archivo);
    fclose(doc);
    menu();
}
void MostrarFicheroT(){
    
    doc = fopen("Documento.dat", "r");
 
    if(doc == NULL)
    {
        printf("\nFichero no existe! \nPor favor creelo");
        menu();
    }
 
    fread(&numeB, sizeof(struct numeros), 1, doc);
 
    cout<<"\n \t Numeros tercer fichero";
 
    while(!feof(doc))
    {
        cout<<"\n "<< numeB.num << "\n" << numeB.nu;
        fread(&numeB, sizeof(struct numeros), 1, doc);
        
    }
        
    fclose (doc);
    menu();
}
Del código lo único que no funciona del todo bien es la parte de la comparación.


 
  




 Autor
 Autor
		


 En línea
									En línea
								
 
						
