Консольные программы — это наследие старых операционных систем типа MS DOS, работавших в текстовом режиме. Полной аналогии здесь нет, но создатели систем разработки пытаются сделать всё, чтобы было максимальное сходство. Для консольной программы операционная система или система разработки предоставляет специальное окно (обычно — черного цвета), в котором виден ход выполнения программы.
Оконное приложение всегда имеет своё собственное окно (обычно его называют главным окном приложения). Кроме главного окна в приложении могут использоваться множество других окон.
При разработке оконного приложения используются различные элементы управления: командные кнопки, окна ввода, надписи, меню и т.д.
#include <iostream>
#include <fstream> // Для работы с файлами
#include <cstdlib> // Для функции exit()
using namespace std;
int main()
{
// Открываем файл для чтения
ifstream input_file("input.txt");
if (!input_file.is_open()) {
// Если файл не удалось открыть, выводим сообщение об ошибке и завершаем программу
cerr << "Error: unable to open input file" << endl;
exit(1);
}
// Считываем количество строк и столбцов
int n, m;
input_file >> n >> m;
// Создаем двумерный динамический массив
int** array = new int*[n];
for (int i = 0; i < n; i++) {
array[i] = new int[m];
}
// Считываем значения элементов из файла
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
input_file >> array[i][j];
}
}
// Создаем одномерный динамический массив
int* new_array = new int[n * m];
// Копируем значения элементов из двумерного массива в одномерный
int k = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
new_array[k++] = array[i][j];
}
}
// Закрываем файл
input_file.close();
// Открываем файл для записи
ofstream output_file("output.txt");
if (!output_file.is_open()) {
// Если файл не удалось открыть, выводим сообщение об ошибке и завершаем программу
cerr << "Error: unable to open output file" << endl;
exit(1);
}
// Выводим значения элементов одномерного массива в файл
for (int i = 0; i < n * m; i++) {
output_file << new_array[i] << " ";
}
output_file << endl;
// Закрываем файл
output_file.close();
// Освобождаем выделенную память
for (int i = 0; i < n; i++) {
delete[] array[i];
}
delete[] array;
delete[] new_array;
return 0;
}
Не забудьте также проверить, что файлы input.txt и output.txt существуют и имеют нужные разрешения для чтения/записи.