Вопрос задан 02.10.2023 в 00:49. Предмет Информатика. Спрашивает Запотічна Яринка.

Язык программирования С++ Задание : Выполнить парное сравнение двух бинарных файлов, содержащих

массивы из 20 элементов. Большие из пар элементов записываются в конец третьего файла. Меньше - сводятся в квадрат, и выводятся на экран
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Солдатенко Саша.

Объяснение: ничего не понятно про "наибольшие пары" и про сведение "наименьших" в квадрат, потому в 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);

};

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для выполнения данной задачи вам потребуется написать программу на языке 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 на фактические имена ваших входных файлов и убедитесь, что эти файлы существуют в рабочем каталоге программы.

0 0

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

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос