Файл: Отчет за практическое занятие 2 Тема Обработка данных в массивах Выполнил Студент 1 курса, гр. Ист.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 04.12.2023

Просмотров: 20

Скачиваний: 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 их помощью осуществлялись прекращение работы цикла при нахождение повторений в «Судоку», вывод результата.