Método mezcla en C++ con archivos Parte 1

A continuación se muestra el código de como realizar el método mezcla con archivos texto. Para que pueda funcionar correctamente se deberá de crear 2 archivos .txt, el primero y el segundo deben contener una serie de numeros pero de manera ordenada, ejemplo:

En el archivo1.txt:
2
5
13

En el archivo2.txt:
7
14
33
40

Nota: si los archivos que se van a mezclar no estan ordenados no se podrá aplicar el método.
El archivo 3 se creará y se usará para guardar todos los números en orden mientras se realiza la mezcla.

Aqui el código:

 1 /********************************************************************
 2 * Programa: ordenar numeros en un archivo por metodo de mezcla
 3 * Version: 1.0
 4 * Autor: Gustavo Adolfo Meza Gutierrez
 5 * *******************************************************************/
 6 
 7 #include <iostream>
 8 #include <fstream>
 9 
10 int main()
11 {
12     int n1,n2,i;
13 
14     //Manejadores de los archivos
15     std::ifstream archivo1;
16     std::ifstream archivo2;
17     std::ofstream archivo3;  //Este archivo no es necesario crearlo, Se crea solo.
18     
19     //Enlace entre manejadores y los archivos
20     archivo1.open("./archivo1.txt");
21     archivo2.open("./archivo2.txt");
22     archivo3.open("./archivo3.txt");
23 
24     archivo1>>n1; //EL primer numero de archivo1.txt en n1
25     archivo2>>n2; //EL primer numero de archivo2.txt en n2
26     
27     //Verificando si estan vacios los archivos
28     if(archivo1.fail() || archivo2.fail()){
29         std::cout<<"Alguno de los archivos está vacio!\n";
30         return (1);
31     }
32     
33     while((!archivo1.eof()) || (!archivo2.eof())){
34         if(n1<n2){               //Si n1 es mayor que n2
35             archivo3<<n1<<'\n';  //El valor de n1 al archivo3.txt
36             archivo1>>n1;        //Se lee el siguiente numero de archivo1.txt
37         }
38         else{                    //Si n2 es mayor que n1
39             archivo3<<n2<<'\n';  //El valor de n2 al archivo3.txt
40             archivo2>>n2;        //Se lee el siguiente numero de archivo2.txt
41         }
42         
Clic aquí para seguir viendo el resto del código

0 comentarios

Publicar un comentario

Escribe aquí abajo tu comentario...