Скачиваний:
0
Добавлен:
06.05.2023
Размер:
205.07 Кб
Скачать

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ ГАГАРИНА Ю.А.»

Институт Прикладных информационных технологий и коммуникаций

Специальность Информатика и вычислительная техника

Кафедра Информационно - коммуникационные системы и программная

инженерия

Контрольная работа

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

на тему

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

Оценка работы_____

Дата защиты_______

Подпись __________

Саратов – 2022

Цель: изучение принципов обработки одномерных и двумерных массивов данных, разработка алгоритмов и программ обработки массивов.

Вариант 2.

Задание: Разработать алгоритм и программу. Дана матрица B размерностью n x m (2 <= n, m <= 50 – вводятся пользователем). Элементы матрицы Bij являются вещественными числами и принимают значения в диапазоне [0, 200]. Заполнение матрицы осуществляется в соответствии с выбором пользователя:

  • заполнение случайными числами в установленном диапазоне;

  • пользовательский ввод с клавиатуры.

Определить максимальные и минимальные элементы матрицы и индексы столбцов и строк, на пересечении которых они находятся.

Описание алгоритма работы программы.

1. Пользователю предлагается ввести числа для определения размерности матрицы B (n x m). Проверка на удовлетворение условию задания (2 <= n, m <= 50), повторный запрос при необходимости.

2. Создание вещественного динамического массива B[n][m].

3. Заполнение массива B вещественными числами в диапазоне [0, 200] с проверкой по типу и диапазону, в соответствии с выбором пользователя:

- Случайными числами

- Пользовательский ввод.

Вывод на экран полученной матрицы.

4. Цикл поиска максимального элемента массива B путем присвоения исходной переменной значения первого элемента массива и сравнения этой переменной со следующими элементами массива. Присвоение индекса строки и столбца максимального элемента.

4. Цикл поиска минимального элемента массива B путем присвоения исходной переменной значения первого элемента массива и сравнения этой переменной со следующими элементами массива. Присвоение индекса строки и столбца минимального элемента.

5. Вывод на экран значение максимального и минимального элементов, а также индексы столбцов и строк, на пересечении которых они находятся.

Блок-схема алгоритма.

Текст программы:

#include <iostream>

#include <cstdlib>

#include <conio.h>

#include <ctime>

using namespace std;

int main()

{

setlocale(LC_ALL, "ru");

cout << " Контрольная работа <<Обработка массивов>>" << endl << " Ввод размерности матрицы B (nxm):" << endl;

int n, m, i, j, imax, jmax, imin, jmin;

float max, min;

char m_z;

srand(time(NULL));

do //выбор количества строк массива с проверкой по допустимому диапазону

{

cin.clear();

cin.seekg(0);

cout << " Введите количество строк матрицы (2 до 50): ";

cin >> n;

} while ((n < 2) || (n > 50) || (!cin.good()));

do //выбор количества столбцов массива с проверкой допустимому диапазону

{

cin.clear();

cin.seekg(0);

cout << " Введите количество столбцов матрицы (1 до 50): ";

cin >> m;

} while ((m < 1) || (m > 50) || (!cin.good()));

float **B = new float*[n]; //создание динамического массива B[n][m]

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

B[j] = new float[m];

do //выбор метода заполнения массива

{

cout << " Выберите метод заполнения массива: 1 - Случайный, 2 - Вручную: " << endl;

m_z = _getch();

} while ((m_z != '1') && (m_z != '2'));

switch (m_z) //варианты методов заполнения массива

{

case'1':

{

cout << " 'Случайное' заполнение массива:" << endl; //автоматическое заполнение массива

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

{

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

{

B[i][j] = (rand() % (200 * 1000)) / 1000.0;

}

}

break;

}

case'2':

{

cout << " Заполнение массива в ручную. Введите вещественные числа [0, 200]:" << endl; // заполнение массива в ручную

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

{

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

{

do

{

cin.clear();

cin.seekg(0);

cout << "B[" << i + 1 << "][" << j + 1 << "]";

cin >> B[i][j];

} while ((B[i][j] < 0) || (B[i][j] > 200) || (!cin.good()));

}

}

break;

}

}

cout << " Исходная матрица:" << endl; //вывод в консоль исходной матрицы

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

{

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

{

cout << B[i][j] << "\t";

}

cout << endl;

}

max = B[0][0]; //поиск максимального элемента массива

imax = 0;

jmax = 0;

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

{

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

{

if (max <= B[i][j])

{

max = B[i][j];

imax = i;

jmax = j;

}

}

}

min = B[0][0]; //поиск минимального элемента массива

imin = 0;

jmin = 0;

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

{

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

{

if (B[i][j] <= min)

{

min = B[i][j];

imin = i;

jmin = j;

}

}

}

cout << " Максимальный элемент " << max << " Строка: " << imax + 1 << " Столбец: " << jmax + 1 << endl << " Минимальный элемент " << min << " Строка: " << imin + 1 << " Столбец: " << jmin + 1 << endl; //вывод результатов

cout << " Для выхода нажмите любую клавишу" << endl;

system("pause>nul");

return 0;

}

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

Пример 1:

Пример 2:

Пример 3:

Вывод:

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

ЛИТЕРАТУРА

  1. Синицын, С. В. Программирование на языке высокого уровня: учебник / С. В. Синицын, А. С. Михайлов, О. И. Хлытчиев. - М.: ИЦ "Академия", 2010. - 400 с.

  2. Маслянкин, В. И. Визуальное программирование: методический сборник / Маслянкин В.И. - Москва: Российский новый университет, 2010. - 40 с.

  3. Шишкин, А. Д. Практикум «Программирование на языке Си» /Шишкин А. Д. - Санкт-Петербург: Российский государственный гидрометеорологический университет, 2013. - 52 с.

  4. Подбельский, В. В. Язык Си#. Базовый курс [Электронный ресурс]: учебное пособие / Подбельский В. В. - Москва: Финансы и статистика, 2011. - 384 с.

  5. Павловская, Т. А. C/C++. Структурное программирование: практикум / Т. А. Павловская, Ю. А. Щупак. - СПб. [и др.]: Питер, 2007. (10 экз. НТБ СГТУ)

Соседние файлы в предмете Объектно ориентированное программирование