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

Создать третий файл из элементов двух данных файлов по принципу

25.02.2022, 21:15. Показов 1303. Ответов 9

Студворк — интернет-сервис помощи студентам
Даны два файла с числами. Получить новый файл, в котором на четных местах будут стоять компоненты, которые стоят на четных местах в первом файле, а на нечетных компоненты, которые стоят на нечетных во втором (количество компонентов в исходных файлах одинаковое)

Я написал шаблон я ввода-вывода, но не знаю как написать основную часть программы:
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
    ifstream in1 ("inp1.txt");
    ifstream in2 ("inp2.txt");
    ofstream out ("out.txt");
    if (!in1 && !in2)
    {
        cout << "File not found";
    }
    else
    {
        string s1, s2;
        while (!in1.eof())
        {
            ...
        }
    }
    in1.close();
    in2.close();
    return 0;
}
Пожалуйста, помогите!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.02.2022, 21:15
Ответы с готовыми решениями:

Создать третий файл из компонент заданных двух файлов
Даны два файла с числами. Получить новый файл, в котором на четных местах будут стоять компоненты, которые стоят на четных местах в...

Ошибки.Создать третий файл, состоящий двух файлов
Есть два файла. Создать третий файл, состоящий двух файлов и подсчитать в нем количество символов. Program task3; Type sim=file of...

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

9
2393 / 1914 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.02.2022, 21:47
C++
1
2
3
4
5
6
7
        while (!in1.eof())
        {
            int x1, x2, y1, y2;
            in1 >> x1 >> x2;
            in2 >> y1 >> y2;
            out << y1 << x2;
        }
1
0 / 0 / 0
Регистрация: 25.02.2022
Сообщений: 35
25.02.2022, 22:06  [ТС]
Спасибо, только последнее подходяще число из первого файла выводится 2 раза. Как это исправить? То есть inp1: 12345; inp2: 67890; out: 628404 (последняя четвёрка лишняя)
0
2393 / 1914 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.02.2022, 22:24
Цитата Сообщение от goaty Посмотреть сообщение
Как это исправить?
Значит, считывать по одному числу, потом проверять на конец файла и (если не конец) считывать ещё по одному.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
25.02.2022, 22:45
Цитата Сообщение от goaty Посмотреть сообщение
Как это исправить?
Или организовать чтение более корректно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    ifstream in1("in1.txt"), in2("in2.txt");
    ofstream out("out.txt");
    int odd, even;
    bool flag = true;
    while(in1 >> even && in2>>odd){
        flag ? out << odd << ' ' : out << even << ' ';
        flag = !flag;
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 25.02.2022
Сообщений: 35
26.02.2022, 12:13  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
Значит, считывать по одному числу, потом проверять на конец файла и (если не конец) считывать ещё по одному.
А можете, пожалуйста, написать эту часть кода?
0
2393 / 1914 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
26.02.2022, 12:16
Цитата Сообщение от goaty Посмотреть сообщение
А можете, пожалуйста, написать эту часть кода?
Выше вам дали нормальный пример.
0
0 / 0 / 0
Регистрация: 25.02.2022
Сообщений: 35
26.02.2022, 12:37  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
Выше вам дали нормальный пример.
Вот что описали именно вы мне куда понятнее и проще. Я попробовал сделать это:
C++
1
2
3
4
5
6
7
8
9
10
11
while (!in1.eof() && !in2.eof())
        {
            int x1, x2, y1, y2;
            in1 >> x1 >> x2;
            in2 >> y1 >> y2;
            out << y1 << endl;
            if ((c % 2 == 0) && !in1.eof())
            {
                out << x2 << endl;
            }
        }
Программа работает корректно если в файлах нечётное число строк. Но если их будет чётное количество, то теперь теряется последний символ: inp1: 1 2 3 4 5 6; inp2: 7 8 9 10 11 12; out: 7 2 9 4 11 (последней 6 из первого файла не хватает)
0
2393 / 1914 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
26.02.2022, 13:02
Лучший ответ Сообщение было отмечено goaty как решение

Решение

Цитата Сообщение от goaty Посмотреть сообщение
(c % 2 == 0)
Это что и зачем?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
while (!in1.eof() && !in2.eof())
        {
            int x1, x2, y1, y2;
            in1 >> x1;// >> x2;
            in2 >> y1;// >> y2;
            out << y1 << endl;
            if (!in1.eof() && !in2.eof())
            {
                in1 >> x2;
                in2 >> y2;
                out << x2 << endl;
            }
        }
1
0 / 0 / 0
Регистрация: 25.02.2022
Сообщений: 35
26.02.2022, 13:06  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
Сообщение от goaty
(c % 2 == 0)
Это что и зачем?
Это я пытался организовать счётчик, который бы считал число строк в файле и если их четное количество, то он бы не применял эту проверку. Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.02.2022, 13:06
Помогаю со студенческими работами здесь

Создать третий массив из элементов двух данных
Подскажите, пожалуйста, как сформировать массив С между А и В #include &quot;stdafx.h&quot; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; ...

Для двух файлов, включающих по 21 элементу найти парные разницы элементов и записать в третий файл
Помогите пожалуйста с кодом. Часть я сделал (но не уверен что правильно),а с последней частью не могу разобраться (там где именно...

Для двух файлов, включающих по 21 элементу найти парные разницы элементов и записать в третий файл
Помогите пожалуйста. Часть кода я сделал, но с последней частью трудно (там где именно вычитание) Код: #include &quot;stdafx.h&quot; ...

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

Выполнить слияние двух рассортированных текстовых файлов в третий упорядоченный файл. Сортировок не использовать. Дополнительных массивов и файлов не
Выполнить слияние двух рассортированных текстовых файлов в третий упорядоченный файл. Сортировок не использовать. Дополнительных массивов и...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 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 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru