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

mary1010

New member
24.12.2012
2
0
#1
есть программка, которая первое и среднее слово в каждой строке файла меняет местами. она полностью рабочая!)

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!!!