Работа по С++

2017-07-10СтудИзба

Описание файла

Документ из архива "Работа по С++", который расположен в категории "". Всё это находится в предмете "объектно-ориентированное программирование (ооп)" из 3 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "ооп" в общих файлах.

Онлайн просмотр документа "Работа по С++"

Текст из документа "Работа по С++"

Варианты заданий выбираются по 2-м последним цифрам зачетной книжки. Например 2 цифры равны 23, а количество вариантов 15, тогда Ваш вариант 23-15=8, если количество вариантов равно 50 Ваш вариант 23, если 2 цифры 00 , то выбирается 1 вариант

Введение

 

Инкапсуляция - сведение кода и данных воедино в одном объекте, получившим название класс.

Наследование - наличие в языке ООП механизма, позволяющего объектам класса наследовать характеристики более простых и общих типов. Наследование обеспечивает как требуемый уровень общности, так и необходимую специализацию.

Полиморфизм - дословный перевод с греческого "много форм". В С++ полиморфизм реализуется с помощью виртуальных функций, которые позволяют в рамках всей иерархии классов иметь несколько версий одной и той же функции. Решение о том, какая именно версия должна выполняться в данный момент, определяется на этапе выполнения программы и носит название позднего связывания.

Существует несколько реализаций системы, поддерживающих стандарт С++, из которых можно выделить реализации Visual C++ (Microsoft) и Builder C++ (Inprise).  Отличия относятся в основном к используемым библиотекам классов и средам разработки. В действительности в С++ программах можно использовать библиотеки языка С, библиотеки классов С++, библиотеки визуальных классов VCL (Builder C++), библиотеку MFC (Visual C++ и Builder C++).

Язык С++ является родоначальником множества объектно-ориентированных языков, таких как Java, C#, PHP и др.

Данное пособие предназначено для начинающих изучение технологии ООП для проектирования систем управления на основе С++.

 

 

Работа № 1.
Программирование алгоритмов с использованием динамических массивов

 

Теоретические сведения

Задание к работе

Варианты заданий

Контрольные вопросы

 

Цель работы – научиться использовать операции динамического выделения и освобождения памяти на примере работы с одномерными и двумерными массивами, а также косвенное обращение к элементам массива.

 

Теоретические сведения

Объявление динамического массива

Массивы, создаваемые в динамической памяти, будем называть динамическими (размерность становится известна в процессе выполнения программы). При описании массива после имени в квадратных скобках задается количество его элементов (размерность), например int a[10]. Размерность массива может быть задана только константой или константным выражением.

При описании массив можно инициализировать, то есть присвоить его элементам начальные значения, например:

int а[10] = {1, 1, 2, 2, 5, 100};

Если инициализирующих значений меньше, чем элементов в массиве, остаток массива обнуляется, если больше — лишние значения не используются. Элементы массивов нумеруются с нуля, поэтому максимальный номер элемента всегда на единицу меньше размерности. Номер элемента указывается после его имени в квадратных скобках, например, а[0], а[3].

Если до начала работы программы неизвестно, сколько в массиве элементов, в программе следует использовать динамические массивы. Память под них выделяется с помощью операции new или функции malloc в динамической области памяти во время выполнения программы. Адрес начала массива хранится в переменной, называемой указателем. Например:

int n = 10;
int *mass1 = new int[n];   

Во второй строке описан указатель на целую величину, которому присваивается адрес начала непрерывной области динамической памяти, выделенной с помощью операции new. Выделяется столько памяти, сколько необходимо для хранения n величин типа int. Величина n может быть переменной. Инициализировать динамический массив нельзя.

Обращение к элементу динамического массива осуществляется так же, как и к элементу обычного. Если динамический массив в какой-то момент работы программы перестает быть нужным и мы собираемся впоследствии использовать эту память повторно, необходимо освободить ее с помощью операции delete[], например: delete [] a; (размерность массива при этом не указывается).

delete[] mass1;

При необходимости создания многомерных динамических массивов сначала необходимо с помощью операции new выделить память под n указателей (вектор, элемент которого - указатель), при этом все указатели располагаются в памяти последовательно друг за другом. После этого необходимо в цикле каждому указателю присвоить адрес выделенной области памяти размером, равным второй границе массива

mass2=new int*[row]; // mass2 - указатель на массив указателей на одномерные массивы
for(i=0;i<row;i++)
mass2[i]=new int[col]; // каждый элемент массива указывает на одномерный
for (i=0; i<row;i++)
for (j=0;j<col;j++)

Освобождение памяти от двумерного динамического массива:

for(i=0;i<row;i++)   //удаление всех одномерных
delete[] mass2[i];   // массивов
delete[] mass2;      // удаление массива указателей на одномерные массивы

 

Задание к работе

Общая постановка. Составить программы - одномерные массивы: задания 1-25, двухмерные массивы: задания 26-50. Массивы создаются в динамической области памяти с использованием операций NEW и DELETE. Ввод исходных данных: реальный размер массивов и их значения. Обращение к элементам массива – через косвенную адресацию.

 

Варианты заданий

1. Заданы два массива А(5) и В(4). Первым на печать вывести массив, сумма значений которого окажется наименьшей.

2. Заданы два массива А(5) и В(4). Первым на печать вывести массив, произведение значений которого окажется наименьшим.

3. Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и прибавить его ко всем элементам массивов. На печать вывести исходные и преобразованные массивы.

4. Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение и вычесть его из всех элементов массивов. На печать вывести исходные и преобразованные массивы.

5. Заданы два массива А(5) и В(5). В каждом из массивов найти среднее арифметическое всех элементов массивов. На печать вывести исходные массивы и найденные значения.

6. Заданы два массива А(5) и В(4). Первым на печать вывести массив, содержащий наибольшее значение. Напечатать также это значение и его порядковый номер.

7. Заданы два массива А(5) и В(5). Подсчитать в них количество отрицательных элементов и первым на печать вывести массив, имеющий наименьшее их количество.

8. Заданы два массива А(5) и В(5). Подсчитать в них количество положительных элементов и первым на печать вывести массив, имеющий наименьшее их количество.

9. Заданы два массива А(5) и В(5). Подсчитать в них количество отрицательных элементов и первым на печать вывести массив, имеющий наибольшее их количество.

10. Заданы два массива А(5) и В(5). Подсчитать в них количество положительных элементов и первым на печать вывести массив, имеющий наибольшее их количество.

11. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, больших значения t  и первым на печать вывести массив, имеющий наименьшее их количество.

12. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, меньших значения t  и первым на печать вывести массив, имеющий наименьшее их количество.

13. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, больших значения t  и первым на печать вывести массив, имеющий наибольшее их количество.

14. Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и умножить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.

15. Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение и умножить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.

16. Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и разделить на  него все элементы массивов. На печать вывести исходные и преобразованные массивы.

17. Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение и разделить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.

18. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, кратных двум  и первым на печать вывести массив, имеющий наибольшее их количество.

19. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, кратных трем  и первым на печать вывести массив, имеющий наибольшее их количество.

20. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, меньших значения t и первым на печать вывести массив, имеющий наибольшее их количество.

21. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые больше 0.

22. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые меньше 0.

23. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые кратны двум.

24. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые больше значения T.

25. Задан массив А(10). Получить из него массив В, состоящий из элементов массива А, которые кратны трем.

26.Дан массив А(n,n).Найти число элементов массива a(i,j)>t и просуммировать все эти элементы.

27.Дан одномерный массив А(n).Сформировать массив B(k),состоящий из a(i) > t. На печать вывести исходный массив, сформированный массив и его размерность.

28.Дан массив A(n,n). Вычислить сумму всех неотрицательных элементов, а также их количество.

29. Дан массив A(n,n). Вычислить сумму всех отрицательных его элементов и их количество.

30. Дан массив A(n,n). Сформировать вектор В(к) из a(i,j) < 0. На  печать вывести исходный массив, полученный вектор и его размерность.

31. Дан массив A(n,n). Написать программу его поворота на 900 относительно его центра. На печать вывести исходный и повернутый массивы.

32. Дан массив A(n,n). Написать программу его поворота на 1800 относительно его центра. На печать вывести исходный и повернутый массивы.

33. Дан массив A(n,n). Написать программу его поворота на 2700 относительно его центра. На печать вывести исходный и повернутый массивы.

34. Дан массив A(n,n). Найти сумму всех его элементов, расположенных выше главной диагонали.

35. Дан массив A(n,n). Найти сумму всех его элементов, расположенных ниже главной диагонали.

36. Дан массив A(n,n). Найти сумму всех его элементов, расположенных выше диагонали, противоположной главной.

37. Дан  массив A(n,n). Найти сумму всех его элементов, расположенных ниже диагонали, противоположной главной.

38. Задана матрица А(n,n). Найти суммы и произведения элементов, стоящих на главной и противоположной (побочной) диагоналях.

39. Задана матрица А(n,n), состоящая из нулей и единиц. Подсчитать количество нулей и единиц в этой матрице.

40. Задана матрица А(n,n). Переставить местами к-ю и i-ю строки, а эатем l-й и j-й столбцы.

41. Задан массив действительных чисел А(n). Необходимо каждый элемент массива разделить на среднее арифметическое этих элементов. На печать вывести исх. и преобразов. массивы.

42. Задан массив А(n). Получить массив В(к), состоящий из элементов массива А, которые делятся на 3. Подсчитать количество элементов массива В.

43. Задана матрица А(n,n). Получить матрицу В=А^2.Элемент b[I][j] определяется как сумма от поэлементного произведения I-й строки на j-й столбец матрицы А.

44. Вычислить первую норму матрицы А(n,n) , определяемую как , т.е. максимальная сумма из сумм элементов по столбцам

45. Вычислить вторую норму матрицы А(n,n), определяемую как максимальная сумма из сумм элементов по строкам .

46. Задан двухмерный массив целых чисел A размером N на M. Найти сумму элементов, расположенных на главной диагонали.

47. Задан двухмерный массив целых чисел A размером N на M. Найти произведение элементов, расположенных на главной диагонали.

48. Задан двухмерный массив целых чисел A размером N на M. Найти максимальный элемент и поменять его с элементом A[1,1].

49. Задан двухмерный массив целых чисел A размером N на M. Найти минимальный элемент и поменять его с элементом A[1,1].

50. Задан двухмерный массив целых чисел A размером N на M. Найти максимальный элемент и поменять его с последним.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5209
Авторов
на СтудИзбе
430
Средний доход
с одного платного файла
Обучение Подробнее