Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uchebnoe_posobie_dn_PYaVU_SI_15_nach2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.24 Mб
Скачать

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

//Найти и вывести номер элемента введенного с клавиатуры массива целых чисел,

//для которого сумма разностей со значениями соседних элементов максимальна.

//Для крайних элементов использовать циклическое замыкание.

#include<iostream.h>

#include<math.h>

#include <locale.h>

const int RAZ = 10 ; //размер массива

typedef int telem ; //определение типа элементов массива

typedef telem tmas[RAZ] ; //определение типа массива

int nomer(const tmas a, telem &max) ;

void inputmas(tmas a) ;

int main()

{tmas a ; //массив

int nom ; //номер искомого элемента

telem max ; //значение максимальной суммы разностей

setlocale(LC_ALL,"Russian") ;

cout << " В массиве целых чисел найти номер элемента, для которого\n" ;

cout << " сумма разностей со значениями соседних элементов максимальна\n" ;

//Ввод исходных данных

inputmas(a) ;

//Поиск номера элемента

nom = nomer(a, max) ;

cout << " Искомый номер элемента массива: " << nom ;

cout << "\n Значение элемента:" << a[nom] << " , сумма разностей=" << max ;

cout << "\n Для завершения нажмите <Enter>" ;

return 0 ;

}

int nomer(const tmas a, telem &max)

{telem pr ; //текущее значение разности

int imax = 0 ; //за максимум принимаем первый по счету элемент

max = abs(a[RAZ - 1] - a[0]) + abs(a[1] - a[0]) ;

for(int i = 1 ; i < RAZ - 1 ; i++)

if(max < (pr = abs(a[i-1] - a[i]) + abs(a[i+1] - a[i])))

{imax = i ;

max = pr ;

}

if(max < (pr = abs(a[0] - a[RAZ - 1]) + abs(a[RAZ - 2] - a[RAZ-1])))

{imax = RAZ - 1 ;

max = pr ;

}

return imax ;

}

void inputmas(tmas a)

{cout << "\n Введите в одной строке элементы массива, состоящего из ";

cout << RAZ << " целых чисел,\n и нажмите <Enter>\n" ;

for(int i = 0 ; i < RAZ ; i++)

cin >> a[i] ;

}

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

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

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

#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 ;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]