Форум программистов, компьютерный форум CyberForum.ru

Помогите с задачей, пожалуйста! (файлы Си++) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 5.00
skef
1 / 1 / 0
Регистрация: 19.09.2011
Сообщений: 31
22.09.2011, 19:47     Помогите с задачей, пожалуйста! (файлы Си++) #1
Ну вот. Практикум по Си++.
Надо выполнить следующую задачу:
Задание: Написать программу, которая читает текстовый файл и выполняет
копирование второго слова каждой строки в начало следующей строки

Ну вот. Примерный алгоритм по которому я это собирался сделать примерно такой:
1) Открытие исходного файла
2) чтение строки по символам
3) Символ - пробел?
Если нет, то читать следующий символ.
Если да, то записать следующие символы во временную строку.
(До второго пробела.)
Далее, когда второе слово выделено, в выходном файле писать это слово.
Далее считывать в исходном файле следующие строку и в выходном писать
после этого слова.
4) Далее: в исходном файле последняя строка?
Если нет, то идем к пункту 3 (в смысле читаем следующую строку и ищем в
ней второе слово)
Если да, то запрашиваем именование выходного файла, записываем его,
далее читаем и отображаем содержимое.

Пытался писать код сам, но пока далее чем чтение файла не ушел.
Помогите кто чем может.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.09.2011, 19:49     Помогите с задачей, пожалуйста! (файлы Си++) #2
Цитата Сообщение от skef Посмотреть сообщение
Пытался писать код сам, но пока далее чем чтение файла не ушел.
показывайте
skef
1 / 1 / 0
Регистрация: 19.09.2011
Сообщений: 31
23.09.2011, 18:17  [ТС]     Помогите с задачей, пожалуйста! (файлы Си++) #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
int main ( )
{
    char filename [20];
    cout << "Enter name for new file: ";
    cin >> filename;
    //создать объект потока вывода для нового файла и назвать его fout
    ofstream fout (filename);
    fout << "Здесь набирается некий текст  \n"; // записать в файл
    fout << "Для помещения его в программу \n";
    cout << "Enter number,please: \n"; // вывести на экран
    float secret; 
    cin >> secret;
    fout << "Вы ввели число " << secret << "\n";
    fout.close ( ); // закрыть файл
//  fin.open (filename);
// создать объект потока ввода нового файла и назвать его fin
    ifstream fin;
    fin.open "(qwer.txt)"
//  cout << "Here are the contents of " << filename << "\n";
//  char ch;
//  while (fin.get(ch)) // считать символ из файла и вывести на экран
    cout << "Done \n";
    cin.get();
//  fin.close ( );
//  fout.close ( ); // закрыть файл
    return 0;
}
Программа создает файл, заносит в него текст, спрашивает число, потом заносит в файл текст и число.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.09.2011, 07:33     Помогите с задачей, пожалуйста! (файлы Си++) #4
Цитата Сообщение от skef
2) чтение строки по символам
есть getline()

Цитата Сообщение от skef
3) Символ - пробел?
нужно делать для набора символов
функция принимает строку, номер слова и строку разделителей; возвращает строку со словом

Код
 1. взять строку из исходного файла
 1.1. если строка первая, то второе слово прежней строки равно ''
 2. если второе слово не равно '', то
    вывести (второе слово + текущая строка) с учётом разделителя в новый файл
    иначе вывести текущую строку в новый файл
 3. взять второе слово текущей строки, к п.1
skef
1 / 1 / 0
Регистрация: 19.09.2011
Сообщений: 31
24.09.2011, 16:52  [ТС]     Помогите с задачей, пожалуйста! (файлы Си++) #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
char buf [80];
char buf2 [80];
char ch;
 
int main(void)
{
    ifstream fin;
    fin.open ("text.txt");
 
//////////////////////////////////////////////////////////////////////////////////
 
    //читаем слово до пробела, выводим его и переносим 
    // указатель текущей позиции к следующему слову
    fin >> buf;
    // читаем второе слово, выводим его 
    fin >> buf;
    cout << buf;
    //читаем эту строку, и переносим курсор в начало сл. строки
    fin.getline (buf,80);
 
    //читаем следующую строку и выводим ее после второго слова предыдущей строки
    fin.getline (buf,80);
    cout << " " << buf << "\n";
    //здесь надо вернуться в начало предыдущей строки
    //на этом цикл должен быть завершен. Курсор в начале второй строки,
    //оттуда и начнется поиск второго слова во второй строке и т.д
    //признаком выхода из цикла должно быть окончание файла
 
/////////////////////////////////////////////////////////////////////////////////
 
 
    fin.close ();
    cin.get();
    return 0;
}
Вот мой черновик. часть кода между //////////////////////////////////////////
я хотел занести в цикл, т.к. там находится чтение нужных слов и строк.
Выходить из этого цикла необходимо по завершению файла. Далее должно
производиться именование выходного файла и его отображение.
Тогда возникает вопросы:
1) (мы дважды читаем строку, и курсор у нас находится)
в начале третей строки. Как вернуть его в начало второй?
2) как создать цикл, условием выхода из которого будет достижение
конца файла?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.09.2011, 06:49     Помогите с задачей, пожалуйста! (файлы Си++) #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{
    ifstream in("file.txt");
    string s;
    
    while (getline(in, s))
        cout << s << endl;
    in.close();
    return 0;
}
построчное чтение файла
skef
1 / 1 / 0
Регистрация: 19.09.2011
Сообщений: 31
26.09.2011, 16:57  [ТС]     Помогите с задачей, пожалуйста! (файлы Си++) #7
Прошу прощения... А можно более развернутый ответ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2011, 03:11     Помогите с задачей, пожалуйста! (файлы Си++)
Еще ссылки по теме:

C++ Помогите пожалуйста с задачей
Помогите пожалуйста с простой задачей C++
подскажите пожалуйста с задачей C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.09.2011, 03:11     Помогите с задачей, пожалуйста! (файлы Си++) #8
Цитата Сообщение от skef
Задание: Написать программу, которая читает текстовый файл и выполняет
копирование второго слова каждой строки в начало следующей строки
функция доставания слова - лёгкий вариант
вообще, нужно сделать, чтобы разделители слов могли быть любыми
и перенос последнего второго слова на следующую строку не выполняется
Вложения
Тип файла: zip second_word.zip (756 байт, 25 просмотров)
Yandex
Объявления
27.09.2011, 03:11     Помогите с задачей, пожалуйста! (файлы Си++)
Ответ Создать тему
Опции темы

Текущее время: 14:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru