Пример программы на обработку двумерного массива (матрицы)
//Программа находит строку введенного с клавиатуры двумерного массива,
//содержащую максимальную сумму значений элементов
#include<iostream.h>
#include <locale.h>
const int RAZ = 10 ; //максимальный размер для каждого измерения массива
typedef int telem ; //определение типа элементов массива
typedef telem tmatr[RAZ][RAZ] ; //определение типа массива
void inputmatr(tmatr a, int &str, int &sto) ;
telem poisk_str(tmatr a, int str, int sto, int &imax) ;
int main()
{tmatr a ; //двумерный массив
int imax ; //номер строки с максимальной суммой значений элементов
telem max ; //максимальная сумма значений элементов
int str ; //число строк матрицы
int sto ; //число столбцов матрицы
setlocale(LC_ALL,"Russian") ;
inputmatr(a, str, sto) ;
max = poisk_str(a, str, sto, imax) ;
cout << " Максимальная сумма=" << max << " значений элементов строки\n" ;
cout << " содержится в " << imax << "-й строке исходного массива\n" ;
cout << " Для завершения нажмите <Enter>" ;
return 0 ;
}
void inputmatr(tmatr a, int &str, int &sto)
{cout << " Введите число строк в массиве <= " << RAZ << " " ;
cin >> str ;
cout << " Введите число столбцов в массиве <= " << RAZ << " " ;
cin >> sto ;
cout << " Введите построчно через пробел значения элементов\n" ;
cout << " двумерного массива размера " << str << "x" << sto ;
cout << "\n После ввода каждой строки нажимайте <Enter>\n" ;
for(int i = 0 ; i < str ; i++)
for(int j = 0 ; j < sto ; j++)
cin >> a[i][j] ;
}
telem poisk_str(tmatr a, int str, int sto, int &imax)
|
|
{telem max , //максимальная сумма элементов строки
pr ; //текущая сумма
imax = 0 ; //предполагаем, что максимальная сумма элементов в 0-ой строке
max = 0 ;
for(int j = 0 ; j < sto ; j++)
max += a[0][j] ;
for(int i = 1 ; i < str ; i++)
{pr = 0 ;
for(j = 0 ; j < sto ; j++)
pr += a[i][j] ;
if(max < pr)
{imax = i ;
max = pr ;
}
}
return max ;
}
Лабораторная работа №9
Динамические массивы
Цель лабораторной работы: изучение структурной организации динамических массивов и способов доступа к их элементам с использованием указателей; совершенствование навыков процедурного программирования на языке C/C++ при решении задач обработки динамических массивов.
Задание на программирование: используя технологию процедурного программирования, разработать программу обработки одномерных и двумерных (матриц) динамических массивов в соответствии с индивидуальным заданием.
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание и выполнить постановку задачи: сформулировать условие, определить входные и выходные данные, их ограничения.
2) Разработать математическую модель: описать с помощью формул и рисунков структуру массивов и процесс их преобразования.
3) Построить схему алгоритма решения задачи.
|
|
4) Составить программу на языке C/C++.
5) Входные данные на этапах тестирования и демонстрации работы преподавателю должны задаваться либо с использованием специально подобранных арифметических формул, либо вводиться с клавиатуры по запросу. Датчики псевдослучайных чисел использовать запрещается.
Выходные данные должны выводиться на экран с пояснениями.
6) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов, в том числе с ошибочными входными данными. Входные и выходные массивы должны выводиться в одном и том же формате.
7) Использовать стандартные потоковые объекты ввода/вывода cin и cout.
8) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, текст программы, контрольные примеры.
Варианты индивидуальных заданий
1 2
8 3
7 4
6 5
1.
1) Дан массив b0, b1, b2,…, bn-1. Определить сумму значений всех его положительных элементов и количество элементов с отрицательными значениями, лежащих между элементом с максимальным по абсолютной величине значением и первым после него элементом с положительным значением.
|
|
2) В заданной квадратной матрице размера 2n*2n найти среднее арифметическое значений элементов области 1 (см. рисунок).
2.
1) Дан массив a0, a1, a2,…, an-1. Определить произведение положительных значений его элементов, лежащих между максимальным элементом среди элементов с отрицательным значением и минимальным элементом среди элементов с положительным значением.
2) В заданной квадратной матрице размера 2n*2n найти среднее геометрическое значений элементов области 2 (см. рисунок).
3.
1) Дан массив x0, x1, x2,…, xn-1. Определить сумму значений всех его элементов, лежащих между минимальным элементом среди элементов с положительным значением и первым после него элементом с отрицательным значением.
2) В заданной квадратной матрице размера 2n*2n найти среднее геометрическое отрицательных значений элементов области 3 (см. рисунок).
4.
1) Дан массив x0, x1, x2,…, xn-1. Определить сумму максимального и минимального значений элементов массива и количество элементов, лежащих между ними.
|
|
2) В заданной квадратной матрице размера 2n*2n найти сумму абсолютных значений элементов области 4 (см. рисунок).
5.
1) Дан массив y0, y1, y2,…, yn-1. Определить произведение максимального по абсолютной величине и минимального по абсолютной величине значений элементов массива и сумму значений элементов, лежащих между ними.
2) В заданной квадратной матрице размера 2n*2n найти среднее арифметическое значений положительных элементов области 5 (см. рисунок).
6.
1) Дан массив x0, x1, x2,…, xn-1. Определить произведение значений элементов массива с чётными номерами и сумму значений элементов с нечётными номерами.
2) В заданной квадратной матрице размера 2n*2n найти среднее геометрическое значений положительных элементов области 6 (см. рисунок).
7.
1) Дан массив c0, c1, c2,…, cn-1. Определить произведение абсолютных значений элементов массива с чётными номерами и сумму значений элементов с нечётными номерами, номера которых больше номера элемента с максимальным значением.
2) В заданной квадратной матрице размера 2n*2n найти сумму отрицательных значений элементов области 7 (см. рисунок), умноженную на их количество.
8.
1) Дан массив b0, b1, b2,…, bn-1. Определить произведение суммы отрицательных значений элементов массива, лежащих между элементами с максимальным и минимальным значениями, на их количество.
2) В заданной квадратной матрице размера 2n*2n найти сумму абсолютных значений элементов области 8 (см. рисунок), умноженную на количество элементов с отрицательными значениями, принадлежащих этой области.
9.
1) Дан массив a0, a1, a2,…, an-1. Определить количество и произведение значений элементов массива, лежащих между элементами с максимальным по абсолютной величине значением и с минимальным по абсолютной величине значением.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк с одинаковыми номерами областей 1 и 2 (см. рисунок).
10.
1) Дан массив x0, x1, x2,…, xn-1. Определить произведение положительных значений элементов массива, лежащих между элементами с максимальным по абсолютной величине значением и с минимальным значением.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов столбцов с одинаковыми номерами областей 3 и 4 (см. рисунок).
11.
1) Дан массив y0, y1, y2,…, yn-1. Определить количество и произведение отрицательных значений элементов массива, лежащих между элементами с минимальным по абсолютной величине значением и с максимальным значением.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов столбцов с одинаковыми номерами областей 7 и 8 (см. рисунок).
12.
1) Дан массив z0, z1, z2,…, zn-1. Определить количество и сумму положительных значений элементов массива с чётными номерами, лежащих между элементами с минимальным значением и с максимальным значением.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк с одинаковыми номерами областей 5 и 6 (см. рисунок).
13.
1) Дан массив a0, a1, a2,…, an-1. Определить произведение положительных значений элементов массива, лежащих между элементом с минимальным по абсолютной величине значением и элементом с номером n/2.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк с одинаковыми номерами областей 3 и 8 (см. рисунок).
14.
1) Дан массив b0, b1, b2,…, bn-1. Определить сумму абсолютных значений элементов массива, лежащих между минимальным элементом среди элементов с положительным значением и элементом с номером n/2.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк с одинаковыми номерами областей 4 и 7 (см. рисунок).
15.
1) Дан массив c0, c1, c2,…, cn-1. Определить произведение абсолютных значений отрицательных элементов массива, лежащих между максимальным элементом среди элементов с отрицательным значением и элементом с номером n/2.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов столбцов областей 1 и 6 (см. рисунок) с одинаковыми номерами.
16.
1) Дан массив d0, d1, d2,…, dn-1. Определить количество и сумму отрицательных значений элементов массива, лежащих между минимальным элементом среди элементов с положительным значением и элементом с номером n/2.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов столбцов с одинаковыми номерами областей 2 и 5 (см. рисунок).
17.
1) Дан массив x0, x1, x2,…, xn-1. Определить количество и произведение положительных значений элементов массива, лежащих между элементом с максимальным по абсолютной величине значением и элементом с номером n/2.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк области 2 и элементов столбцов области 8 (см. рисунок) с одинаковыми номерами.
18.
1) Дан массив y0, y1, y2,…, yn-1. Определить сумму значений элементов массива с чётными номерами, лежащих между минимальным элементом среди элементов с положительным значением и элементом с номером n/2.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк области 8 и элементов столбцов области 6 (см. рисунок) с одинаковыми номерами.
19.
1) Дан массив z0, z1, z2,…, zn-1. Определить произведение значений элементов массива с нечётными номерами, лежащих между элементом с минимальным значением и первым элементом с положительным значением, имеющим номер больше, чем n/2.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк области [1+2] и элементов столбцов области [7+8] (см. рисунок) с одинаковыми номерами.
20.
1) Дан массив a0, a1, a2,…, an-1. Определить сумму значений элементов массива с чётными номерами, лежащих между максимальным элементом среди элементов с отрицательным значением и последним элементом отрицательным значением, имеющим номер меньше, чем n/2.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк области [1+2+3] и элементов столбцов области [6+7+8] (см. рисунок) с одинаковыми номерами.
21.
1) Дан массив b0, b1, b2,…, bn-1. Определить произведение значений элементов массива с чётными номерами, лежащих между элементом с максимальным по абсолютной величине значением и последним элементом с отрицательным значением, имеющим номер меньше, чем n/2.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк области [5+6+7] и элементов столбцов области [2+3+4] (см. рисунок) с одинаковыми номерами.
22.
1) Дан массив c0, c1, c2,…, cn-1. Определить количество и сумму абсолютных значений элементов массива с чётными номерами, лежащих между минимальным элементом среди элементов с положительным значением и первым элементом с отрицательным значением, имеющим номер больше, чем n/2.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк области 6 и элементов столбцов области 4 (см. рисунок) с одинаковыми номерами.
23.
1) Дан массив d0, d1, d2,…, dn-1. Определить сумму значений элементов массива с чётными номерами, лежащих между первым элементом массива с положительным значением и последним элементом с отрицательным значением.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк области 1 и элементов столбцов области 7 (см. рисунок) с одинаковыми номерами.
24.
1) Дан массив x0, x1, x2,…, xn-1. Определить абсолютную величину суммы значений элементов массива, лежащих между минимальным элементом среди элементов с положительным значением и первым элементом с положительным значением, имеющим номер больше, чем n/2.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк области 7 и элементов столбцов области 5 (см. рисунок) с одинаковыми номерами.
25.
1) Дан массив y0, y1, y2,…, yn-1. Определить сумму значений элементов массива с нечётными номерами, лежащих между элементом с минимальным по абсолютной величине значением и последним элементом массива с положительным значением.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк области 5 и элементов столбцов области 3 (см. рисунок) с одинаковыми номерами.
26.
1) Дан массив z0, z1, z2,…, zn-1. Определить произведение суммы положительных значений элементов массива, лежащих между максимальным элементом среди элементов с отрицательным значением и последним элементом массива с отрицательным значением, на их количество.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк области 3 и элементов столбцов области 1 (см. рисунок) с одинаковыми номерами.
27.
1) Дан массив a0, a1, a2,…, an-1. Определить произведение суммы отрицательных значений элементов массива, предшествующих последнему элементу с положительным значением, на общее количество элементов массива с отрицательными значениями.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк области 4 и элементов столбцов области 2 (см. рисунок) с одинаковыми номерами.
28.
1) Дан массив b0, b1, b2,…, bn-1. Определить произведение суммы абсолютных значений элементов массива с чётными номерами, предшествующих последнему элементу массива с отрицательным значением, на общее количество элементов массива с положительными значениями.
2) В заданной квадратной матрице размера 2n*2n поменять местами значения элементов строк области [5+6] и элементов столбцов области [3+4] (см. рисунок) с одинаковыми номерами.
29.
1) Дан массив c0, c1, c2,…, c2m-1. Написать программу преобразования массива в массив с элементами, соответственно равными: c2m-1, c2m-2,…, cm, c0, c1, …, cm-1. Дополнительные массивы не использовать.
2) В заданной квадратной матрице размера 2n*2n найти среднее арифметическое значений элементов области [5+6+7] (см. рисунок).
30.
1) Дан массив d0, d1, d2,…, d3m-1. Написать программу построения нового массива с элементами, равными: d0, d3, d6, …, d3m-3, d1, d4, …, d3m-2, d2, d5, …, d3m-1.
2) В заданной квадратной матрице размера 2n*2n найти среднее геометрическое значений элементов области [8+1+2] (см. рисунок).
Дата добавления: 2018-04-15; просмотров: 460; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!