mary1010
Интересующийся
Offline
Пол:
|
|
« : 21-12-2012 20:49 » |
|
Помогите пожалуйста!!! не знаю с чего начать...
необходимо для каждой строки файла переставить первое и среднее слово. Результат записать в файл.
я знаю, как открыть файл, но как найти первое и среднее слово...
|
|
|
Записан
|
|
|
|
Dmitry
Помогающий
Offline
|
|
« Ответ #1 : 21-12-2012 21:15 » |
|
Не получается на словах алгоритм составить, или реализовать его в программе?
|
|
|
Записан
|
|
|
|
mary1010
Интересующийся
Offline
Пол:
|
|
« Ответ #2 : 21-12-2012 22:04 » |
|
Не получается на словах алгоритм составить, или реализовать его в программе?
не понятно, как в строке получить среднее слово....те , я так понимаю, нужно как-то принять пробел за разделитель и подсчитать все слова в строке, их сумму разделить на количество и получить среднее слово? а если это значение окажется не целым?и как поменять 1 и среднее слова???+даже не представляю, как это реализовать....
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #3 : 21-12-2012 22:23 » |
|
mary1010, С первым словом понятно, казалось бы
Что является ограничителем слова
Как посчитать количество слов в тексте
Что такое среднее число
как найти среднее слово.
поставь себе такие вопросы, и попытайся на них ответить
|
|
« Последнее редактирование: 21-12-2012 22:25 от Sla »
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
mary1010
Интересующийся
Offline
Пол:
|
|
« Ответ #4 : 22-12-2012 15:05 » |
|
mary1010, С первым словом понятно, казалось бы
Что является ограничителем слова
Как посчитать количество слов в тексте
Что такое среднее число
как найти среднее слово.
поставь себе такие вопросы, и попытайся на них ответить
Если результат деления получается дробным, то это строка с нечётным количеством слов и среднее слово будет [целая часть] + 1. Если результат - не дробный, то за среднее слово, можно принять, результат самих вычислений, верно? ограничитель слова - пробел, это очевидно... но как это реализовать именно на плюсах???можете прописать общий вид необходимых мне операций, функций и тд?
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #5 : 22-12-2012 15:44 » |
|
Ограничителем слова может быть также и не только пробел Также например и запятая и точка и также символы перевода строки (Для windows мира это последовательность 0x0A, 0x0D. ) Эта задача легко реализуется с помошью метода "конечные автоматы". Если вы его проходили конечно.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Вад
|
|
« Ответ #6 : 22-12-2012 17:18 » |
|
Finch, у меня подозрение, что в учебных целях там, скорее всего, жёстко 1 пробел (и только пробел) между словами. mary1010, начни с подсчёта числа слов: подумай, какие условия описывают, что началось новое слово, или что оно закончилось? Finch правильно говорит про конечные автоматы, но тут даже общей теории знать не нужно, достаточно сконцентрироваться на том, как запомнить, где мы находимся на каждом шаге: внутри слова или инет.
|
|
|
Записан
|
|
|
|
mary1010
Интересующийся
Offline
Пол:
|
|
« Ответ #7 : 22-12-2012 20:44 » |
|
разделитель - пробел и только пробел))все таки лабораторную в универ делаю, можно по-проще) такой код в итоге...но, при вводе имени файла (ПРАВИЛЬНОГО!), все равно получаю:wrong file name!....почему?? #include <fstream> #include <algorithm> #include <iterator> #include <vector> #include <sstream> #include <vcl.h> #include <iostream> #include <conio.h> using namespace std; int main() { cout << "Enter a file name:" ; //entering a file name using keyboard std::string name; std::cin >> name; std::ifstream ifs(name.c_str()); if (! ifs) { cout<<"wrong file name!"; exit (1); } else{ std::ofstream o("result.txt"); 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"); getch(); }
|
|
« Последнее редактирование: 22-12-2012 21:02 от RXL »
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #8 : 22-12-2012 21:02 » |
|
Ты уверена, что этот код компилируется? Текст почти кошерен, но явно есть изъяны. Строка 34.
Хотя, не — пойдет...Нехороши код.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
mary1010
Интересующийся
Offline
Пол:
|
|
« Ответ #9 : 22-12-2012 21:21 » |
|
Нехороши код.
что поменять?
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #10 : 22-12-2012 22:02 » |
|
Форматировать.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
mary1010
Интересующийся
Offline
Пол:
|
|
« Ответ #11 : 22-12-2012 22:33 » |
|
Форматировать.
форматирование не решает проблему с открытием файла, которая все еще существует.
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #12 : 22-12-2012 22:34 » |
|
Зато облегчает понимание.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #13 : 23-12-2012 04:57 » |
|
Честно говоря, не понял. Что ты именно хотела сказать в 17 строчке. Есть специальный метод, который проверяет корректность открытия файла. http://www.cplusplus.com/reference/ios/ios/good/ Хотя это вполне может быть и специфика Borland.
|
|
« Последнее редактирование: 23-12-2012 05:08 от Finch »
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
|