Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C++] Program do łączenia plików .txt

mattenzo 27 Kwi 2010 14:22 1427 2
  • #1 27 Kwi 2010 14:22
    mattenzo
    Poziom 1  

    Witam, potrzebuję napisać program w C++, który otwiera Plik1, Plik2, Plik3, odczytuje z nich wartości i zapisuje wszystko (bez odstępów) do Plik4.

    Wydaje mi się że zadanie musi być wykonane w pętli, bo w Plik1 - Plik3 jest po 5000 pozycji. i być może tablicami? Sposób wykonania jest dowolny, byle działał :)

    Wejście: (plik1)

    Aaaaa
    Bbbbb
    Ccccc
    Ddddd
    Eeeee
    Fdddd

    Wejście: (plik2)

    1
    2
    3
    4
    5

    Wejście: (plik3)


    Zzzz
    Yyyy
    Vvvv
    Cccc
    Gggg


    Wyjście: (plik4)

    Aaaaa1Zzzzz
    Bbbbb2Yyyyy
    Ccccc3Vvvvv

    itd.


    Program wydaje się być prosty do napisania, czy ktoś mógłby mi z tym pomóc? :)

    0 2
  • #2 27 Kwi 2010 15:20
    GSM
    Poziom 25  

    Witam,

    żadnych tablic wielkich nie potrzebujesz, wystarczy ci string do przechowywania 1 linii (a nawet i bez tego możnaby się obejść), kolejno ze wszystkich plików wejściowych pobierasz po 1 linii i zapisujesz ją do wyjściowego.
    Napisz ten program wg. takiego schematu i pokaż to się go sprawdzi.

    Pozdrawiam,
    GSM

    0
  • #3 28 Kwi 2010 14:51
    ed-ek
    Poziom 34  

    Jeżeli będziesz łączył w pliku wyjściowym kolejne linie plików w jedną linię, w większości przypadków taka linia może być bardzo długa. Nie wiem czy to Ci odpowiada. Przedstawiam kod łączący kolejne linie 2 plików i zapisujący wynik do 3 pliku. Kod można ulepszyć.

    Code:

    #include <conio.h>
    #include <iostream>
    #include <fstream>
    using namespace std;
     int main()
     {
       string s1,s2,sw,pom; 
       long dl1,dl2;
       
          ifstream plik1("e:\\00.txt");
          plik1.seekg( 0, ios::end );
          dl1= plik1.tellg();
          plik1.seekg( 0, ios::beg );
          ifstream plik2("e:\\000.txt"); 
           plik2.seekg( 0, ios::end );
           dl2 = plik2.tellg();   
           plik2.seekg( 0, ios::beg );
          ofstream plik3("e:\\w.txt");
        if(dl1>=dl2)
         { 
            while(getline(plik1,s1))
             {         
              if(!plik2.eof())
               getline(plik2,s2); 
                                               
                plik3<<s1+s2<<endl;                     
                s1="";s2="";           
             }
          }                       
        else
        {
          while(getline(plik2,s2))
             {         
              if(!plik1.eof())
               getline(plik1,s1); 
                                               
                plik3<<s1+s2<<endl;                     
                s1="";s2="";           
             }
         }         
       plik3.close();   
       getch();   
       return 0;
     }

    0