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.