Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2017, 15:58   #1
Elfilagas
Новичок
Джуниор
 
Регистрация: 03.02.2017
Сообщений: 2
По умолчанию Инвертировать исходный файл

Добрый день,
Два дня туплю над задачкой:
Без использования массива напишите программу, которая печатает на экране собственный исходный файл в обратном порядке.
Подскажите, как ее одолеть? ))

Последний раз редактировалось Elfilagas; 03.02.2017 в 16:05.
Elfilagas вне форума Ответить с цитированием
Старый 03.02.2017, 16:32   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Выскажу предположение, что
Цитата:
...собственный исходный файл...
- это файл подготовленный программой и ею же читаемый.
Программа может подготовить не только текстовый файл, но и бестиповой или компонентный.
Такие файлы состоят из блоков данных и могут, соответственно читаться в режиме прямого доступа. В таком режиме существуют процедуры типа filepos(), filesize(), seek(), ... Эти процедуры есть в Паскале, но и в других языках подобные процедуры есть (Интернет вам в помощь).
Т.о. можно создать, например, компонентный файл, а затем:
встать на последний блок (N)
прочитать его и вывести на экран
сдвинуться на блок назад (N-1) и т.д.

Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 06.02.2017, 10:28   #3
Elfilagas
Новичок
Джуниор
 
Регистрация: 03.02.2017
Сообщений: 2
По умолчанию

Спасибо. Вроде что-то похожее получается.
Еще вопрос, что здесь не так:
Код:
#include <iostream>
#include <fstream>

using namespace std;

int main() {

	char character;
	int count = 1;
	
	ifstream cppfile;
	ofstream txtfile;
	
	cppfile.open("Invert.cpp");
	txtfile.open("Program.txt");
	cppfile.get(character);
	while (!cppfile.eof()) {
		count++;
		txtfile.put(character);
		cppfile.get(character);
	}
	txtfile.close();
	cppfile.close();

	FILE *fp;
	fp = fopen("Program.txt", "rb");

	int c;
	for (int i=0; i <= count; i++) {
		fseek(fp, count-i, 0);
		c = fgetc(fp);
		printf("%c", c);
	}
	system("pause");
	return 0;
}
Все вроде делает, но последние три строчки не выводит. Количество символов (count) получается посчитано не правильно, но по сути я считаю их при записи каждого символа в этот же файл (файл Program.txt при открытии записан весь), а обратно получается что этого количества не достаточно.
Проблема похоже в переводах строк, именно они в счетчик не попадают, если их добавлять, то все больше отрезается текста.

Последний раз редактировалось Elfilagas; 06.02.2017 в 12:41.
Elfilagas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать исходный файл целых положительных и отрицательных чисел погромистка Паскаль, Turbo Pascal, PascalABC.NET 3 25.04.2016 21:51
Как превратить amx файл (то есть машинный код) в исходный в pwn. DenisReaver Помощь студентам 4 19.08.2011 15:40
Инвертировать строку Nitriyc Помощь студентам 4 30.11.2009 11:52
Инвертировать стэк в C++ Drozvd Помощь студентам 0 09.04.2009 03:58
Найчились превращать исходный код в EXE файл, теперь надо наоборот. Fellics{новичок} Помощь студентам 6 02.01.2009 23:18