Добавил:
Лабы/курсовые по программированию (С++/Verilog HDL), Теория и Практика Помехоустойчивого Кодирования Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1сем Дагаев / ЛР8 / Отчет

.docx
Скачиваний:
17
Добавлен:
09.03.2022
Размер:
105.12 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Факультет инфокоммуникационных Сетей и систем (иксс)

кафедра программной инженерии и вычислительной техники

(пи и вт)

Дисциплина: «Программирование»

Лабораторная работа №8.

Тема: «Обработка двумерных массивов»

вариант №20

Выполнил: Студент группы ИКВТ-03

Ситников Д.Г.

Подпись____________

Принял: к.т.н, доцент кафедры ПИиВТ

Дагаев А.В.

Подпись____________

«_____»________ 2020

Санкт-Петербург

2020г

Постановка задачи

Вычислить произведение элементов для каждой строки. Поменять местами строки с максимальным и минимальным значением произведения. N <= 5, M <= 10

Разработка алгоритма

Программа состоит из основной программы - функции main() и файла с тремя функциями, распределенными по выполнению следующих операций:

1) Ввод исходного двумерного массива;

2) Формирование конечного массива с замененными строками;

3) Вывод результатов вычислений.

Рис.1 Три функции: ввод, изменение, вывод.

Рис.2 Основная программа.

В программе должно быть предусмотрен ввод исходных данных с клавиатуры; формирование новых массивов благодаря условному отбору; вывод сформированных последовательностей.

Таблица идентификаторов

Табл.1. Таблица идентификаторов

N

Обозначения в задаче

Идентификатор

Назначение

1

A[]

A

Исходные данные

2

-

-

Результаты вычислений

3

i

i

Операторы инкремента

4

j

j

5

maxP

maxP

Промежуточные величины

6

minP

minP

7

Imax

imax

8

Imin

imin

9

P

P

10

Perest

Perest

Описание программы

Программа разработана при помощи среды разработки Microsoft Visual Studio, в которой предоставлены все необходимые библиотеки, заголовки, необходимые компилятором C и C++ для работы в системе Windows, написана на языке C++. Программа собрана при помощи системы сборки компилятор C++ Visual Studio includes a command-line C, набора инструментов .NET Framework 4.5, тестировалась на Windows 10. Были подключены библиотеки iostream, windows.h; были использованы функции cout, cin, system. Был подключен файл Function.cpp.

Результаты работы программы

Далее предоставлены результаты выполнения программы.

Рис.3 Результат выполнения программы.

Контрольный расчет

Для тестирования программы выбираем контрольный набор исходных данных: N = 3, M = 3, Массив:

Рис.4 Исходный массив.

Расчет, выполненный вручную, дал следующие результаты:

Рис.5 Результат массива, с поменянными строками.

Таблица вычислений

Табл.2. Таблица вычислений

Назначение набора данных

Набор данных

Результаты вычислений

N

M

Двумерный массив

Ручных

Машинных

Контрольный набор данных (тест)

3

3

1 2 3

5 8 9

2 8 9

Рабочий набор данных

5

3

1 2 3

2 3 4

3 4 5

4 5 6

9 4 2

Текст программы на C++

Function.cpp:

#include <windows.h>

#include <iostream>

#define N 5

#define M 3

using namespace std;

inline void Vvod(double A[N][M]) {

cout << "Введите двумерный массив:" << endl;

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

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

cin >> A[i][j];

}

}

cout << "\n\n";

}

inline void Neww(double A[N][M]) {

double maxP = -9999, minP = 9999, P=1, Perest;

int imin, imax;

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

for (int j = 0; j < M; j++)

P *= A[i][j];

if (P > maxP) {

maxP = P;

imax = i;

}

if (P < minP) {

minP = P;

imin = i;

}

P = 1;

}

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

Perest = A[imin][j];

A[imin][j] = A[imax][j];

A[imax][j] = Perest;

}

}

inline void Vivod(double A[N][M]) {

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

for (int j = 0; j < M; j++)

cout << A[i][j] << " ";

cout << endl;

}

}

Source.cpp:

#include "Function.cpp"

void main() {

setlocale(LC_ALL, "RUS");

double A[N][M];

system("cls");

Vvod(A);

Neww(A);

Vivod(A);

system("pause");

}

Выводы

В ходе выполнения работы были получены следующие результаты:

1. Изучены алгоритмы написания функций в сторонних файлах;

2. Программа разработана для заданной обработки двумерного массива на языке C++;

3. Использование передачи в качестве аргумента двумерных массивов.

Соседние файлы в папке ЛР8