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.
|