Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Deby93

#1
Programación C/C++ / Re: ayuda con ficheros
3 Diciembre 2011, 01:36 AM
Mira lo que haces, es crear, abrir el fichero y cerrarlo, si hacer ninguna operacion dentro. Lo que tendrias que hacer es usar un fwrite, despues de abrirlo y antes de cerrarlo. La "w", lo que hace es crear el fichero si no existe y sobreescribe el contenido, es decir, que lo que guardes en la primera ejecucion en la segunda se sobreescribiran los datos nuevos sobre los anteriores, eliminandolos. Podrias usar "a+" que lo que hace es crear el fichero si no existe y si existe agrega al final del fichero los nuevos datos manteniendo los anteriores.
#2
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.