elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con comparación de ficheros en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con comparación de ficheros en C++  (Leído 3,789 veces)
Deby93

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda con comparación de ficheros en C++
« en: 1 Diciembre 2011, 22:19 pm »

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.


En línea

Después de todo tu eres tu única muralla, si no te saltas no darás un sólo paso.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con comparacion de cadenas en excel.
Programación Visual Basic
Railil 4 1,847 Último mensaje 24 Noviembre 2006, 17:04 pm
por Railil
Ayuda comparacion de Sonido
Programación Visual Basic
Saok Dagon 3 1,862 Último mensaje 11 Diciembre 2007, 07:44 am
por Saok Dagon
Ayuda con la comparacion de estructuras en C
Programación C/C++
GameX 3 2,620 Último mensaje 17 Diciembre 2016, 15:58 pm
por engel lex
Sistema de ficheros ext4 una maravilla en comparación con ntfs?
Dudas Generales
Borito30 2 2,148 Último mensaje 5 Mayo 2017, 02:07 am
por Borito30
AYUDA URGENTE!! Comparacion de fechas en DEV C++
Programación C/C++
JonatanP 2 2,508 Último mensaje 26 Mayo 2020, 20:12 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines