С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/47: Рейтинг темы: голосов - 47, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 13.08.2010
Сообщений: 4

Построчное чтение и обработка данных из файла.

13.08.2010, 21:53. Показов 8976. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я новичок в программировании и мне нужно решить следующую задачу, для решения которой требуется читать данные из файла построчно.

Задача из учебника Скиена "Олимпиадные задачи по программированию".

Название 3n+1.

Вот её описание:
"Рассмотрим следующий алгоритм генерации последовательности чисел. Начнем с целого числа n. Если n четно, то поделим на 2. Если n нечетно, то умножим на 3 и добавим 1. Будем повторять этот процесс с новыми полученным n, пока n не станет равным 1. Например, для n = 22 будет сгенерирована след. посл. чисел:
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
Для данного n длиной цикла n будем называть число сгенерированных чисел до и включая 1. В приемере, приведенном выше, длина цикла 22 равна 16. Для двух заданных чисел i и j вы должны определить максимальную длину цикла для всех чисел между i и j, включая обе конечные точки.

Входные данные:
Входные данные будут состоять из серии пар целых чисел i и j, одна пара чисел в строке. Все целые числа будут меньше 1000000 и больше 0.

Выходные данные:
Для каждой пары чисел i и j выведите i, j в том порядке, в каком они были введены, и после этого выведите максимальную длину цикла для всех целых чисел между i и j, включая сами i и j. Эти три числа должны быть разделены одним пробелом, все три числа в одной строке, и для каждой строки входных данных должна быть одна строка выходных данных."

Пример входных данных:
1 10
100 200
201 210
900 1000

Пример выходных данных:
1 10 20
100 200 125
201 210 89
900 1000 174

Вот, что мне удалось написать.

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int w;
void funcN(int i,int j)
{
    cout<<i<<' '<<j<<' ';
    int l;
    int n;
    int d;
    int t = 0;
        for(l=i;l<=j;l++)
    {
        n=l;
        d=1;
        while(n!=1)
        {
            if(n%2==0)
            {
                n=n/2;
            }
            else
            {
                n=(3*n) + 1;
            }
            d++;
        }
        if(d > t)
        {
            t=d;
            w=t;
        }
    }
    cout<<t<<' ';
};
 
int main()
{
    int i,j;
    FILE *fin, *fout;
 
    fin=fopen("input.txt","r");
    if(fin == NULL || (fout = fopen("output.txt", "w")) == NULL) {
        printf("Error.\n");
        return 1;
    }
    
    fscanf(fin, "%i %i",&i, &j);
    funcN(i,j);
    fprintf(fout, "%i %i %i",i, j, w);
    
    fclose(fin);
    fclose(fout);
 
    _getch();
 
    return 1;
}
Работает программа правильно, но считывает только первую строку из файла. Как сделать так, чтобы она построчно считывала и обрабатывала строки из файла "input.txt", а затем записывала их в output.txt?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.08.2010, 21:53
Ответы с готовыми решениями:

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

Построчное чтение данных из файла
Есть фаил: selulhmb 83 86 77 82 glrdos 54 48 3 35 canryx 15 59 5 26 cdqqri 45 0 66 37 bxdsj 49 62 14 41 cjdevlycv 98 29 50 59 ...

Построчное чтение файла и использование данных в цикле
Здравствуйте, форумчане. Капаюсь (изучаю) в powershell-e и хочу сделать скрипт, который будет пробегать по ip, лежащих в файле,...

6
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
13.08.2010, 22:10
Haze23, Перед этим.

C++
1
2
3
        fscanf(fin, "%i %i",&i, &j);
        funcN(i,j);
        fprintf(fout, "%i %i %i",i, j, w);
Ставите
C++
1
2
3
4
5
6
while(!feof(fin))
{
//После fprintf 
//А еще для удобства после fprintf, но до конца цикла можно написать
   fprintf(fout, "\n");
}
1
0 / 0 / 0
Регистрация: 13.08.2010
Сообщений: 4
13.08.2010, 22:29  [ТС]
Спасибо большое, всё заработало.

Не могли бы вы объяснить, каким образом работает функция feof, если вас не затруднит?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
13.08.2010, 22:32
Haze23, Читает файл пока не встречен конец файла. EOF вроде как равен -1.
0
0 / 0 / 0
Регистрация: 13.08.2010
Сообщений: 4
13.08.2010, 22:37  [ТС]
Lavroff, т.е. сначала программа считывает первые два символа, затем следующие два и так до конца файла? Просто не понятно, как программа "запоминает" сколько чисел уже прочтено.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
13.08.2010, 22:43
Haze23, Она не запоминает. Файл читается посимвольно. while(!feof(f)), затем fscanf мы прочли первые 2 символа, курсор файла двигается вместе с прочтением символов. След итерация, прочли два, курсор сдвинулся еще на два. И т.д. Вроде бы так)
1
0 / 0 / 0
Регистрация: 13.08.2010
Сообщений: 4
13.08.2010, 22:47  [ТС]
Lavroff, спасибо за объяснение, разобрался. Тему можно закрывать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.08.2010, 22:47
Помогаю со студенческими работами здесь

Построчное чтение файла и разбор каждой 6-ой строки для получения и использования определённых данных
Добрый вечер! Необходимо прочитать текстовый файл в котором каждая 6-я строка начинается с TR01, в этой строке данные разделены точкой с...

Чтение и обработка данных с файла
Не могу найти ошибку. Есть файл settint.ini c данными: &amp;chas=1&amp; &amp;uYear=2012&amp; Требуется получить сами значени и добавить их в edit ...

Построчное чтение файла
Здравствуйте. У меня возникла проблема с построчным чтением файла. На форуме так и не нашёл. Суть такая: Объявляется переменная String...

Построчное чтение из файла
Здравствуйте! Нужно считать, к примеру, 5 строку из файла. Также записывать построчно в файл. Помогите пожалуйста)

Построчное чтение файла
Помогите пожалуйста, не могу доделать программу, точнее я её сделала но не так как бы мне хотелось. Вот код программы(прога рабочая) ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru