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

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

25.02.2022, 21:15. Показов 1327. Ответов 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 / 1922 / 763
Регистрация: 27.07.2012
Сообщений: 5,565
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 / 1922 / 763
Регистрация: 27.07.2012
Сообщений: 5,565
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 / 1922 / 763
Регистрация: 27.07.2012
Сообщений: 5,565
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 / 1922 / 763
Регистрация: 27.07.2012
Сообщений: 5,565
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 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru