Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Файлы, язык Си

Автор: Neon6868 13.06.2007 23:24

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

Я начал писать программу, но даже не представляю как можно сделать так, чтобы предложения выводились в обратном порядке. Подскажите плз хотя бы идею как это сделать??

Программа:

Код

#include <fstream.h>
#include <string.h>
#include <stdio.h>
void main()
  {
  const int len=255;
  char word[len], line[len];
  ifstream fin("D:\\text.txt", ios::in | ios::nocreate);
  if (!fin) printf("\nOshibka");
  while (!feof(f))
  {

  }
  }

Автор: volvo 13.06.2007 23:35

Уточни, при входном файле:

Цитата
abc.
def.
ret.

ты хочешь получить
Цитата
cba.
fed.
ter.

или
Цитата
ret.
def.
abc.
?

Автор: Neon6868 13.06.2007 23:46

Вот так: ret.
def.
abc.

Автор: volvo 14.06.2007 0:14

Способов на самом деле море... Можно читать строки из файла в vector<std::string>, а потом применить к нему reverse(v.begin(), v.end());
и вывести на печать...

Можно сделать вот так (используем рекурсию для "разворота" порядка следования предложений):

#include <fstream.h>

void read_file(ifstream &f, char *buffer) {

if(!f.eof()) {
char *p;
p = new char[256];

f.getline(p, 255, '.');
read_file(f, p);
}

cout << buffer << endl;
}

int main() {

ifstream f_in("text.txt", ios::in);
if(!f_in) {
cout << "error opening file";
}
else {
read_file(f_in, "");
f_in.close();
}

return 0;
}

(при условии, что все предложение разделяются точками)

Автор: Neon6868 14.06.2007 1:09

большое спасибо smile.gif