/
AirLexa
/
03
Обзор
Документация
Войти
/
AirLexa
/
03
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lesson_08/Task_1/Task_1.cpp
59 строк
2 KB
AirLexa
создал Lesson_08/Task_1/Task_1.cpp
27 янв 2026, 14:19
Верифицирован
27 янв 2026, 14:19
a95b895
Код
Авторство
О чём код?
#include <iostream> #include <fstream> #include <string> #include <windows.h> int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); std::ifstream file("input.txt"); // файл инициализации в папке с исполняемым файлом if (!file.is_open()) // проверка на доступ к файлу { std::cout << "Ошибка открытия файла: input.txt!" << std::endl; return -1; } int size = 0; file >> size; // первая строчка - это размер массива if (size < 2) // проверка на корректность значений размера { std::cout << "Ошибка! Количество вершин графа должно быть 2 или больше!" << std::endl; return -2; } // двухмерный массив bool** arr = new bool* [size]; // пользуемся тем, что 0 = false, !0 = true for (int i = 0; i < size; i++) { arr[i] = new bool[size](); for (int j = 0; j < size; j++) // заполняем массив данными file >> arr[i][j]; } file.close(); // файл больше не понадобится std::cout << "Исходная матрица смежности:\n"; std::string* res = new std::string[size](); // тут будут строки результатов по вершинам for (int i = 0; i < size; i++) // выводим массив на консоль { for (int j = 0; j < size; j++) { std::cout << arr[i][j] << " "; // значение на экран if (arr[i][j]) res[i] += " " + std::to_string(j + 1); // и результат в строку } if (res[i].length() < 1) res[i] += " нет"; // если нет путей std::cout << std::endl; } std::cout << "Текстовый вид орграфа:\n"; for (int i = 0; i < size; i++) // выводим массив результатов на консоль std::cout << (i + 1) << ":" << res[i] << std::endl; for (int i = 0; i < size; i++) // освобождаем память delete[] arr[i]; delete[] arr; delete[] res; return 0; }