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

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

Восстановить пароль Регистрация
 
Osman
1 / 1 / 0
Регистрация: 07.10.2012
Сообщений: 16
28.01.2013, 09:37     Считать из текстового файла три предложения и вывести их в обратном порядке #1
Считать из текстового файла три предложения и вывести их в обратном порядке.
Обработку текстовой информации нужно организовать с использованием С – строк.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2013, 09:37     Считать из текстового файла три предложения и вывести их в обратном порядке
Посмотрите здесь:

C++ Считать из текстового файла 3 предложения и вывести их в обратном порядке
C++ Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке.
C++ считать три предложения и вывести их в обратном порядке.
C++ Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке.
Считать в строку три предложения и вывести их в обратном порядке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
28.01.2013, 10:17     Считать из текстового файла три предложения и вывести их в обратном порядке #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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
void reverse_copy(const char **strings, size_t count, FILE *output)
{
    int i;
    for (i = count - 1; i >= 0; --i)
    {
        fputs(strings[i], output);
        fputs("\n\n\n", output);
    }
}
 
#define TO_READ 3
 
long find_end(FILE *file)
{
    long pos = ftell(file);
    while (!feof(file))
    {
        int ch = fgetc(file);
        if (ch == '!' || ch == '.' || ch == '?')
        {
            pos = ftell(file);
            break;
        }
    }
    return pos;
}
 
int main()
{
    char *strings[TO_READ];
    char *filename = "D:\\1.txt";
    long current_pos, end_pos;
    size_t readed = 0;
    size_t i;
    FILE *file = fopen(filename, "r");
    if (!file)
        exit(1);
 
    for (i = 0; i < TO_READ; i++)
    {
        while (!feof(file) && isspace(fgetc(file)))
            ;
        fseek(file, ftell(file) - 1, SEEK_SET);
        current_pos = ftell(file);
        end_pos = find_end(file);
        strings[i] = (char*)calloc(end_pos - current_pos + 1, sizeof(char));
        fseek(file, current_pos, SEEK_SET);
        fread(strings[i], sizeof(char), end_pos - current_pos, file);
        ++readed;
        if (feof(file))
            break;
    }
 
    reverse_copy(strings, readed, stdout);
 
    for (i = 0; i < TO_READ; i++)
        free(strings[i]);
    fclose(file);
    return 0;
}
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
28.01.2013, 10:48     Считать из текстового файла три предложения и вывести их в обратном порядке #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
// console_test.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <vector>
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
 
const char file_name[] = "c:\\1.txt";
const unsigned int counter_str = 3;
 
int _tmain(int argc, _TCHAR* argv[])
{
    ifstream file;
    file.open(file_name);
    string s[counter_str];
 
    for (unsigned int i = 0; i < counter_str; i++)
    {
        getline(file, s[i]);
    }
    for (unsigned int i = counter_str  ; i  ; i--)
    {
        cout << s[i - 1].c_str() <<endl;
    }
    return 0;
}
Osman
1 / 1 / 0
Регистрация: 07.10.2012
Сообщений: 16
28.01.2013, 10:58  [ТС]     Считать из текстового файла три предложения и вывести их в обратном порядке #4
В CodeBlocks ни один не работает
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
28.01.2013, 11:02     Считать из текстового файла три предложения и вывести их в обратном порядке #5
Osman, кривой кодблок

Добавлено через 22 секунды
Osman, ошибки какие?

Добавлено через 33 секунды
Osman, у меня stdafx выкенте
Osman
1 / 1 / 0
Регистрация: 07.10.2012
Сообщений: 16
28.01.2013, 11:55  [ТС]     Считать из текстового файла три предложения и вывести их в обратном порядке #6
C++
1
int _tmain(int argc, _TCHAR* argv[])
error: '_TCHAR' has not been declared

Добавлено через 18 минут
есьт еще такой вариант, но не знаю как выделить только 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
 
 char bufRus[256];
 char* Rus(char* mes)
  {  AnsiToOem(mes, bufRus);
    return bufRus;
   }
 
int main(void)
{ char ch[2]; FILE * f;
  f=fopen("D:\\1.txt","r");
  if (f != NULL)
   { // определяем длину файла
     fseek(f,0,SEEK_END);
     long len = ftell(f);
    // выделяем буфер необходимого размера
     char *buf=new char[len+1];
    // смещаем указатель на начало файла и
    // считываем файл в буфер
     fseek(f,0,SEEK_SET);
     fread(buf, len,1, f); buf[len]='\0';
    // выделение предложений из текста
    long n = 0; // позиция начала предложения
    long i=0, j=0;
    while(buf[i])
     { if (buf[i]== '.')
        { // вывод символов вопросительного
          // предложения
          for(j=n; j<=i; j++)
           { ch[0]=buf[j]; ch[1]='\0';
             cout << Rus(ch);
            }
          n=i+1;
          i++;
        }
         if (buf[i]=='!')
         n=i+1;
       i++;
      }
     fclose(f);
    cout << endl;
  } else
      cout << "Файл  не найден!\n";
}
Добавлено через 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
30
31
32
33
34
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::ifstream ifs("D:\\1.txt");
    if(ifs.is_open())
    {
        std::vector <std::string> v;
        std::string tmp, delims = ".!?";
        char c;
        for(int i = 0; i < 3; ++i)
        {
            while(ifs.get(c))
            {
                 tmp += c;
                 if(delims.find(c) != std::string::npos || tmp.empty()) break;
            }
            if(tmp.empty()) break;
            v.push_back(tmp);
            tmp.clear();
        }
        std::copy(v.rbegin(), v.rend(), std::ostream_iterator<std::string>(std::cout, ";\n"));
    }
    else
    {
        std::cerr << "File not found\n";
    }
    ifs.close();
    return 0;
Как сделать теперь в С?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2013, 12:27     Считать из текстового файла три предложения и вывести их в обратном порядке
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
28.01.2013, 12:27     Считать из текстового файла три предложения и вывести их в обратном порядке #7
Цитата Сообщение от Osman Посмотреть сообщение
error: '_TCHAR' has not been declared
естественно эт же MVC 2010

Цитата Сообщение от Osman Посмотреть сообщение
Как сделать теперь в С?
Пaтрик написал
Yandex
Объявления
28.01.2013, 12:27     Считать из текстового файла три предложения и вывести их в обратном порядке
Ответ Создать тему
Опции темы

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