Лабораторные работы МИРЭА 2014 (1017113), страница 6
Текст из файла (страница 6)
1. В одномерном массиве
-
Вычислите количество отрицательных элементов массива.
-
Преобразуйте массив так, чтобы сначала располагались все нулевые элементы, а потом — все остальные.
-
Вычислите сумму элементов, находящихся между первым и последним положительными элементами.
-
Из данного массива и другого массива того же типа, но другой размерности сформируйте общий массив и вычислите сумму положительных элементов.
2. Дана матрица размером NxM. Упорядочить ее строки по возрастанию их первых элементов.
Вариант 9
1. В одномерном массиве
-
Вычислите произведение элементов с четными номерами.
-
Преобразуйте массив так, чтобы нечетные и четные элементы массива поменялись местами (первый — со вторым, третий - с четвертым и т.д.).
-
Вычислите сумму элементов, находящихся между первым и последним отрицательными элементами.
-
Из данного массива и другого массива того же типа, но другой размерности сформируйте общий массив и вычислите сумму отрицательных элементов, стоящих на четных местах.
2. Дана матрица размером NxM. Упорядочить ее столбцы по возрастанию их наименьших элементов.
Вариант 10
1. В одномерном массиве
-
Вычислите сумму элементов с нечетными номерами.
-
Преобразуйте массив так, чтобы элементы массива поменялись местами (первый — с последним, второй — с предпоследним и т.д.).
-
Вычислите сумму элементов, находящихся между первым и последним отрицательными элементами.
-
Из данного массива и другого массива того же типа, но другой размерности сформируйте общий массив и вычислите сумму положительных элементов, стоящих на нечетных местах.
2. Определить, является ли заданная квадратная матрица n-го порядка симметричной относительно побочной диагонали.
Вариант 11
1. В одномерном массиве
-
Найдите количество элементов массива, меньших заданного числа.
-
Преобразуйте массив так, чтобы все положительные элементы массива стали отрицательными и наоборот, а затем измененный массив отсортируйте по возрастанию.
-
Утройте максимальный элемент массива.
-
Из данного массива и другого массива того же типа, но другой размерности сформируйте общий массив и поменяйте местами его максимальный и минимальный элементы.
2. Для матрицы размером NxM вывести на экран все седловые точки. Элемент матрицы называется седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или наоборот.
Вариант 12
1. В одномерном массиве
-
Найдите сумму элементов массива, находящихся в диапазоне между двумя заданными числами.
-
Измените порядок следования элементов массива на противоположный.
-
Найдите произведение элементов массива, расположенных после минимального элемента.
-
Из данного массива и другого массива того же типа, но другой размерности сформируйте общий массив и найдите его минимальный по модулю элемент.
2. В матрице размером NxM переставить строки так, чтобы на главной диагонали матрицы были расположены элементы, наибольшие по абсолютной величине.
Вариант 13
1. В одномерном массиве
-
Найдите номер минимального по модулю элемента массива.
-
Замените все положительные элементы на нулевые.
-
Найдите сумму модулей элементов массива, расположенных после первого отрицательного числа.
-
Из данного массива и другого массива того же типа, но другой размерности сформируйте общий массив и отсортируйте его по убыванию.
2. В матрице размером NxM найти максимальный среди элементов, лежащих ниже побочной диагонали, и минимальный среди элементов, лежащих выше главной диагонали.
Вариант 14
1. В одномерном массиве
-
Найдите количество элементов массива значение которых больше a, но меньше b.
-
Замените все четные элементы на соседние нечетные.
-
Найдите сумму модулей элементов массива, расположенных после первого нулевого числа.
-
Из данного массива и другого массива того же типа, но другой размерности сформируйте общий массив и отсортируйте его по убыванию модулей.
-
В матрице размером NxM поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением.
Вариант 15
1. В одномерном массиве типа int
-
Найдите количество четных элементов массива значение которых больше a, но меньше b.
-
Замените все четные элементы на отрицательные.
-
Найдите сумму положительных и отрицательных элементов массива.
-
Из данного массива и другого массива того же типа, но другой размерности сформируйте общий массив и отсортируйте его по убыванию модулей.
2. В матрице размером NxM поменять местами строку, содержащую отрицательный элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением.
Лабораторная работа №5
СТРУКТУРЫ И КЛАССЫ
Цель работы: применение методов объектно-ориентированного программирования при создании программ
Длительность выполнения работы: 2 часа.
Краткие теоретические сведения
Структура это упорядоченная совокупность элементов разного типа. Упорядоченность, в отличие от массива, заключается не в присвоении номера элементу, а в присвоении имени.
Описание структуры, а точнее структурного типа, выглядит следующим образом:
struct Имя_структурного_типа
{
/*в теле структуры производится объявление членов (иногда говорят полей) структуры, но не инициализация, например,
int number;
double temperature;
char day;
*/
}; // Описание заканчивается точкой с запятой !!!
Вместо термина «Имя структуры» иногда используется термин дескриптор структуры.
Обращение к члену структуры производится с указанием через точку имени структуры и имени элемента:
Имя_структуры.Имя_члена_структуры
Понятие структура значительно шире, чем понятие массива. На самом деле, каждый раз объявляя структуру, мы создаем новый тип, который, далее объявляется в программе.
#include<iostream.h>
#include<windows.h>
struct book{
char name[10];
int page;
float price;
};
int main(void)
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
book b1;
cout<<"Название книги: ";
cin>>b1.name;
cout<<"Цена: ";
cin>>b1.price;
cout<<"число страниц: ";
cin>>b1.page;
cout<<b1.name<<endl<<b1.price<<endl<<b1.page;
char z;
cin>>z;
return 0;
}
Можно создать массив из струтур
#include<iostream.h>
#include<windows.h>
struct book{
char name[10];
int page;
float price;
};
main(){
book b[3];
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
for(int i=0;i<3;i++){
cout<<"Фамилия автора: " ;
cin>>b[i].name;
}
SetConsoleOutputCP(1251);
for(int i=0;i<3;i++){
cout<<"Имеются книги следующих автров: " <<b[i].name<<endl;;
}
char z;
cin>>z;
}
Как всегда, для С++ действует правило – переменная должна быть описана до первого обращения к ней. В данном случае описание структуры вынесено перед функцией main, хотя описание структуры можно выполнить внутри функции main. Попробуйте это сделать самостоятельно.
Следует еще обратить внимание, что имя структуры, это не объект (т.е. не исполняемая программа), а только тип, по образцу которого строятся подобные друг другу объекты.
На первый взгляд структура такая же простая конструкция как массив. Но это не так. В отличие от массивов структуры могут иметь функции, которые описываются вне тела структуры. В этом случае в теле структуры записывается прототип функции.
Класс – это некий проект, из которого создается объект. В классе заложены свойства и поведение будущего объекта, который получается из класса как из проекта. Примером объекта может являться какое-нибудь обобщающее понятие, например, «фрукт». Никто не видел объекта «фрукт», хотя все знают его свойства, это могут быть форма, цвет, размеры, вес и т.п. Объектом может быть живое существо, например, «собака». Такой объект обладает не только свойствами, но он может выполнять определенные действия, например, сидеть, лежать, бегать.
Объект – элемент окружающего нас мира, с которым мы встречаемся в повседневной жизни. Например, проект дома серии 135 – это класс, а сам конкретный дом, построенный по конкретному адресу – это объект класса домов серии 135. Таким образом, объекты реального мира в плане их состояния и поведения, можно рассматривать как классы и объекты.
Особенностью программирования является то, что и классы и объекты это программный код. В этом случае классы следует рассматривать как проект (документация) по которому будут строиться рабочие программы – объекты.
Объектно-ориентированное программирование – это способ программирования с ориентацией на объекты. При таком способе создаются крупные программные образования – классы. В классы закладываются общие свойства будущих объектов, которые будут получены по определенным правилам из этих классов. В классах должны быть предусмотрены варианты поведения будущих объектов через создаваемые в классах функции (методы классов). Такой способ значительно ускоряет разработку программного обеспечения и облегчает труд программистов.
В классах задаются элементы, называемые свойствами. Они хранятся в виде переменных и констант, называемых полями. Поведение объекта описывается специальными функциями, которые в классах носят название методов. Когда свойствам класса присваиваются какие-то конкретные значения, то тем самым из класса создается конкретный объект. Объекты создаются специальным методом класса, называемым конструктором.
Методы обрабатывают внутренние состояния объекта и обеспечивают механизм взаимодействия между объектами. В качестве приера рассмотрим класс велосипедов. Свойствами, характеризующими состояния объектов этого класса, будут: текущая скорость, текущее состояние переключателя педали (изменение скорости), количество шестеренок и текущая шестеренка, за счет которой скорость изменяется. Методами, которые изменяют состояние велосипеда будут: смена шестеренки, переключение педали и изменение скорости. Весь этот механизм изменения свойств методами класса спрятан внутри самого класса. Такой принцип взаимодействия элементов класса носит название инкапсуляции данных. Это фундаментальный принцип объектно-ориентированного программирования.
Фактическая польза от механизма классов-объектов состоит в том, что:
-
обеспечивается модульность программирования: исходный код объекта написан и поддерживается независимо от исходных кодов других объектов (т.е. повышается надежность всей задачи, программа которой состоит из цепочки таких независимых модулей).
-
механизм работы такого модуля скрыт внутри самого модуля и не отвлекает программиста на выяснение различных мелких деталей алгоритма.
-
имеется возможность многократного использования элемента (подобно тому, как используется многократное обращение к библиотеке стандартных программ).
-
обеспечивается легкая сменяемость элементов в общей программе (в приложении): если такой элемент выходит из строя, его можно легко заменить аналогичным элементом, не разрушая всю задачу.
Существуют разработчики классов и пользователи классов (разработчики приложений): если разработчик создает классы, то пользователь манипулирует классами и экземплярами классов.
Класс – это обыкновенный тип. Если вы программист, то всегда имеете дело с типами и экземплярами, даже если и не используете эту терминологию. Например, вы создаете различные переменные типа int. Можно сказать, что вы фактически создаете различные экземпляры переменных этого типа. Классы обычно более сложны, чем простые типы данных, но они работают тем же способом. Создавая переменные типа заданного класса, вы создаете экземпляры этого класса, а назначая различные значения экземплярам того же типа (как и переменные типа int), вы можете выполнять разные задачи.
Класс – это собрание связанной информации, которая включает в себя и данные, и функции (программы для работы с данными). Эти функции в классах называются методами.
Класс – это дальнейшее развитие структур: в них тоже объединяются данные разных типов. Это такой шаблон, под который (как и под структуру) память выделяется только тогда, когда мы создаем «переменную типа этого шаблона». Вспомним, что если у нас была некая структура А, то чтобы работать с ней, мы создавали экземпляр этой структуры а путем объявления А а; а затем уже работали с экземпляром а. Можно сказать, что мы объявляли переменную а типа А.