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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
neske
1498 / 865 / 84
Регистрация: 26.03.2010
Сообщений: 2,966
#1

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

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

Добрый день форумчане!

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

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

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

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

Добавлено через 2 часа 57 минут
Ну я не верю, что никто не может написать алгоритмы к данных задачам)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2010, 20:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считать из текстового файла три предложения и вывести их в обратном порядке (C++):

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

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

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

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

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

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

33
neske
1498 / 865 / 84
Регистрация: 26.03.2010
Сообщений: 2,966
24.06.2010, 23:35  [ТС] #16
kazak, при использовании функции std::ifstream::getline, выходит ошибка:

error: `delim' was not declared in this scope
Смысл понимаю, но как избавиться не знаю.

Добавлено через 4 минуты
Или функция delim не определена стандартно?
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
24.06.2010, 23:39 #17
delim не функция, а char'овский символ, при встрече которого нужно прекратить считывание.
1
neske
1498 / 865 / 84
Регистрация: 26.03.2010
Сообщений: 2,966
24.06.2010, 23:52  [ТС] #18
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 SIZE 512
#define delim .!?
 
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, delim))
    {
        int count=0;
        FILE_in >> tmp;
        MAS[count]=tmp;
        count++;
    }
 
    FILE_in.close();
 
    system ("pause");
    return 0;
}
Таким образом хотел считать первое предложение в массив.

error: expected unqualified-id before '!' token
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
24.06.2010, 23:53 #19
delim символ, а не строка.
C++
1
std::ifstream::getline (MAS, SIZE, '.')
1
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
24.06.2010, 23:53 #20
Цитата Сообщение от kazak Посмотреть сообщение
delim не функция, а char'овский символ, при встрече которого нужно прекратить считывание.
а не подскажете какой его код в ANSI?
0
neske
1498 / 865 / 84
Регистрация: 26.03.2010
Сообщений: 2,966
25.06.2010, 00:00  [ТС] #21
Прошу прощения за глупые вопросы, но я пытаюсь понять =)

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
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
25.06.2010, 00:04 #22
Да, самого главного я и не заметил, ifstream::getline - это функция класса, и вызывать ее надо с конкретным объектом.
C++
1
std::ifstream::getline (MAS, SIZE, '.')// считывать то считываем, только откуда?
=>
C++
1
FILE_in.getline (MAS, SIZE, '.')
Цитата Сообщение от IchMors Посмотреть сообщение
а не подскажете какой его код в ANSI?
delim сдесь обозначает не какой-то конкретный символ, а аргумент функции, который имеет тип char.
2
neske
1498 / 865 / 84
Регистрация: 26.03.2010
Сообщений: 2,966
25.06.2010, 00:08  [ТС] #23
Содержимое файла 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
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
25.06.2010, 00:12 #24
А без while?
1
neske
1498 / 865 / 84
Регистрация: 26.03.2010
Сообщений: 2,966
25.06.2010, 00:14  [ТС] #25
kazak, вы правы! Спасибо

Только знаете, он счтывает до точки, и предложение не совсем полноценное получается.
Как исправить?
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
25.06.2010, 00:16 #26
В чем неполноценность заключается?
0
neske
1498 / 865 / 84
Регистрация: 26.03.2010
Сообщений: 2,966
25.06.2010, 00:17  [ТС] #27
Самого знака нет.
Будь это точка, или что-то иное.
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
25.06.2010, 00:21 #28
Тогда попробуй функцию get. Аргументы те же.
0
neske
1498 / 865 / 84
Регистрация: 26.03.2010
Сообщений: 2,966
25.06.2010, 00:24  [ТС] #29
Вот, вроде бы получилось решить задачу:

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
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
25.06.2010, 00:27 #30
Вполне логичный результат.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2010, 00:27
Привет! Вот еще темы с ответами:

Считать три предложения и вывести их в обратном порядке - C++
Программа , которая считывает три предложения и выводит их в обратном порядке. ребят помогите очень надо..

Считать в строку три предложения и вывести их в обратном порядке - C++
Считать в строку три предложения и вывести их в обратном порядке #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include...

Считать в строку три предложения в вывести их в обратном порядке - C++
Считать в строку три предложения в вывести их в обратном порядке #include&lt;conio.h&gt; #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; ...

Считать три предложения и вывести их в обратном порядке (нужны комментарии) - C++
Всем Здравствуйте. У меня есть рабочий код программы. Вот сама задача: Написать программу, которая считывает три предложения и выводит их в...


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

Или воспользуйтесь поиском по форуму:
30
Yandex
Объявления
25.06.2010, 00:27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru