С++ Файлы. Нужна Помощь!

Тема в разделе "C/C++/C#", создана пользователем mary1010, 24 дек 2012.

  1. mary1010

    mary1010 New Member

    Регистрация:
    24 дек 2012
    Сообщения:
    2
    Симпатии:
    0
    есть программка, которая первое и среднее слово в каждой строке файла меняет местами. она полностью рабочая!)

    Код (C++):
    #include <fstream>
    #include <algorithm>
    #include <iterator>
    #include <vector>
    #include <sstream>
    #include <vcl.h>
    #include <iostream>
    #include <conio.h>

    #pragma hdrstop
    using namespace std;

    int main()
    {
    //entering a file name using keyboard
    cout << "Enter a processed file name:" ;
    std::string name;
    std::cin >> name;
    std::ifstream ifs(name.c_str());

    cout << "Enter a final file name:" ;
    std::string name1;
    std::cin >> name1;
    std::ofstream o(name1.c_str());


    if (! ifs && ! o)

    { cout<<"wrong file name!";
    exit (1);   }

    else{

    if (!ifs) return 1;
    std::string str;
    while (!ifs.eof() && std::getline(ifs, str))
    {
    std::istringstream ist(str);
    std::vector<std::string> v;
    std::copy(std::istream_iterator<std::string>(ist),
    std::istream_iterator<std::string>(), std::back_inserter(v));
    std::swap(*v.begin(), *(v.begin() + v.size() / 2));
    std::copy(v.begin(), v.end(), std::ostream_iterator<std::string> (o, " "));
    o << std::endl;
    } }
    system("pause");
    return 0;

    }
    мне необходимо доработать ее, чтобы программа состояла из подпрограмм(функций) и имела текстовое меню:
    Код (C++):
    int showMenu()
    {

    int command = 0;
    while(true)

    {

    cout << "1. changing of the first and average word in a line of the file " << endl;
    cout << "2. see result" << endl;
    cout << "3. Exit" << endl;

    cin >> command;
    if (command >=1 && command <=3) return command;
    cout << "You have entered a wrong command. Please repeat your choice:" << endl;

    if (cin.fail())
    {
    cin.clear();
    cin.sync();
    }
    }
    }
    я попыталась как-то справиться с этими задачами, но все тщетно...вот такой код с кучей ошибок получился:

    Код (C++):
    #include <fstream>

    #include <algorithm>

    #include <iterator>

    #include <vector>

    #include <sstream>

    #include <vcl.h>

    #include <iostream>

    #include <conio.h>

    #include <cstdlib>

    #include <ctime>

    #pragma hdrstop

    using namespace std;

    #pragma argsused

    void EnterFileName1(const char*);

    void EnterFileName2(const char*);

    void ProcessingFile();

    void result(char*, char*);

    void ShowMenu();

    void EnterFileName1(const char*std)

    {

    std::string name;

    std::cin >> name;

    std::ifstream ifs(name.c_str());

    }

    void EnterFileName2(const char*std)

    {

    std::string name1;

    std::cin >> name1;

    std::ofstream o(name1.c_str());

    }

    void ProcessingFile(char*std, char*o)

    {

    if (!ifs) return 1;

    std::string str;

    while (!ifs.eof() && std::getline(ifs, str))

    {

    std::istringstream ist(str);

    std::vector<std::string> v;

    std::copy(std::istream_iterator<std::string>(ist),

    std::istream_iterator<std::string>(), std::back_inserter(v));

    std::swap(*v.begin(), *(v.begin() + v.size() / 2));

    std::copy(v.begin(), v.end(), std::ostream_iterator<std::string> (o, " "));

    o << std::endl;

    }

    }

    void result(char*text, char*buf)

    {

    char text[500], buf[500];

    cout << "Enter the final name file: ";

    cin >> text;

    ifstream f(text, ios::in);

    if (!f) {

    cout << "Error of opening of a file.";

    }

    while (!f.eof()) {

    f.getline(buf, 500);

    cout << buf << endl;

    }

    int main()

    cout << "Welcome! Enter a command:"<< endl;

    int command = showMenu();

    switch (command)

    {

    case 1:

    cout << "Enter a processed file name:"<<endl ;

    EnterFileName1(const char*str);

    cout << "Enter a final file name:"<<endl ;

    EnterFileName2(const char*str);

    std::ofstream o(name1.c_str());

    if (! ifs && ! o)

    { cout<<"wrong file name!";

    exit (1);   }

    else { ProcessingFile(char*str)

    cout << "change of the file is successfully complete!"<<endl ; }

    break;

    case 2:

    void result(char*text, char*buf)

    break;

    case 3:

    return;

    break;

    }

    void ShowMenu();

    {

    int command = 0;

    while(true){

    cout << "1. changing of the first and average word in a line of the file " << endl;

    cout << "2. see result" << endl;

    cout << "3. Exit" << endl;

    cin >> command;

    if (command >=1 && command <=3) return command;

    cout << "You have entered a wrong command. Please repeat your choice:" << endl;

    if (cin.fail()){

    cin.clear();

    cin.sync();

    }

    }

    }
    как заставить ЭТО работать?нужна помощь! SOS!!!
     
Загрузка...

Поделиться этой страницей