
Язык программирования С++ Задание : Выполнить парное сравнение двух бинарных файлов, содержащих
массивы из 20 элементов. Большие из пар элементов записываются в конец третьего файла. Меньше - сводятся в квадрат, и выводятся на экран

Ответы на вопрос

Объяснение: ничего не понятно про "наибольшие пары" и про сведение "наименьших" в квадрат, потому в 3 файл я отсеиваю наибольший элемент из пары, а в качестве сведения - я сортирую выводимые пары по 8 пар в строке, с пробелом меж ними (крч как в хекс-редакторах)
# include <iostream>
# include <fstream>
// количество элементов
const size_t _count = 20;
int main() {
// открываем и читаем 1 файл
std::ifstream file1("file1.bin", std::ios_base::binary);
char* buf1 = new char[_count];
file1.read(buf1, _count);
// открываем и читаем 2 файл
std::ifstream file2("file2.bin", std::ios_base::binary);
char* buf2 = new char[_count];
file2.read(buf2, _count);
// открываем 3 файл
std::ofstream file3("file3.bin", std::ios_base::binary);
char* buf3 = new char[_count];
// записываем наибольшее из пары в буффер для 3 файла
for (int i = 0; i < _count; i++) {
// перенос строки
if (i % 8 == 0) std::cout << " ";
if (i % 16 == 0) std::cout << std::endl;
if (buf1[i] > buf2[i]) {
buf3[i] = buf1[i];
std::cout << std::hex << std::uppercase << short(buf2[i]) << " ";
}
else {
buf3[i] = buf2[i];
std::cout << std::hex << std::uppercase << short(buf1[i]) << " ";
}
}
file3.write(buf3, _count);
};



Для выполнения данной задачи вам потребуется написать программу на языке C++, которая считает данные из двух бинарных файлов, выполняет необходимые операции и записывает результаты в третий файл. Вот пример такой программы:
cpp#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int ARRAY_SIZE = 20;
int main() {
ifstream file1("file1.bin", ios::binary);
ifstream file2("file2.bin", ios::binary);
ofstream file3("file3.bin", ios::binary);
if (!file1 || !file2 || !file3) {
cerr << "Не удалось открыть один из файлов!" << endl;
return 1;
}
vector<int> array1(ARRAY_SIZE);
vector<int> array2(ARRAY_SIZE);
file1.read(reinterpret_cast<char*>(array1.data()), sizeof(int) * ARRAY_SIZE);
file2.read(reinterpret_cast<char*>(array2.data()), sizeof(int) * ARRAY_SIZE);
if (!file1 || !file2) {
cerr << "Ошибка чтения из файлов!" << endl;
return 1;
}
vector<int> result(ARRAY_SIZE);
for (int i = 0; i < ARRAY_SIZE; ++i) {
if (array1[i] > array2[i]) {
result[i] = array1[i];
} else {
result[i] = array1[i] * array1[i];
}
}
file3.write(reinterpret_cast<const char*>(result.data()), sizeof(int) * ARRAY_SIZE);
if (!file3) {
cerr << "Ошибка записи в файл!" << endl;
return 1;
}
file1.close();
file2.close();
file3.close();
cout << "Результаты записаны в файл3.bin и выведены на экран:" << endl;
for (int i = 0; i < ARRAY_SIZE; ++i) {
cout << result[i] << " ";
}
cout << endl;
return 0;
}
В этой программе мы сначала открываем два входных бинарных файла (file1.bin
и file2.bin
) и один выходной бинарный файл (file3.bin
). Затем мы считываем данные из первых двух файлов в соответствующие массивы, выполняем требуемые операции и записываем результаты в третий файл. Также результаты выводятся на экран.
Не забудьте заменить file1.bin
и file2.bin
на фактические имена ваших входных файлов и убедитесь, что эти файлы существуют в рабочем каталоге программы.


Похожие вопросы







Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili