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

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

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

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

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

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

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

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

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

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

Добавлено через 2 часа 57 минут
Ну я не верю, что никто не может написать алгоритмы к данных задачам)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2010, 20:47     Считать из текстового файла три предложения и вывести их в обратном порядке
Посмотрите здесь:
Считать из текстового файла три предложения и вывести их в обратном порядке C++
Считать из текстового файла три предложения и вывести их в обратном порядке C++
C++ Считать из текстового файла три предложения и вывести их в обратном порядке
C++ Считать из текстового файла 3 предложения и вывести их в обратном порядке
C++ Строки и структуры. Cчитать из текстового файла три предложения и вывести их в обратном порядке
C++ Считать три предложения и вывести их в обратном порядке
C++ Считать в строку три предложения в вывести их в обратном порядке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
23.06.2010, 21:02     Считать из текстового файла три предложения и вывести их в обратном порядке #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
#include <fstream>
#include <string>
 
using namespace std;
 
ifstream cin("input.txt");
ofstream cout("output.txt");
 
int main()
{
    string ar[100];
    string s;
    for(int i = 0; i < 3; i++)
    {
        int cnt = 0;
        do {
            cin >> ar[cnt];
            cnt++;
        }while(ar[cnt-1][ar[cnt-1].size()-1] != '.');
            
        ar[cnt-1].resize(ar[cnt-1].size()-1);
        for(int i = cnt-1; i >= 0; i--)
            cout << ar[i] << ' ';
        cout << ar[0] << '.' << endl;
    }
}
Добавлено через 1 минуту
Выглядит жутко. Йа быдлокодерко.
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
23.06.2010, 21:10  [ТС]     Считать из текстового файла три предложения и вывести их в обратном порядке #3
Прошу прощения, но я просил алгоритм

Добавлено через 14 секунд
Я хочу попробовать сам написать.
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
23.06.2010, 21:14     Считать из текстового файла три предложения и вывести их в обратном порядке #4
А, извините. Ну, думаю, восстановить его можно , хотя, согласен, уже не столь интересно.
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
23.06.2010, 23:34  [ТС]     Считать из текстового файла три предложения и вывести их в обратном порядке #5
Ап-ап.
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
23.06.2010, 23:38     Считать из текстового файла три предложения и вывести их в обратном порядке #6
Чего тебе надо-то? Псевдокод?
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
24.06.2010, 17:05  [ТС]     Считать из текстового файла три предложения и вывести их в обратном порядке #7
Я же уже говорил, и не раз

Добавлено через 17 часов 19 минут
Как говорится, надежда умирает последней )
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
24.06.2010, 18:23     Считать из текстового файла три предложения и вывести их в обратном порядке #8
Цитата Сообщение от neske Посмотреть сообщение
Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке.
Читаете из файла по символу, добавляете его в буфер. Проверяете, не является ли символ точкой. Если является - содержимое буфера в стек, буфер обнуляете, проверяете количество строк в стеке, если равно трём - прекращаете чтение, выводите содержимое стека. Если меньше трёх - пропускаете символы до первого непробельного и снова читаете, пишите в буфер, проверяете - не точка ли...
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
24.06.2010, 18:42  [ТС]     Считать из текстового файла три предложения и вывести их в обратном порядке #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <fstream>
 
int main ()
{
    char tmp;
    std::ifstream FILE_in ("input.txt", std::ios::in);
    if (!FILE_in) {
        std::cerr << "ERROR!" << std::endl;
        system ("pause");
        return 1; }
 
    while (!FILE_in.eof())
    {
        FILE_in >> tmp;
        
    }
 
    FILE_in.close();
    system ("pause");
    return 0;
}
Про буфер в книге не написано, в гугле тоже не нашел ..
Можно привести пример?
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
24.06.2010, 20:17     Считать из текстового файла три предложения и вывести их в обратном порядке #10
Цитата Сообщение от neske Посмотреть сообщение
if (!FILE_in)
Оно конечно можно и так, но красивее будет использовать специальную функцию fstream::is_open()

Цитата Сообщение от neske Посмотреть сообщение
FILE_in >> tmp;
Оператор взять из потока читает до первого пробела или нажатия ентер.
Опять же лучше использовать ifstream::getline(str, size, delim) - читает символы пока не считаем в количестве size или не встретим символ разделитель delim.
time2die
51 / 51 / 3
Регистрация: 25.05.2010
Сообщений: 182
24.06.2010, 20:30     Считать из текстового файла три предложения и вывести их в обратном порядке #11
Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке.
3 массива для предложений, массив из 3 int для хранения смещений, когда находим первую\вторую\третью точку заносим смещение в массив, копируем по очереди текст между 2 и 3 смещением, 1 и 2 , первым символом и 1 смещением, в буффуре и сразу выводим(скопировал - вывел, скопировал - вывел)
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
24.06.2010, 21:08  [ТС]     Считать из текстового файла три предложения и вывести их в обратном порядке #12
kazak, на счет функции ifstream::getline, как определить размер size? Ведь предложение может быть рочти любого размера.

Спасибо всем, щас попробую.

Добавлено через 2 минуты
time2die, да и на счет вашего варианта.
Может есть общепринятый константный размер?
time2die
51 / 51 / 3
Регистрация: 25.05.2010
Сообщений: 182
24.06.2010, 21:20     Считать из текстового файла три предложения и вывести их в обратном порядке #13
хм...это я ступил и вместо одного варианта сразу 2 рассказал
1) у нас 1 мерный массив для хранения данных, мы в него считываем по символу до третей точки, попутно сохраняя смещения точек в массив типа int, потом их выводим, высчитывая размер и положение предложения через работы со смещениями
2) у нас двумерный массив, состоящий из 3 строк, в каждую строку мы записываем предложение, потом их выводим в обратном порядке
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
24.06.2010, 21:23     Считать из текстового файла три предложения и вывести их в обратном порядке #14
Цитата Сообщение от neske Посмотреть сообщение
Ведь предложение может быть рочти любого размера.
Я думаю массив на 512 байт с головой хватит на одно предложение.
Есть аналог для string
C++
1
istream& getline ( istream& is, string& str, char delim );
Находится в <string>
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
24.06.2010, 22:33     Считать из текстового файла три предложения и вывести их в обратном порядке #15
neske, вот так из строки три предложения читает. При желании не сложно из файла читать заставить...
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
42
43
#include <iostream>
#include <string>
#include <stack>
#include <cctype>
#include <limits>
 
int main(){
    std::string buf;
    char ch;
    bool inside;
    std::stack<std::string> stack;
    const int SENTENCES_NEEDED = 3;
    
    std::cout << "Text: ";
    inside = false;
    buf = "";
    while ( ( ch = std::cin.get() ) != '\n' ){
        if ( isspace(ch) && ! inside )
            continue;
        inside = true;
        buf += ch;
        if ( ch == '.' ){
            stack.push(buf);
            buf = "";
            inside = false;
            if ( stack.size() == SENTENCES_NEEDED ){
                std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
                break;
            }
        }
    }
    
    if ( stack.size() < SENTENCES_NEEDED ){
        std::cerr << "Not enough sentences!" << std::endl;
        return 1;
    }
    while ( ! stack.empty() ){
        buf = stack.top();
        std::cout << buf << std::endl;
        stack.pop();
    }
    return 0;
}
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
24.06.2010, 23:35  [ТС]     Считать из текстового файла три предложения и вывести их в обратном порядке #16
kazak, при использовании функции std::ifstream::getline, выходит ошибка:

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

Добавлено через 4 минуты
Или функция delim не определена стандартно?
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
24.06.2010, 23:39     Считать из текстового файла три предложения и вывести их в обратном порядке #17
delim не функция, а char'овский символ, при встрече которого нужно прекратить считывание.
neske
1473 / 840 / 73
Регистрация: 26.03.2010
Сообщений: 2,882
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
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
24.06.2010, 23:53     Считать из текстового файла три предложения и вывести их в обратном порядке #19
delim символ, а не строка.
C++
1
std::ifstream::getline (MAS, SIZE, '.')
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2010, 23:53     Считать из текстового файла три предложения и вывести их в обратном порядке
Еще ссылки по теме:
Считать в строку три предложения и вывести их в обратном порядке C++
Считать три предложения и вывести их в обратном порядке (нужны комментарии) C++
C++ Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке.
C++ Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке
C++ Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке.

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

Или воспользуйтесь поиском по форуму:
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
24.06.2010, 23:53     Считать из текстового файла три предложения и вывести их в обратном порядке #20
Цитата Сообщение от kazak Посмотреть сообщение
delim не функция, а char'овский символ, при встрече которого нужно прекратить считывание.
а не подскажете какой его код в ANSI?
Yandex
Объявления
24.06.2010, 23:53     Считать из текстового файла три предложения и вывести их в обратном порядке
Ответ Создать тему
Опции темы

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