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

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

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

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

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

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

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

Добавлено через 36 минут
Added: С конца файла
До n числа введенного при T
То есть ввожу T = 35;
И он прочитывает .txt файл и с конца выводит с 1 по 35 число
пробовал циклом, выдает чушь 5-6 чисел o_O
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 18:16     Как сделать счет чисел с конца файла
Посмотрите здесь:
C++ Перебор файла посимвольно, как организовать цикл, работающий до конца файла.
Как символ конца файла выглядит в двоичном представлении? C++
C++ std::cin, eof не всегда принимается как признак конца файла
C++ Как убрать с конца строки знак переноса, после считывания ее из файла?
C++ Как сделать чтобы перебор символов шел до конца строки? Если у меня например в ней есть пробелы?
C++ Счет чисел в массиве
автоматический счет имени файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
03.02.2014, 19:28  [ТС]     Как сделать счет чисел с конца файла #16
Такой вопрос, а может можно при помощи getline и while как-то решить вопрос?
или хотя бы fscanf'ом
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
03.02.2014, 19:30     Как сделать счет чисел с конца файла #17
Короче, то, что надо было спросить с самого начала: какая задача решается?
Если возникла потребность городить костыли для таких неестественных действий, высока вероятность, что изначально выбран неоптимальный способ решения.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
03.02.2014, 20:10  [ТС]     Как сделать счет чисел с конца файла #18
Цитата Сообщение от 0x10 Посмотреть сообщение
Короче, то, что надо было спросить с самого начала: какая задача решается?
Если возникла потребность городить костыли для таких неестественных действий, высока вероятность, что изначально выбран неоптимальный способ решения.
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
#include <stdio.h>
#include <stdlib.h>
 
#define FILE_NAME "data.txt"
 
int main(void){
    char * buf, * p;
    long len;
    FILE * f;
 
    if ( ( f = fopen(FILE_NAME, "rb") ) == NULL ){
        perror("fopen");
        system("pause");
    }
    if ( fseek(f, 0, SEEK_END) ){
        perror("fseek");
        system("pause");
    }
    if ( ( len = ftell(f)) < 1 ){
        fprintf(stderr, "File can't be readen, or empty.\n");
        system("pause");
    }
    rewind(f);
 
    if ( ( buf = (char*)malloc(len) ) == NULL ){
        perror("malloc");
        if ( fclose(f) )
            perror("fclose");
        system("pause");
    }
 
    if ( fread(buf, 1, len, f) != len ){
        perror("fread");
        if ( fclose(f) )
            perror("fclose");
        system("pause");
    }
    if ( fclose(f) )
        perror("fclose");
 
    for ( p = buf + len - 1; p >= buf; --p )
        putchar(*p);
 
    free(buf);
    
}
Нашел код на форуме, но работает не так как нужно.
У меня числа типа float
Как переделать?
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
03.02.2014, 20:14     Как сделать счет чисел с конца файла #19
Чуть выше я уже говорил, что в случае с биранрым файлом свободы чуть больше, поскольку работа выполняется над потоком байтов. С текстовым файлам такое не прокатит.

Я все еще не услышал ни исходной задачи, ни какой-либо информации о файле. Откуда он берется, кто определяет его формат и почему потребовалось читать его с конца.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 13:26  [ТС]     Как сделать счет чисел с конца файла #20
ios::ate — передвинуться в конец уже открытого файла;
В моем случае поможет данная функция ?
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
04.02.2014, 13:38     Как сделать счет чисел с конца файла #21
Цитата Сообщение от Esecman Посмотреть сообщение
В моем случае поможет данная функция ?
Это не функция, а одно из значений openmode. Указание этого флага эквивалентно открытию файла и перемещению текущей позиции в конец.
Нет, в данном случае не поможет, и я дважды объяснил почему.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
04.02.2014, 13:39     Как сделать счет чисел с конца файла #22
Если подумать немного то можно прийти к следующей мысли. Для открытия файла создается входной поток (объект класса) итератор которого однонаправленный отсюда вывод читать файлы в обратном порядке через потоки нельзя, только поместив его (файл) в буфер(контейнер) и использовать реверсные итераторы.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 13:40  [ТС]     Как сделать счет чисел с конца файла #23
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 с конца?
Проверил отпутом, все равно сначала читает Эх...
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
04.02.2014, 13:43     Как сделать счет чисел с конца файла #24
Ilot, было бы желание, а извратиться можно по-разному.
Только автор не дает постановки исходной задачи. В начале как-то невнятно было сказано, что чтение файла целиком вроде как не устраивает. Какой формат файла, какого он происхождения и зачем это все надо - информации нет. Подозреваю, что подход к решению задачи изначально был выбран неверный.
Но это я уже говорил, больше добавить нечего.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 13:51  [ТС]     Как сделать счет чисел с конца файла #25
Формат файла .txt
Нужно для написания кое-чего
В ней имеется ввод T(период) и input data
Поэтому, мне нужна программа, которая по периоду(например я ввел 35), чтобы он дошел до 35 строки и делает output в другой .txt
З.Ы. Пока он доходит до 35 строки, нужно чтобы каждое число копировалось, а не 35...
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
04.02.2014, 13:52     Как сделать счет чисел с конца файла #26
C++
1
  is.seekg (-T, ios::end);
Переносит указатель на T байт от конца файла. Ну и вперед читать в прямом порядке до завершения файла
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 13:57  [ТС]     Как сделать счет чисел с конца файла #27
Цитата Сообщение от Ilot Посмотреть сообщение
C++
1
  is.seekg (-T, ios::end);
Переносит указатель на T байт от конца файла. Ну и вперед читать в прямом порядке до завершения файла
Спасибо, добрый дядя.
А я то думал, что не будет работать O-O
Засунул в цикл - не работало
Сейчас кое-куда закинул в другое место - работает
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
04.02.2014, 13:57     Как сделать счет чисел с конца файла #28
Что ни пост, то новая постановка задачи.
Цитата Сообщение от Esecman Посмотреть сообщение
Формат файла .txt
Это не формат, а расширение. Может быть любым и на функционал никак не влияет.
Важнее как располагаются данные в файле. Все числа разделены пробельным символом или по одному числу на строку.
Цитата Сообщение от Esecman Посмотреть сообщение
Поэтому, мне нужна программа, которая по периоду(например я ввел 35), чтобы он дошел до 35 строки и делает output в другой .txt
При такой постановке нужно сделать 35 холостых getline, а после этого последующие строки копировать в выходной файл.
Цитата Сообщение от Esecman Посмотреть сообщение
З.Ы. Пока он доходит до 35 строки, нужно чтобы каждое число копировалось, а не 35
Куда копировалось, какое каждое число... Только что было сказано, что первые 35 строк нужно пропустить.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
04.02.2014, 14:04  [ТС]     Как сделать счет чисел с конца файла #29
Цитата Сообщение от 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 строки числа правильны
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2014, 14:07     Как сделать счет чисел с конца файла
Еще ссылки по теме:
Условие конца файла C++
определение конца файла C++
C++ Чтение из файла с конца
Истинность конца файла C++
Считывание до конца файла C++

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

Или воспользуйтесь поиском по форуму:
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
04.02.2014, 14:07     Как сделать счет чисел с конца файла #30
Esecman, вы не поверите, но на этом форуме нет людей которые исправят ваши ошибки не видя вашего кода.
Yandex
Объявления
04.02.2014, 14:07     Как сделать счет чисел с конца файла
Ответ Создать тему
Опции темы

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