Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.59/41: Рейтинг темы: голосов - 41, средняя оценка - 4.59
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105

Считать из текстового файла три предложения и вывести их в обратном порядке

23.06.2010, 20:47. Показов 8484. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день форумчане!

Эта тема для меня новая, поэтому не все еще получается.
Жду помощи, и еще, прошу не использовать никаких дополнительных библиотек.
И для начала только алгоритмы.
Спасибо.

1)
Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке.
*Немного упростим задачу, пусть все предложения заканчиваются точкой.

Как я понял, нужно открыть файл, создать три массива (для хранения предложений), и читаем файл пока не найдена точка. А как быть дальше?

2)
Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа.
Аналогично первой, но дальше алгоритма не знаю.

Добавлено через 2 часа 57 минут
Ну я не верю, что никто не может написать алгоритмы к данных задачам)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.06.2010, 20:47
Ответы с готовыми решениями:

Считать из текстового файла три предложения и вывести их в обратном порядке
Считать из текстового файла три предложения и вывести их в обратном порядке. Обработку текстовой информации нужно организовать с...

Считать из текстового файла три предложения и вывести их в обратном порядке
Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке. Программа есть но выводит...

Считать из текстового файла три предложения и вывести их в обратном порядке
Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке. Программа есть но выводит...

33
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
25.06.2010, 00:00  [ТС]
Студворк — интернет-сервис помощи студентам
Прошу прощения за глупые вопросы, но я пытаюсь понять =)

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
#include <iostream>
#include <fstream>
#define SIZE 512
 
int main ()
{
    std::ifstream FILE_in ("input.txt", std::ios::in);
    char MAS[SIZE];
    char tmp;
 
    if (!FILE_in) {
        std::cerr << "ERROR!" << std::endl;
        system ("pause");
        return 1; }
 
    while (std::ifstream::getline (MAS, SIZE, '.'))
    {
        int count=0;
        FILE_in >> tmp;
        MAS[count]=tmp;
        count++;
    }
 
    FILE_in.close();
 
    system ("pause");
    return 0;
}
error: cannot call member function `std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::getline(_CharT*, std::streamsize, _CharT) [with _CharT = char, _Traits = std::char_traits<char>]' without object
Добавлено через 2 минуты
Так, я понял.
Функция сама по себе считывает в MAS, а я пытаюсь сделать это еще раз.
0
 Аватар для kazak
3606 / 2746 / 356
Регистрация: 11.03.2009
Сообщений: 6,318
25.06.2010, 00:04
Да, самого главного я и не заметил, ifstream::getline - это функция класса, и вызывать ее надо с конкретным объектом.
C++
1
std::ifstream::getline (MAS, SIZE, '.')// считывать то считываем, только откуда?
=>
C++
1
FILE_in.getline (MAS, SIZE, '.')
Цитата Сообщение от IchMors Посмотреть сообщение
а не подскажете какой его код в ANSI?
delim сдесь обозначает не какой-то конкретный символ, а аргумент функции, который имеет тип char.
2
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
25.06.2010, 00:08  [ТС]
Содержимое файла input.txt:
test test test. tra-tra-tra.
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
#include <iostream>
#include <fstream>
#define SIZE 512
 
int main ()
{
    std::ifstream FILE_in ("input.txt", std::ios::in);
    char MAS[SIZE];
    char tmp;
 
    if (!FILE_in) {
        std::cerr << "ERROR!" << std::endl;
        system ("pause");
        return 1; }
 
    while (FILE_in.getline (MAS, SIZE, '.'));
 
    std::cout << MAS;
 
    FILE_in.close();
 
    system ("pause");
    return 0;
}
Консоль пустая.
0
 Аватар для kazak
3606 / 2746 / 356
Регистрация: 11.03.2009
Сообщений: 6,318
25.06.2010, 00:12
А без while?
1
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
25.06.2010, 00:14  [ТС]
kazak, вы правы! Спасибо

Только знаете, он счтывает до точки, и предложение не совсем полноценное получается.
Как исправить?
0
 Аватар для kazak
3606 / 2746 / 356
Регистрация: 11.03.2009
Сообщений: 6,318
25.06.2010, 00:16
В чем неполноценность заключается?
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
25.06.2010, 00:17  [ТС]
Самого знака нет.
Будь это точка, или что-то иное.
0
 Аватар для kazak
3606 / 2746 / 356
Регистрация: 11.03.2009
Сообщений: 6,318
25.06.2010, 00:21
Тогда попробуй функцию get. Аргументы те же.
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
25.06.2010, 00:24  [ТС]
Вот, вроде бы получилось решить задачу:

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
#include <iostream>
#include <fstream>
#define number 3
#define SIZE 512
 
int main ()
{
    std::ifstream FILE_in ("input.txt", std::ios::in);
    char MAS[number][SIZE];
 
 
    if (!FILE_in) {
        std::cerr << "ERROR!" << std::endl;
        system ("pause");
        return 1; }
 
    for (int i=number-1; i>=0; i--)
    FILE_in.getline (MAS[i], SIZE, '.');
 
    for (int i=0; i<number; i++) {
        std::cout << MAS[i];
        std::cout << std::endl;
    }
 
    FILE_in.close();
 
    system ("pause");
    return 0;
}
inputx.txt:
test test test. tra-tra-tra. am am am. pif pah.
Но как видно ниже, считываются пробелы перед предложениями, и нехватает точек.
Консоль:
Миниатюры
Считать из текстового файла три предложения и вывести их в обратном порядке  
0
 Аватар для kazak
3606 / 2746 / 356
Регистрация: 11.03.2009
Сообщений: 6,318
25.06.2010, 00:27
Вполне логичный результат.
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
25.06.2010, 00:32  [ТС]
Да, логичный.
Но как этого избежать?

Добавлено через 2 минуты
С точками проблему решил

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
#include <iostream>
#include <fstream>
#define number 3
#define SIZE 512
 
int main ()
{
    std::ifstream FILE_in ("input.txt", std::ios::in);
    char MAS[number][SIZE];
 
 
    if (!FILE_in) {
        std::cerr << "ERROR!" << std::endl;
        system ("pause");
        return 1; }
 
    for (int i=number-1; i>=0; i--)
    FILE_in.getline (MAS[i], SIZE, '.');
 
    for (int i=0; i<number; i++) {
        std::cout << MAS[i] << ".";
        std::cout << std::endl;
    }
 
    FILE_in.close();
 
    system ("pause");
    return 0;
}
0
 Аватар для kazak
3606 / 2746 / 356
Регистрация: 11.03.2009
Сообщений: 6,318
25.06.2010, 00:32
В смысле пробелы в начале, ну тут ручками придется, также обстоит дело и с переводом строки.
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
25.06.2010, 00:39  [ТС]
Во какую штуку придумал)

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 <iostream>
#include <fstream>
#define number 3
#define SIZE 512
 
int main ()
{
    std::ifstream FILE_in ("input.txt", std::ios::in);
    char MAS[number][SIZE];
 
    if (!FILE_in) {
        std::cerr << "ERROR!" << std::endl;
        system ("pause");
        return 1; }
 
    for (int i=number-1; i>=0; i--)
        FILE_in.getline (MAS[i], SIZE, '.');
 
    for (int i=0; i<number; i++) {
        if (MAS[i][0]==' ')
            std::cout << MAS[i]+1;
            
        else std::cout << MAS[i];
 
        std::cout << "." << std::endl;
    }
 
    FILE_in.close();
    system ("pause");
    return 0;
}
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
25.06.2010, 00:57
Можно попробовать создать класс "предложение", перегрузить операторы ввода и вывода.
Далее создать вектор предложение и три раза прочитать, потом вывести с конца ветора. Если в стиле Си то логичнее (ИМХО) опять же создать структуру "предложение", потом массив структур. В общем такая идея.

C++
1
2
3
4
5
6
7
8
class Sentence
{
public:
   friend std::ostream& operator << (std::ostream &os, const Sentence &w);
   friend std::istream& operator >> (std::istream &is, Sentence &w);
private:
   std::string str;
};
при этом реализация оператора вывода будет совсем тривиальной
C++
1
2
3
4
5
   friend std::ostream& operator << (std::ostream &os, const Sentence &w)
   {
      os << w.str;
      return os;
   }
а оператора ввода чуть посуровее... как еще точно не знаю, но если примерно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
   friend std::istream& operator >> (std::istream &is, Sentence &w)
   {
      char ch = 0;
      
      is >> ch;
      while(ch != '.') {
         w.str += ch;
         is >> ch;
      }
      w.str += '.';
 
      return is;
   }
а собственно решение совсем тривиально уже:
C++
1
2
3
4
5
6
7
8
9
   std::vector<Sentence> v(3);
   std::ifstream ifs("in.txt");
 
   for(int i = 0; i < 3; ++i)
      ifs >> v[i];
 
   for(int i = 2; i >= 0; --i)
      std::cout << v[i];
   std::cout << std::endl;
Добавлено через 2 минуты
а просто так символ "." в поток выводить не есть решение на мой взгляд. все таки надо с объектами работать, а не с выводом на экран.

Добавлено через 4 минуты
кстати о птичках, то есть о getline, вот так вот надо бы наверное
C++
1
2
3
4
5
6
   friend std::istream& operator >> (std::istream &is, Sentence &w)
   {
      std::getline(is, w.str, '.');
      w.str += '.';
      return is;
   }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.06.2010, 00:57

Считать из текстового файла 3 предложения и вывести их в обратном порядке
Проблемка в проге, помогите разобраться)) написать программу, которая считывает из текстового файла 3 предложения и выводит их в обратном...

Считать из файла три предложения и вывести их в обратном порядке
Помогите пожалуйста дорешить задачу!!! Файл я создала, а что дальше делать и как я не знаю... #include &lt;fstream&gt; #include...

Строки и структуры. Cчитать из текстового файла три предложения и вывести их в обратном порядке
Написать программу, которая считывает текст из файла и обраба-тывает его. Обработку текстовой информации нужно организовать с...

Считать из текстового файла три предложения и вывести их в обратном порядке
Помогите написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке.

Считать из текстового файла три предложения и вывести их в обратном порядке
Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке. Хотел уточнить, а можно это...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru