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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
#1

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

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

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

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

Добавлено через 36 минут
Added: С конца файла
До n числа введенного при T
То есть ввожу T = 35;
И он прочитывает .txt файл и с конца выводит с 1 по 35 число
пробовал циклом, выдает чушь 5-6 чисел o_O
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 18:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать счет чисел с конца файла (C++):

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

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

Чтения структуры из файла (описать структуру с именем "ORDER": "счет плательщика"; "счет получателя"; "сумма, переводится банковской операцией") - C++
Описать структуру с именем "ORDER", содержащий следующие поля: "Счет плательщика"; "Счет получателя"; "Сумма, переводится банковской...

Как символ конца файла выглядит в двоичном представлении? - C++
Пытаюсь реализовать Хаффмана и столкнулась с такой проблемой: когда я записываю сформированный код в файл у меня в некоторых байтах...

Как убрать с конца строки знак переноса, после считывания ее из файла? - C++
Всем доброго дня. Говоря подробнее, я считываю информацию из текстового файла. Там находятся фамилии в столбик. После считывания строки, я...

std::cin, eof не всегда принимается как признак конца файла - C++
std::string text; char ch = 0; while(!std::cin.get(ch).eof()){ text.append(1, ch); } Ввожу в консоль в Windows: "^Z"...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6380 / 5945 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
01.02.2014, 18:30 #2
Открыть файл в режиме дозаписи.
Для Сишного ввода это делается так
C++
1
FILE *ff=fopen("filename.txt","at");
Тогда запись будет происходить в конец файла.

А если имелось ввиду вывести 35 последних чисел,
то можно так:
1. читаем весь файл в одну и ту же переменную и считаем,
сколько их прочтется в переменную n.
2. Перематываем файл на начало.
3. Читаем вхолостую n-35 чисел.
4. Заносим в массив оставшиеся 35 чисел.
0
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
01.02.2014, 18:33  [ТС] #3
внимательно читайте условие!

Добавлено через 2 минуты
Цитата Сообщение от zss Посмотреть сообщение
Открыть файл в режиме дозаписи.
Для Сишного ввода это делается так
C++
1
FILE *ff=fopen("filename.txt","at");
Тогда запись будет происходить в конец файла.

А если имелось ввиду вывести 35 последних чисел,
то можно так:
1. читаем весь файл в одну и ту же переменную и считаем,
сколько их прочтется в переменную n.
2. Перематываем файл на начало.
3. Читаем вхолостую n-35 чисел.
4. Заносим в массив оставшиеся 35 чисел.
У меня 44469 чисел
Тем более мне кажется Ваш случай - не то
0
ValeryS
Модератор
6631 / 5039 / 466
Регистрация: 14.02.2011
Сообщений: 16,844
01.02.2014, 18:36 #4
Esecman,
тебе fseek нужен?
http://devoid.com.ua/functions-about...ons/fseek.html
0
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,022
01.02.2014, 18:36 #5
Esecman, читать в кольцевой буфер размерности T?
0
zss
Модератор
Эксперт С++
6380 / 5945 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
01.02.2014, 18:40 #6
Цитата Сообщение от Esecman Посмотреть сообщение
У меня 44469 чисел
Ну, это же не 44 миллиарда.
0
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
01.02.2014, 21:06  [ТС] #7
сам разобрался )
если что , отпишу

Добавлено через 2 часа 15 минут
C++
1
2
3
4
5
for(int i = 0; i <= NUM_OF_FILE_HIGH - T_1; ++i) {
    input_high >> array_high[i];
    cout << T_1 << endl;
    output << array_high[i] << endl;
    }
Имеется такой код(к примеру)
я из количества чисел - период -> он мне выдал на 300 чисел меньше(ну столько я период вводил);
А теперь как сохранить эти 300 удаленных чисел?
0
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,022
01.02.2014, 21:09 #8
Логика какая-то инвертированая получается.

Чем кольцевой буфер не устроил?
0
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
01.02.2014, 21:38 #9
Esecman, Получение последней строки из файла
0
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
02.02.2014, 19:16  [ТС] #10
мне нужно чтение чисел с конца файла)
0
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,022
02.02.2014, 19:20 #11
Механизм чтения файлов не ориентирован на чтение с конца.
Если в случае с бинарными файлами еще можно извратиться и считать последние n байн, а затем уже интерпретировать их как угодно, то в случае с текстовыми прямого решения нет, поскольку каждая операция чтения продвигает текущую позицию курсора вперед. В крайнем случае читать построчно и парсить строки с конца.

Почему-то мое решение выше было тупо проигнорировано.
0
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
03.02.2014, 14:11  [ТС] #12
Цитата Сообщение от 0x10 Посмотреть сообщение
Логика какая-то инвертированая получается.

Чем кольцевой буфер не устроил?
А на примере можно?
0
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,022
03.02.2014, 18:44 #13
Цитата Сообщение от Esecman Посмотреть сообщение
А на примере можно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <boost/circular_buffer.hpp>
 
int main()
{
    boost::circular_buffer<int> cb(3);
 
    // Предположим, что здесь происходит чтение значений из файла
    for (int i = 0; i < 100; ++i)
    {
        cb.push_back(i);
    }
 
    // последние 3 значения в обратном порядке: 99, 98, 97.
    for (boost::circular_buffer<int>::reverse_iterator it = cb.rbegin();
            it != cb.rend(); ++it)
    {
        std::cout << *it << " ";
    }
    std::cout << std::endl;
}
0
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
03.02.2014, 19:22  [ТС] #14
Возможно, Вы используете C++ Builder
Таким не пользуюсь, пример можно типа VS C++ или DEV-C++
0
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,022
03.02.2014, 19:26 #15
Цитата Сообщение от Esecman Посмотреть сообщение
Возможно, Вы используете C++ Builder
Не дай б-г.

Цитата Сообщение от Esecman Посмотреть сообщение
можно типа VS C++ или DEV-C++
Буст можно использовать и там, и там.
В крайнем случае, кольцевой буфер можно реализовать самому - он простой. Не так давно я на чистых сях набрасывал, переписать в плюсовом стиле не должно составить труда (Реализация семафоров)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2014, 19:26
Привет! Вот еще темы с ответами:

Как сделать чтобы перебор символов шел до конца строки? Если у меня например в ней есть пробелы? - C++
for (i=0;X!='\0';i++); // цикл перебора символов строки, продолжается пока не стретится пустой символ Вот этот цикл перебирает до...

Счет чисел в массиве - C++
Здравствуйте! Мой счетчик что то не работает. const int size=255; char c; int k, i, j, count; count=0; ...

автоматический счет имени файла - C++
У меня в папке лежит текстовой файл.. его название мне не известно.. Как мне автоматически определить его имя и вывести в консоль?

Чтение файла с несколькими знаками конца файла - C++
В файле несколько раз встречается ноль, и ни как не получается прочитать его полностью. Как можно решить данную проблему ?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.02.2014, 19:26
Ответ Создать тему
Опции темы

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