- •2. Методические указания к выполнению лабораторных работ
- •Лабораторная работа №1 Следование
- •Варианты индивидуальных заданий Выполнить поразрядные логические операции над машинными кодами
- •Пример программы
- •Лабораторная работа №2 Операторы ветвления
- •Варианты индивидуальных заданий
- •Пример разработки математической модели и схемы алгоритма решения задачи для варианта задания вида:
- •Текст программы
- •Лабораторная работа №3 Операторы цикла
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №4 Статические массивы
- •Варианты индивидуальных заданий
- •Пример программы на обработку одномерного массива
- •Пример программы на обработку двумерного массива (матрицы)
- •Лабораторная работа №5 Динамические массивы
- •Варианты индивидуальных заданий
- •Пример программы на обработку одномерного массива
- •Пример программы на обработку двумерного массива (матрицы)
- •Лабораторная работа №6 Методы сортировки
- •Варианты индивидуальных заданий Методы сортировки
- •Области сортировки элементов матриц
- •Примеры программ
- •Лабораторная работа №7 Передача имён функций в качестве параметров
- •Текст программы
- •Лабораторная работа №8 Строки и текстовые файлы
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №9 Структуры и файлы структур
- •Пример программы
- •Лабораторная работа №10 Линейные списки
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №11 Стек, дек, очередь
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №12 Классы
- •Варианты индивидуальных заданий
- •Примеры программ
- •Литература
Пример программы на обработку одномерного массива
//Найти и вывести номер элемента введенного с клавиатуры массива целых чисел,
//для которого сумма разностей со значениями соседних элементов максимальна.
//Для крайних элементов использовать циклическое замыкание.
#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 ;
}
