Файл: Отчет за практическое занятие 2 Тема Обработка данных в массивах Выполнил Студент 1 курса, гр. Ист.docx
Добавлен: 04.12.2023
Просмотров: 64
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»(СПбГУТ)_______________________________________________________________________Факультет Информационных систем и технологийКафедра Безопасности информационных системДисциплина «Технологии программирования»ОТЧЕТза практическое занятие №2Тема: Обработка данных в массивахВыполнил Студент 1 курса, гр. ИСТ_____________ К.М.ПринялДоцент кафедры БИС_____________ Медведев В.А.Санкт-Петербург2022Тема: обработка данных в массивах.Цель: закрепление практических навыков разработки программ с использованием операторов циклов при обработке массивов.Задание: разработать программу, которая определяет, является ли заданный явно массив размерности 9×9 матрицей для квадрата Судоку.Текстпрограммы:#include using namespace std;int A[9][9] ={ {1,2,3,4,5,6,7,8,9}, {4,5,6,7,8,9,1,2,3}, {7,8,9,1,2,3,4,5,6}, {2,3,4,5,6,7,8,9,1}, {6,7,8,9,1,2,3,4,5}, {8,9,1,2,3,4,5,6,7}, {3,4,5,6,7,8,9,1,2}, {5,6,8,9,1,2,3,4,7}, {9,1,2,3,4,5,6,7,8},};int p = 0;int function1(){ int i, j = 0; int m; int y = 0; for (A[i][j]; i < 9; i++) { p = 0; m = 0; for (A[i][m]; m < 9; m++) { p += A[i][m]; } if (p == 45)
{ y += 1; } else { return false; break; } if (y == 9) { return true; } }}int r = 0;int function2(){ int i, j = 0; int m; int y = 0; for (A[i][j]; j < 9; j++) { r = 0; m = 0; for (A[m][j]; m < 9; m++) { r += A[m][j]; } if (r == 45) { y += 1; } else { return false; break; } if (y == 9) { return true; } }}int f3(int i[]){ int y = 0; int u = 0; for (A[i][j]; j < w; j++) { int
m = i; for (A[m][j]; m < x; m++) { u += A[m][j]; } } if (u==45) { y +=1; } if (y == 1) { return true; } else { return false; }}int main(){ if (A[0][0] + A[1][1] != 10) { int a = function1(); int b = function2(); int c = f3(0,0,3,3) + f3(0,3,6,3) + f3(0,6,9,3) + f3(3,0,3,6) + f3(3,3,6,6) + f3(3,6,9,6) + f3(6,0,3,9) + f3(6,3,6,9) + f3(6,6,9,9); if (a + b + c == 11) { cout << "This is sudoku square"; } else { cout << "Not sudoku square"; } } else { cout << "Not sudoku square"; }}Лучше так: взяла массив 9x9, прогнала его по одной функции, взяла массив 3x3, развернула его в одну строку, прогнала по этой же функции.Результаты работы программы:Ниже (Рисунок №1 и Рисунок №2) представлены результаты выполненной программы в окне консоли.
Рисунок №2 Рисунок №1 Рисунок №1 Рисунок №2Вывод: в результате выполнения данной практической работы была написана программа, которая определяет, является ли заданный массив матрицей для квадрата Судоку, на языке программирования C++. Для решения поставленной задачи каждые строки, столбцы и квадраты (3x3) были проверены на суммы (=45) с помощью функций function1, function2 и f3. Если в какой-то строке/столбце/квадрате сумма не равна 45, значит, числа повторяются, и это не Судоку. Также есть проверка на равность первых двух элементов строки пятеркам, чтобы избежать ситуаций, когда весь массив Судоку будет заполнен числами 5. С помощью оператора цикла for был реализован ряд задач: перебор проверяемых чисел, обращение к определенному элементу массива. Также дополнялся оператор цикла условным оператором if, break и переменной типа bool, c их помощью осуществлялись прекращение работы цикла при нахождение повторений в «Судоку», вывод результата.
{ y += 1; } else { return false; break; } if (y == 9) { return true; } }}int r = 0;int function2(){ int i, j = 0; int m; int y = 0; for (A[i][j]; j < 9; j++) { r = 0; m = 0; for (A[m][j]; m < 9; m++) { r += A[m][j]; } if (r == 45) { y += 1; } else { return false; break; } if (y == 9) { return true; } }}int f3(int i[]){ int y = 0; int u = 0; for (A[i][j]; j < w; j++) { int
m = i; for (A[m][j]; m < x; m++) { u += A[m][j]; } } if (u==45) { y +=1; } if (y == 1) { return true; } else { return false; }}int main(){ if (A[0][0] + A[1][1] != 10) { int a = function1(); int b = function2(); int c = f3(0,0,3,3) + f3(0,3,6,3) + f3(0,6,9,3) + f3(3,0,3,6) + f3(3,3,6,6) + f3(3,6,9,6) + f3(6,0,3,9) + f3(6,3,6,9) + f3(6,6,9,9); if (a + b + c == 11) { cout << "This is sudoku square"; } else { cout << "Not sudoku square"; } } else { cout << "Not sudoku square"; }}Лучше так: взяла массив 9x9, прогнала его по одной функции, взяла массив 3x3, развернула его в одну строку, прогнала по этой же функции.Результаты работы программы:Ниже (Рисунок №1 и Рисунок №2) представлены результаты выполненной программы в окне консоли.
Рисунок №2 Рисунок №1 Рисунок №1 Рисунок №2Вывод: в результате выполнения данной практической работы была написана программа, которая определяет, является ли заданный массив матрицей для квадрата Судоку, на языке программирования C++. Для решения поставленной задачи каждые строки, столбцы и квадраты (3x3) были проверены на суммы (=45) с помощью функций function1, function2 и f3. Если в какой-то строке/столбце/квадрате сумма не равна 45, значит, числа повторяются, и это не Судоку. Также есть проверка на равность первых двух элементов строки пятеркам, чтобы избежать ситуаций, когда весь массив Судоку будет заполнен числами 5. С помощью оператора цикла for был реализован ряд задач: перебор проверяемых чисел, обращение к определенному элементу массива. Также дополнялся оператор цикла условным оператором if, break и переменной типа bool, c их помощью осуществлялись прекращение работы цикла при нахождение повторений в «Судоку», вывод результата.