Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329

Как сделать счет чисел с конца файла

01.02.2014, 18:16. Показов 5016. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Hello, world!
Возник такой вопрос, как сделать счет чисел с конца?
Имеется ввод периода.

Заранее Спасибо

Добавлено через 36 минут
Added: С конца файла
До n числа введенного при T
То есть ввожу T = 35;
И он прочитывает .txt файл и с конца выводит с 1 по 35 число
пробовал циклом, выдает чушь 5-6 чисел o_O
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.02.2014, 18:16
Ответы с готовыми решениями:

Работа с файлом, счёт строк, ошибка конца файла
Доброго времени суток! При исполнении сборки ни cmd ни far32 воспроизвести желаемый результат не смогли. Я предполагаю ошибку конца...

пытаюсь сделать реализацию через считывание из файла кол-ва чисел, i,но незнаю как сделать реализацию из файла в массив и сортировки.
В файле input.txt находится неизвестное количество вещественных чисел в интервале . Выцапарать их оттуда, отсортировать по убыванию модуля...

Чтение чисел из файла до конца строки
Есть один файл. В первой строке написано общее количество последующих строк, во всех остальных — как раз эти строки, в каждой из которых...

52
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.02.2014, 13:38
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Esecman Посмотреть сообщение
В моем случае поможет данная функция ?
Это не функция, а одно из значений openmode. Указание этого флага эквивалентно открытию файла и перемещению текущей позиции в конец.
Нет, в данном случае не поможет, и я дважды объяснил почему.
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2226 / 1428 / 420
Регистрация: 16.05.2013
Сообщений: 3,653
Записей в блоге: 6
04.02.2014, 13:39
Если подумать немного то можно прийти к следующей мысли. Для открытия файла создается входной поток (объект класса) итератор которого однонаправленный отсюда вывод читать файлы в обратном порядке через потоки нельзя, только поместив его (файл) в буфер(контейнер) и использовать реверсные итераторы.
0
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 13:40  [ТС]
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>
using namespace std;
 
int main () {
  int length;
  char * buffer;
 
  ifstream is;
  is.open ("test.txt", ios::binary );
 
  // get length of file:
  is.seekg (0, ios::end);
  length = is.tellg();
  is.seekg (0, ios::beg);
 
  // allocate memory:
  buffer = new char [length];
 
  // read data as a block:
  is.read (buffer,length);
 
  is.close();
 
  cout.write (buffer,length);
 
  delete[] buffer;
  return 0;
}
Нашел на форуме
Можно использовать этот код в качестве read'a с конца?
Проверил отпутом, все равно сначала читает Эх...
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.02.2014, 13:43
Ilot, было бы желание, а извратиться можно по-разному.
Только автор не дает постановки исходной задачи. В начале как-то невнятно было сказано, что чтение файла целиком вроде как не устраивает. Какой формат файла, какого он происхождения и зачем это все надо - информации нет. Подозреваю, что подход к решению задачи изначально был выбран неверный.
Но это я уже говорил, больше добавить нечего.
0
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 13:51  [ТС]
Формат файла .txt
Нужно для написания кое-чего
В ней имеется ввод T(период) и input data
Поэтому, мне нужна программа, которая по периоду(например я ввел 35), чтобы он дошел до 35 строки и делает output в другой .txt
З.Ы. Пока он доходит до 35 строки, нужно чтобы каждое число копировалось, а не 35...
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2226 / 1428 / 420
Регистрация: 16.05.2013
Сообщений: 3,653
Записей в блоге: 6
04.02.2014, 13:52
C++
1
  is.seekg (-T, ios::end);
Переносит указатель на T байт от конца файла. Ну и вперед читать в прямом порядке до завершения файла
0
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 13:57  [ТС]
Цитата Сообщение от Ilot Посмотреть сообщение
C++
1
  is.seekg (-T, ios::end);
Переносит указатель на T байт от конца файла. Ну и вперед читать в прямом порядке до завершения файла
Спасибо, добрый дядя.
А я то думал, что не будет работать O-O
Засунул в цикл - не работало
Сейчас кое-куда закинул в другое место - работает
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.02.2014, 13:57
Что ни пост, то новая постановка задачи.
Цитата Сообщение от Esecman Посмотреть сообщение
Формат файла .txt
Это не формат, а расширение. Может быть любым и на функционал никак не влияет.
Важнее как располагаются данные в файле. Все числа разделены пробельным символом или по одному числу на строку.
Цитата Сообщение от Esecman Посмотреть сообщение
Поэтому, мне нужна программа, которая по периоду(например я ввел 35), чтобы он дошел до 35 строки и делает output в другой .txt
При такой постановке нужно сделать 35 холостых getline, а после этого последующие строки копировать в выходной файл.
Цитата Сообщение от Esecman Посмотреть сообщение
З.Ы. Пока он доходит до 35 строки, нужно чтобы каждое число копировалось, а не 35
Куда копировалось, какое каждое число... Только что было сказано, что первые 35 строк нужно пропустить.
0
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 14:04  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Что ни пост, то новая постановка задачи.

Это не формат, а расширение. Может быть любым и на функционал никак не влияет.
Важнее как располагаются данные в файле. Все числа разделены пробельным символом или по одному числу на строку.

При такой постановке нужно сделать 35 холостых getline, а после этого последующие строки копировать в выходной файл.

Куда копировалось, какое каждое число... Только что было сказано, что первые 35 строк нужно пропустить.
Извините, но я не могу все подробно расписать.
Так как программа приватная
Простите, если что)

Добавлено через 4 минуты
O-O-O-P-S.
Ввел немного больше периода стало вылезать вот так:
output.txt
5
1.32532
1.32553
1.32549
1.32553
1.32549
1.32542
1.32561
1.32593
1.32582
1.32567
1.3256
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0


Числа естественно типа float;
Ошибка состоит в том, что вместо реальных чисел выходят нули
Начиная с 2 по 12 строки числа правильны
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2226 / 1428 / 420
Регистрация: 16.05.2013
Сообщений: 3,653
Записей в блоге: 6
04.02.2014, 14:07
Esecman, вы не поверите, но на этом форуме нет людей которые исправят ваши ошибки не видя вашего кода.
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.02.2014, 14:08
Я не задал ни одного вопроса, который затрагивал бы предметную область или приватную информацию.
Если есть вопрос, как получить какие-то данные из файла, то нужно как минимум описать формат входных данных. Вывод непонятно чего - не предоставляет никакой полезной информации.
Нужен самодостаточный пример: как выглядит входной файл и что хочется получить на выходе.
0
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 14:09  [ТС]
C++
1
2
3
4
5
input_high.seekg (-T_1, ios::end); // пробовал и в цикле. :)
    for(int i = 0; i < T_1;++i) {
    input_high >> array_high[i];
    output << array_high[i] << endl;
    }
Вот, кусок
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.02.2014, 14:19
Смешение на N байтов != смещению на N чисел.
0
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 19:03  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Смешение на N байтов != смещению на N чисел.
И что на данный момент можно сделать?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.02.2014, 19:08
Цитата Сообщение от Esecman Посмотреть сообщение
И что на данный момент можно сделать?
В этой теме я уже неоднократно отписывался что можно сделать:
1. Пересмотреть подход к решению задачи, поскольку, как я уже говорил раза 4, решение выбрано неоптимальное и нелогичное.
2. Использовать заранее подготовленную структуру, о которой я уже писал. Взять можно самописную или библиотечну. Пример самописной я тоже приводил.

Могу точно сказать чего делать НЕ надо.
Не надо пытаться угадывать. Пока я вижу только подход в духе "взяли какой-то кусок кода, попробовали в одном месте - не работает, приложили к другому - о, заработало" - хотя на самом деле не заработало, а в лучшем случае совпало. С такой угадайкой не продвинетесь ни на шаг. Мб что-нибудь и напишите, только все равно будет глючить.
0
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 19:14  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
В этой теме я уже неоднократно отписывался что можно сделать:
1. Пересмотреть подход к решению задачи, поскольку, как я уже говорил раза 4, решение выбрано неоптимальное и нелогичное.
2. Использовать заранее подготовленную структуру, о которой я уже писал. Взять можно самописную или библиотечну. Пример самописной я тоже приводил.

Могу точно сказать чего делать НЕ надо.
Не надо пытаться угадывать. Пока я вижу только подход в духе "взяли какой-то кусок кода, попробовали в одном месте - не работает, приложили к другому - о, заработало" - хотя на самом деле не заработало, а в лучшем случае совпало. С такой угадайкой не продвинетесь ни на шаг. Мб что-нибудь и напишите, только все равно будет глючить.
С чтением с конца встречаюсь впервые
Знаю то, что обязательно нужно использовать ios::end ну и цикл естественно

Числа типа float;
1 строка == 1 число(1.313133)
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.02.2014, 19:19
С буфером решается за один проход файла.
За два прохода можно сначала почитать количество строк в файле (холостые getline), потом вернуться к началу и вхолостую пропустить энное количество строк до нужной позиции. Где-то тут, кажется, уже предлагали такое.

Преимущество превого способа - всего один проход по файлу.
Для второго не нужно использовать доп библиотеки или писать свой буфер.
0
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 19:27  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
С буфером решается за один проход файла.
За два прохода можно сначала почитать количество строк в файле (холостые getline), потом вернуться к началу и вхолостую пропустить энное количество строк до нужной позиции. Где-то тут, кажется, уже предлагали такое.

Преимущество превого способа - всего один проход по файлу.
Для второго не нужно использовать доп библиотеки или писать свой буфер.
А Вы понимаете, что мне данную строку нужно найти с конца?
Помимо getline можно воспользоваться fscanf ну или еще много чем

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
int main() {
float n = 0;
int NUM_OF_FILE = 0;
FILE* file;
file = fopen("data.txt", "r");
while(!feof(file)) {
fscanf(file, "%f", &n);
NUM_OF_FILE++;
}
return 0;
}
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.02.2014, 19:31
Esecman,
Пусть нужно N сток с конца.
1. Прочитать все строки вхолостую - почитать их количество - K
2. Вернуться к началу файла. Пропустить (K - N) строк.
3. Читаем в массив оставшиеся N строк, что и требовалось. Инвертировать порядок можно уже в памяти.

Добавлено через 13 секунд

Не по теме:

Самому тошно советовать такие глупости.

1
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 19:45  [ТС]
Спасибо, попробую

Добавлено через 8 минут
Цитата Сообщение от 0x10 Посмотреть сообщение
Esecman,
Пусть нужно N сток с конца.
1. Прочитать все строки вхолостую - почитать их количество - K
2. Вернуться к началу файла. Пропустить (K - N) строк.
3. Читаем в массив оставшиеся N строк, что и требовалось. Инвертировать порядок можно уже в памяти.

Добавлено через 13 секунд

Не по теме:

Самому тошно советовать такие глупости.

З.Ы.
Так если я так сделаю, то получится у меня вот что(не проверял):
K = 44469
N = 35
44469-35 = 44434
for(int i = 0; i < NUM_OF_FILE - T_1; ++i) {
input >> array[i];
output << array[i] << endl;
}
// И что мне это даст? Он же мне не выведет число(-а) до окончания периода

Добавлено через 3 минуты
Или какими-то средствами сайвануть в буфер эти удаленные строки с файла что ли, а потом оутпутом
Даже и не знаю с чего начинать o-O
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2014, 19:45

как сделать счет
редбята подскажите как можно сделать такое. к примеру я делаю программу по оплате коммунальеных платежей. есть платежка естественно. как...

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

Как в игре сделать счёт голов?
Помогите пожалуйста. Как в игре сделать счёт голов? Думал сделать что когда мяч достигает координат пола, тогда засчитывался гол, но так...

А как на счет сделать раздел с кодами на VB на сайте?
Господа, Хотелось бы иметь место на этом сайте куда можно было бы примеры кодов и программок кидать. А то уж очень трудно иногда...

Как сделать счёт строк слева в DataGridView
Как сделать счёт строк слева в DataGrid? Предполагаю что где-то в свойствах, но найти не могу.


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru