Главная страница
Навигация по странице:

  • Преподаватель

  • Половинко_ЛР_5. Обработка многомерных массивов


    Скачать 114.13 Kb.
    НазваниеОбработка многомерных массивов
    Дата06.02.2022
    Размер114.13 Kb.
    Формат файлаdocx
    Имя файлаПоловинко_ЛР_5.docx
    ТипДокументы
    #353105



    МИНОБРНАУКИ РОССИИ

    федеральное государственное бюджетное образовательное учреждение высшего образования

    «Самарский государственный технический университет»

    (ФГБОУ ВО «СамГТУ»)


    О Т Ч Е Т

    о выполнении лабораторной работы 5

    по дисциплине «Языкииметодыпрограммирования»



    по теме

    ОБРАБОТКА МНОГОМЕРНЫХ МАССИВОВ





    Преподаватель

    к.т.н., доцент







    Е.А. Халикова




    (должность)

    (подпись)

    (дата)

    (инициалы, фамилия)

    Студент










    И.С. Половинко




    (группа)

    (подпись)

    (дата)

    (инициалы, фамилия)

    Самара 2021 г.

    Цель и задачи работы


    Целью работы является получение обучающимися навыков работы со средствами обработки двумерных массивов в языке С++.

    Задачами работы являются:

     написание программы на языке С++ с использованием двумерных массивов;

     тестирование работоспособности программы для различных исходных данных. Задание 1. Дана матрица размером M × N. Определить k – количество особых элементов массива, считая его элемент особым, если он больше суммы остальных элементов его столбца.

    Графическая схема алгоритма.


    Программный код:

    Для статического массива:


    #include

    #include

    #include

    #include

    #include

    using namespace std;
    int main()

    {

    int i, j, n;

    int k = 0;

    const int L = 6, H = 3;

    int Arr[H][L];
    int summ = 0;

    for (i = 0; i < H; i++)

    {

    for (j = 0; j < L; j++)

    {

    Arr[i][j] = rand() % 51;

    }

    }

    for (i = 0; i < H; i++)

    {

    for (j = 0; j < L; j++)

    {

    cout << setw(5) << Arr[i][j];

    }

    cout << endl;

    }

    for (j = 0; j < L; j++)

    {

    for (i = 0; i < H; i++)

    {

    summ += Arr[i][j];

    }

    for (i = 0; i < H; i++)

    {

    if (Arr[i][j] > summ - Arr[i][j])

    {

    k += 1;

    }

    }

    summ = 0;

    }

    if (k == 0)

    {

    cout << "There was no such thing as special elements" << endl;

    }

    else

    {

    cout << "Amount of special elements = " << k << endl;

    }

    return 0;

    }

    Для одномерного динамического массива:

    #include

    #include
    using namespace std;
    int main()

    {

    setlocale(0, "");

    srand(time(NULL));

    int m, n;

    cout << "Enter M: "; cin >> m;

    cout << "Enter N: "; cin >> n;

    cout << endl;

    int* mas = new int[m * n];

    int cnt = 0, sum = 0;

    cout << "Array: " << endl;

    for (int i = 0; i < n; i++) {

    for (int j = 0; j < m; j++) {

    *(mas + (i * m + j * n)) = rand() % 20 - 5;

    cout << setw(5) << *(mas + (i * m + j * n)) << " ";

    }

    cout << endl;

    }

    for (int i = 0; i < m; i++) {

    for (int j = 0; j < n; j++) {

    sum = sum + *(mas + (j * m + i * n));

    }

    for (int a = 0; a < n; a++) {

    if (*(mas + (a * m + i * n)) > sum - *(mas + (a * m + i * n))) cnt++;

    }

    sum = 0;

    }

    if (cnt == 0)

    cout << "There was no such thing as special elements";

    else

    cout << "There are " << cnt << " special elements.";

    cout << endl;

    delete[] mas;

    return 0;

    }

    Для двумерного динамического массива:

    #include

    #include

    using namespace std;

    int main()

    {

    setlocale(0, "");

    srand(time(NULL));

    int m, n, cnt = 0, sum;

    cout << "Enter M: "; cin >> m;

    cout << "Enter N: "; cin >> n; cout << endl;

    int** mas = new int* [m];

    cout << "Array: " << endl;

    for (int i = 0; i < m; i++) {

    *(mas + i) = new int[n];

    for (int j = 0; j < n; j++) {

    mas[i][j] = rand() % 20 - 5;

    cout << setw(5) << mas[i][j] << " ";

    }

    cout << endl;

    }

    for (int i = 0; i < m; i++) {

    sum = 0;

    for (int j = 0; j < n; j++) {

    sum += mas[j][i];

    }

    for (int a = 0; a < n; a++) {

    if (mas[a][i] > sum - mas[a][i]) cnt++;

    }

    }

    if (cnt == 0) cout << "There was no such thing as special elements";

    else cout << "There are " << cnt << " special elements in array.";

    cout << endl;

    for (int i = 0; i < m; i++) {

    delete[] * (mas + i);

    }

    delete[] mas;

    return 0;

    }

    Пример работы программы

    Для статического массива:





    Вывод.


    В ходе данной лабораторной работы я научился работать со средствами обработки двумерных массивов на языке C++, а также писать программы, работающие с двумерными массивами и их тестированию.


    написать администратору сайта