Пример программы на обработку двумерного массива (матрицы)



 

//Программа находит строку введенного с клавиатуры двумерного массива,

//содержащую максимальную сумму значений элементов

#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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!