Uploaded by Даша Евтушенко ИМ-271

КУРСОВАЯ РАБОТА

advertisement
Федеральное государственное бюджетное образовательное учреждение высшего образования «Сибирский
государственный университет телекоммуникаций и информатики»
(СибГУТИ)
Институт ИВТ
Кафедра ММЦРБС
КУРСОВАЯ РАБОТА
По дисциплине «Информатика и программирования»
«Разработка программных приложений на Языке С++
в среде MS Visual Studio»
Вариант 11
Выполнил: студент гр. ИИ-251
Ким В.А.
Проверил: доцент кафедры ММЦРБС
Пушкарева Г.В.
Новосибирск
2023
Содержание
1.
Описание языка программирования С++…………………………………………………………………….3
2.
Описание среды разработки MS Visual Studio…………………………………………………….……….13
3.
Практическая часть……………………………………………………………………………………………….………18
3.1.
3.2.
3.3.
Задание 1…………………………………………………………………………………………….………18
3.4.
Задание 4…………………………………………………………………………………………….………22
Задание 2…………………………………………………………………………………………….………19
Задание 3…………………………………………………………………………………………….………21
Список литературы……………………………………………………………………………………………………………….……25
2
1. Описание языка программирования С++
Я бы хотел начать с рассмотрения языка программирования C, так как
именно он стал прародителем языка C++. Давайте же узнаем благодаря чему
языка С стал столь популярен в свое время. Исторически этот язык неотделим
от операционной системы Unix, которая в наши дни переживает свое второе
рождение. 60-е годы были эпохой становления операционных систем и языков
программирования высокого уровня. В тот период для каждого типа
компьютеров независимо разрабатывались ОС и компиляторы, а нередко даже
свои языки программирования (вспомним, например, PL/I). В то же время,
общность возникающих при этом проблем уже стала очевидной. Ответом на
осознание этой общности стала попытка создать универсальную мобильную
операционную систему, а для этого понадобился не менее универсальный и
мобильный язык программирования. Таким языком стал С, а Unix стала
первой ОС, практически полностью написанной на языке высокого уровня.
Язык С с самого начала создавался так, чтобы на нем можно было писать
системные задачи. Создатели С не стали разрабатывать абстрактную модель
исполнителя языка, а просто реализовали в нем те возможности, в которых
более всего нуждались в практике системного программирования. Это в
первую очередь были средства непосредственной работы с памятью,
структурные конструкции управления и модульная организация программы.
И, по сути, больше ничего в язык включено не было. Все остальное было
отнесено в библиотеку времени исполнения. Поэтому недоброжелатели иной
раз отзываются о языке С как о структурном ассемблере. Но что бы они ни
болтали, подход оказался очень удачным. Благодаря ему был достигнут новый
уровень по соотношению простоты и возможностей языка. Есть, впрочем, еще
один фактор, определивший успех языка. Создатели очень умело разделили в
нем машинно-зависимые и независимые свойства. Благодаря
этому
3
большинство программ удается писать универсально - их работоспособность
не зависит от архитектуры процессора и памяти.
Как и все языки, С постепенно совершенствовался, но большинство
усовершенствований
не
носило
радикального
характера.
Наиболее
существенным из них, пожалуй, следует считать введение строгой
спецификации типов функций, которая значительно повысила надежность
межмодульного взаимодействия на С. Все такие усовершенствования были в
1989 году закреплены в стандарте ANSI который и поныне определяет язык С.
Ахиллесовой пятой языка С стало то, что он оказался слишком
низкоуровневым для тех задач, которые поставили на повестку дня 90-е годы.
Причем у этой проблемы есть два аспекта. С одной стороны, в язык были
встроены слишком низкоуровневые средства - прежде всего это работа с
памятью и адресная арифметика. Недаром смена разрядности процессоров
очень болезненно отражается на многих С-программах. С другой стороны, в С
недостает средств высокоуровневых - абстрактных типов данных и объектов,
полиморфизма, обработки исключений. Как следствие, в программах на С
техника реализации задачи часто доминирует над ее содержательной
стороной. Первые попытки исправить эти недостатки стали предприниматься
еще в начале 80-х годов. Уже тогда Бьерн Страуструп в AT&T Bell Labs стал
разрабатывать расширение языка С под условным названием [2].
При работе над моделированием телефонной сети он обнаружил, что попытки
применения существующих в то время языков моделирования оказываются
неэффективными, а применение высокоэффективных машинных языков
слишком сложно из-за их ограниченной выразительности. Исходя из этих
выводов, Бьёрн Страуструп решил дополнить язык C возможностями,
имеющимися в языке Simula при разработке больших приложений, такими как
работа с классами и объектами. В первую очередь в C были добавлены классы
(с инкапсуляцией), дающие возможность определять и использовать новые
4
типы данных. Концепция классов предполагала реализацию полиморфизма и
наследования классов, позволяющее создавать новые производные классы с
модифицированными методами и расширенными представлениями. Также
была определена строгая проверка типов, inline-функции и аргументы по
умолчанию. Ранние версии языка, первоначально именовавшегося «Си с
классами», стали доступны с 1980 года. При разработке «C c классами»,
Страуструп создал транслятор CFront из исходного кода в язык С.
Причинами выбора языка C, в качестве основы для создания нового языка
программирования Б.Страуструп объясняет тем, что язык С:
1) является многоцелевым, лаконичным и относительно низкоуровневым
языком;
2) подходит для решения большинства системных задач;
3) исполняется везде и на всём;
4) cтыкуется со средой программирования UNIX.
К 1983 году в язык были добавлены виртуальные функции, перегрузка
функций и операторов, ссылки, константы, пользовательский контроль над
управлением свободной памятью, улучшенная проверка типов и новый стиль
комментариев (//). В результате, получившийся язык уже перестал быть просто
дополненной версией классического C и в октябре 1985 года в публикации
книги Б.Страуструпа был представлен как «С++». Имя получившегося языка,
можно объяснить как «следующая версия после C», так как «++» в названии,
является обозначением оператора инкремента, то есть увеличение переменной
на
единицу,
используемого
в
языках
объектно-ориентированного
программирования (С++, Java, C# и др). Язык также не был назван D,
поскольку «является расширением C и не пытается устранять проблемы путём
удаления элементов C» [1].
5
Главное нововведение C++ - механизм классов, дающий возможность
определять и использовать новые типы данных. Программист описывает
внутреннее представление объекта класса и набор функций-методов для
доступа к этому представлению. Одной из заветных целей при создании C++
было стремление увеличить процент повторного использования уже
написанного кода. Концепция классов предлагала для этого механизм
наследования. Наследование позволяет создавать новые (производные) классы
с расширенным представлением и модифицированными методами, не
затрагивая при этом скомпилированный код исходных (базовых) классов.
Вместе с тем наследование обеспечивает один из механизмов реализации
полиморфизма
-
базовой
концепции
объектно-ориентированного
программирования, согласно которой, для выполнения однотипной обработки
разных типов данных может использоваться один и тот же код. Собственно,
полиморфизм - тоже один из методов обеспечения повторного использования
кода.
Введение классов не исчерпывает всех новаций языка C++. В нем
реализованы полноценный механизм структурной обработки исключений,
отсутствие которого в С значительно затрудняло написание надежных
программ, механизм шаблонов - изощренный механизм макрогенерации,
глубоко встроенный в язык, открывающий еще один путь к повторной
используемости кода, и многое другое [2].
Стандарт языка C++ был создан в 1998 году и состоит из двух основных
частей: ядра языка и стандартной библиотеки. Стандартная библиотека
включает в себя библиотеку шаблонов STL, которая содержит определения
шаблонов контейнеров, итераторов, алгоритмов и функторов. Стандарт C++
содержит нормативную ссылку на стандарт Си от 1990 года и не определяет
самостоятельно те функции стандартной библиотеки, которые заимствуются
из стандартной библиотеки Си. На данный момент последней версией
6
стандарта языка является С++14, которое можно рассматривать как небольшое
расширение над С++11, содержащее в основном исправления ошибок и
небольшие
улучшения.
С++
широко
используется
для
разработки
программного обеспечения: создание операционных систем, прикладных
программ, драйверов устройств, различных приложений и других.
Достоинства:
• Высокая совместимость с языком С: код на С может быть с
минимальными переделками скомпилирован компилятором C++.
• Вычислительная производительность. Язык спроектирован так, чтобы
дать программисту максимальный контроль над всеми аспектами
структуры и порядка исполнения программы. Имеется возможность
работы с памятью на низком уровне.
• Поддержка: процедурного, модульного программирования, абстракции
данных, обобщённого программирования.
• Автоматический вызов деструкторов объектов в порядке обратном
вызову конструкторов упрощает и повышает надёжность управления
памятью и другими ресурсами (открытыми файлами, сетевыми
соединениями, соединениями с базами данных и т. п.).
• Перегрузка
операторов
позволяет
записывать
выражения
над
пользовательскими типами в естественной алгебраической форме.
• Имеется
возможность
управления
константностью
объектов
(модификаторы const, mutable, volatile). Использование константных
объектов повышает надёжность и служит подсказкой для оптимизации.
• Шаблоны C++ дают возможность построения обобщённых контейнеров
и алгоритмов для разных типов данных, а также производить вычисления
на этапе компиляции.
• Возможность расширения языка для поддержки парадигм, которые не
поддерживаются компиляторами напрямую.
7
• Возможность
встраивания
предметно-ориентированных
языков
программирования в основной код.
• Доступность. Для С++ существует огромное количество учебной
литературы, переведённой на всевозможные языки.
Недостатки:
1) Плохо продуманный синтаксис сужает область применения языка.
Одним из главных недостатков языка является его синтаксис.
Определение синтаксиса является одним из самых громоздких и
продолжает расширяться. Стандарт 2003 г. содержал уже более 200
строк. Громоздкость синтаксиса С++ порождает некоторые проблемы:
• становится
невозможным
редактирование
синтаксиса
языка
программистом для адаптации к требованиям предметной области;
• существуют отклонения от стандарта в различных компиляторах,
влекущие несовместимость программ на C++ между компиляторами;
• принуждение к избыточности - несколько перегружающих друг друга
способов получить один и тот же результат, так что использующие
их программисты оказываются свободны в выборе.
2) Унаследованные от C низкоуровневые свойства существенно тормозят и
затрудняют
прикладную
разработку,
то
есть
использование
высокоуровневых конструкций затрудняется даже в задачах, где
низкоуровневые возможности сами по себе не используются.
3) Язык не содержит многих важных возможностей.
4) Язык содержит опасные возможности, существенно снижающие
качество программ сразу по всем показателям.
5) Непрерывная эволюция языка вынуждает разработчиков раз за разом
изменять уже отлаженный код — это не только удорожает разработку, но
и несёт риск внедрения в код новых ошибок. В виду того, что с 1999 года
8
Си перестал быть подмножеством С++, отлаженный код на Си уже не
может использоваться в проекте на С++ без изменений.
6) Ненадёжность продукта. Неоправданное обилие побочных эффектов,
отсутствие контроля со стороны системы времени исполнения языка и
слабая система типов, делает программы на С++ традиционно
нестабильными,
что
исключает
применение
C++
при
высоких
требованиях отказоустойчивости. Кроме того, это увеличивает время
процесса разработки [1].
Избыточные и опасные возможности
Встроенные средства обхода ограничений. Язык содержит средства,
позволяющие программисту нарушать заданную в конкретном случае
дисциплину программирования. Например, модификатор const задаёт для
объекта свойство неизменности состояния, но модификатор mutable
предназначен именно для принудительного разрешения изменения состояния
внутри константного объекта, то есть для нарушения ограничения
константности. Более того, допускается динамически удалить атрибут const с
константного объекта, превращая его в лево допустимый (L-value). Наличие в
языке таких возможностей делает попытки формальной верификации кода
бессмысленными,
а
использование
ограничений
для
оптимизации
невозможным.
Неконтролируемая макроподстановка: средства макроподстановки Си
(#define) являются сколь мощным, столь же опасным средством. Они
сохранены в C++ несмотря на то, что для решения всех задач, для которых они
были предусмотрены в Си, в C++ были предоставлены более строгие и
специализированные средства — шаблоны, перегрузка функций, inlineфункции, пространства имён, более развитая типизация, расширение
применения модификатора const, и др. В унаследованных от Си стандартных
9
библиотеках много потенциально опасных макросов. Шаблонное мета
программирование
также
порой
совмещается
с
использованием
макроподстановки для обеспечения т. н. «синтаксического сахара».
Проблемы перегрузки: принятые в C++ принципы перегрузки функций и
операторов приводят к значительному дублированию кода. Перегрузка
операторов, исходно предназначенная для введения так называемого
«синтаксического сахара», в C++ поощряет бесконтрольное изменение
поведения элементарных операций для различных типов. Это резко повышает
риск ошибок, тем более что вводить новый синтаксис и изменять
существующий
(например,
создавать
новые
операторы
или
менять
приоритеты или ассоциативность) нельзя, хотя синтаксис стандартных
операторов C++ адекватен семантике далеко не всех типов, которые может
потребоваться ввести в программу. Отдельные проблемы создаёт возможность
лёгкой перегрузки операторов new/delete, способной породить крайне
коварные и трудно выявляемые ошибки. При этом некоторые интуитивно
ожидаемые операции (подчистка динамических объектов в случае генерации
исключений) в C++ не выполняются, а значительная часть перегруженных
функций и операторов вызывается неявно (приведение типов, создание
временных экземпляров классов и др.). В результате средства, изначально
предназначенные для того, чтобы сделать программы более ясными и
повысить удобство разработки и сопровождения, превращаются в ещё один
источник неоправданного усложнения и снижения надёжности кода [7].
С++ является компилируемым языком, а это значит, что компилятор
транслирует исходный код на С++ в исполняемый файл, который содержит
набор машинных инструкций. Но разные платформы имеют свои особенности,
поэтому скомпилированные программы нельзя просто перенести с одной
платформы на другую и там уже запустить. Однако на уровне исходного кода
программы на С++ по большей степени обладают переносимостью, если не
10
используются какие-то специфичные для текущей ос функции. А наличие
компиляторов, библиотек и инструментов разработки почти под все
распространенные платформы позволяет компилировать один и тот же
исходный код на С++ в приложения под эти платформы [5].
Отличия C++ от С
Новые возможности:

поддержка объектно-ориентированного программирования;

поддержка обобщённого программирования через шаблоны;

дополнительные типы данных;

исключения;

пространства имён;

встраиваемые (inline) функции;

перегрузка операторов;

перегрузка функций;

ссылки и операторы управления свободно распределяемой памятью;

дополнения к стандартной библиотеке.
В С++ не разрешается:

вызывать функцию main() внутри программы, в то время как в C это
действие правомерно.

неявное приведение типов между несвязанными типами указателей.

использовать функции, которые ещё не объявлены [3].
И все же, несмотря на перечисленные недостатки и даже на неготовность
стандарта языка, C++ остается одним из наиболее популярных языков
программирования.
Его
сила
прежде
всего
в
практически
полной
совместимости с языком С. Благодаря этому программистам C++ доступны
все наработки, выполненные на С. При этом C++ даже без использования
11
классов привносит в С ряд настолько важных дополнительных возможностей
и удобств, что многие пользуются им просто как улучшенным С [2].
Что пишут на С++
На C++ создают высоконагруженные приложения, драйверы, графические
стандарты и игры. Например, на С++ написана система управления базами
данных MySQL — основа для множества высоконагруженных приложений, —
главные продукты Microsoft, культовые игры Counter Strike и World of
Warcraft. На С++ пишут код, который должен работать быстро и надежно,
поэтому язык часто является основой для балансировщиков нагрузок на
серверах и сложных графических алгоритмов. Также на C++ можно написать
код для GPU — графического процессора. Так, например, создаются шейдеры
для игр и графического ПО: они параллельно запускаются на GPU и позволяют
без задержки выполнять сложные вычисления. И еще на С++ можно писать
сложные, нетривиальные алгоритмы — для этого у языка есть огромная
библиотека STL (Standard Template Library), где реализована большая часть
алгоритмов
и
структур
данных.
Иногда
С++
используют,
чтобы
оптимизировать код, добавить ему скорости и производительности или
настроить приложение под конкретные платформы [6].
IDE/Редакторы для работы с С++: Anjuta, Dev-C++, Eclipse, Emacs, jEdit,
KDevelop, RAD Studio, SciTE, TextMate, Vi(m), Xcode, CodeBlocks, Visual
Studio [4].
12
2. Описание среды разработки MS Visual Studio
Интегрированная среда разработки (IDE) — это многофункциональная
программа, которая поддерживает многие аспекты разработки программного
обеспечения. Интегрированная среда разработки Visual Studio — это
стартовая площадка для написания, отладки и сборки кода, а также
последующей публикации приложений. Помимо стандартного редактора и
отладчика, которые есть в большинстве сред IDE, Visual Studio включает в
себя компиляторы, средства автозавершения кода, графические конструкторы
и многие другие функции для улучшения процесса разработки [8].
Функциональность Visual Studio охватывает все этапы разработки
программного обеспечения, предоставляя современные инструменты для
написания кода, проектирования графических интерфейсов, сборки, отладки и
тестирования приложений. Возможности Visual Studio могут быть дополнены
путем подключения необходимых расширений. Редактор кода Visual Studio
поддерживает подсветку синтаксиса, вставку фрагментов кода, отображение
структуры и связанных функций. Существенно ускорить работу помогает
технология IntelliSense - автозавершение кода по мере ввода [9].
Поддержка множества языков при разработке. Visual Studio позволяет
писать код на своем языке или любых других предпочитаемых языках,
используя все время один и тот же интерфейс (IDE). Более того, Visual Studio
также еще позволяет создавать Web-страницы на разных языках, но помещать
их все в одно и то же Web-приложение. Единственным ограничением является
то, что в каждой Web-странице можно использовать только какой-то один
язык (очевидно, что в противном случае проблем при компиляции было бы
просто не избежать). Меньше кода для написания. Для создания большинства
приложений требуется приличное количество стандартного стереотипного
кода, и Web-страницы ASP. NET тому не исключение. Например, добавление
13
Web-элемента
управления,
присоединение
обработчиков
событий
и
корректировка форматирования требует установки в разметке страницы ряда
деталей. В Visual Studio такие детали устанавливаются автоматически.
Интуитивный стиль кодирования. По умолчанию Visual Studio форматирует
код по мере его ввода, автоматически вставляя необходимые отступы и
применяя цветовое кодирование для выделения элементов типа комментариев.
Такие незначительные отличия делают код более удобным для чтения и менее
подверженным ошибкам [10].
Рис. 1. Основные окна и функциональные возможности Visual Studio
На рисунке выше представлена среда Visual Studio с открытым проектом
и подсказки по основным окнам и функциональных возможностях.

Справа в верхнем углу окна Обозревателя решений вы можете
просматривать файлы кода, перемещаться по ним и управлять
ими. Обозреватель решений позволяет упорядочить код путем
объединения файлов в решения и проекты.
14

В центральном окне редактора, с которым вы, вероятно, будете
работать дольше всего, отображается содержимое файла. В окне
редактора вы можете вносить изменения в код или разрабатывать
пользовательский интерфейс, например окно с кнопками или
текстовые поля.

Окно Изменения Git в нижнем углу справа позволяет отслеживать
рабочие элементы и предоставлять общий доступ к коду,
используя Git, GitHub или другие технологии управления версиями
[8].
Дизайнер форм Visual Studio незаменим при разработке программ с
графическим интерфейсом, помогая спроектировать внешний вид будущего
приложения и работу каждого элемента интерфейса [9].
Выпуски
Среда Visual Studio доступна для Windows и Mac. Функции Visual Studio
для Mac во многом аналогичны возможностям Visual Studio для Windows и
оптимизированы
для
разработки
кроссплатформенных
и
мобильных
приложений. Эта статья посвящена версии Visual Studio для Windows.
Существует три выпуска Visual Studio: Community, Professional и Enterprise.
Сведения о функциях, поддерживаемых в каждом выпуске.
Популярные средства повышения производительности
Вот несколько популярных возможностей Visual Studio, которые
повышают производительность при разработке программного обеспечения:

Волнистые линии и быстрые действия
Волнистые линии обозначают ошибки или потенциальные
проблемы кода прямо во время ввода. Эти визуальные подсказки
15
помогают
немедленно
устранить
проблемы,
не
дожидаясь
появления ошибок во время сборки или выполнения. Если навести
указатель мыши на волнистую линию, на экран будут выведены
дополнительные сведения об ошибке. Также в поле слева может
отображаться лампочка, указывающая на наличие сведений
о быстрых действиях для устранения ошибки.

Очистка кода
Вы можете одним нажатием кнопки отформатировать код и
применить к нему исправления, предложенные параметрами стиля
кода, соглашениями в файле .editorconfig и (или) анализаторами
Roslyn. Очистка кода, которая сейчас доступна только для кода
C#, помогает устранять проблемы в коде перед переходом к его
проверке.

Рефакторинг
Рефакторинг
включает
в
себя
такие
операции,
как
интеллектуальное переименование переменных, извлечение одной
или нескольких строк кода в новый метод и изменение порядка
параметров методов.

IntelliSense
IntelliSense — это набор возможностей, отображающих сведения о
коде непосредственно в редакторе и в некоторых случаях
автоматически создающих небольшие отрывки кода. По сути, это
встроенная в редактор базовая документация, которая избавляет от
необходимости искать информацию в других источниках.

Поиск в Visual Studio
16
Иногда вам будет казаться, что в Visual Studio слишком много
меню, действий и свойств. Чтобы быстро находить функции
интегрированной среды разработки или элементы кода, в
Visual Studio представлен единый компонент поиска (CTRL+Q).

Иерархия вызовов
В окне Иерархия вызовов показаны методы, вызывающие
выбранный метод. Это может быть полезно, если вы собираетесь
изменить либо удалить метод или хотите отследить ошибку.

CodeLens
CodeLens помогает находить ссылки на код, изменения кода,
связанные с кодом ошибки, рабочие элементы, проверки кода и
модульные тесты — не выходя из редактора.

Перейти к определению
Функция
Перейти
к
определению позволяет
перейти
к
расположению, где определена выбранная функция или тип.

Показать определение
В окне Показать определение можно отобразить метод или
определение типа, не открывая отдельный файл.

Горячая перезагрузка
Горячая перезагрузка позволяет редактировать файлы кода
приложения и сразу же применять изменения кода к работающему
приложению [8].
17
3. Практическая часть
3.1 Задание 1
Разработать программу согласно варианту.
Листинг 3.1.1 – Задание 1
#include <iostream>
using namespace std;
int main() {
setlocale(0, "");
int N;
cout << "Введите натуральное число: ";
cin >> N;
if (N % 2 == 0) {
cout << "Число " << N << " является четным!\n";
}
else if (N % 10 == 3) {
cout << "Число " << N << " оканчивается на 3!\n";
}
else {
cout << "Число " << N << " не четное и не
оканчивается на 3!\n";
}
system("pause");
return 0;
}
Тестовый пример 3.1.1
18
Тестовый пример 3.1.2
Тестовый пример 3.1.3
3.2 Задание 2
Разработать программу согласно варианту. Необходимо найти сумму S
числового ряда из n членов. Количество n ввести с клавиатуры.
Листинг 3.2.1 – Задание 2
#include <iostream>
#include<cmath>
using namespace std;
//Считает факториал n
int factorial(int n) {
if (n > 1)
return n * factorial(n - 1);
else if (n == 0)
return 1;
}
//Рассчитывает n-ый член ряда
float row_member(int n, float x, int pow_x) {
return ((n * 2 - 1) * pow(x, pow_x)) / factorial(n 1);
}
19
int main() {
setlocale(0, "");
int n;
cout << "Введите количество членов ряда: ";
cin >> n;
if (n < 1) {
cerr << "Некорректный ввод: 'Ряд не определен'
\n";
system("pause");
exit(1);
}
float x;
cout << "Введите значение x: ";
cin >> x;
int pow_x = 0; // Степень x для n-го член ряда
float sum = 0; // Сумма ряда
for (int i = 1; i <= n; ++i) {
sum += row_member(i, x, pow_x);
pow_x += 2;
}
cout << "Сумма ряда до " << n << " члена включительно
равна " << sum << endl;
system("pause");
return 0;
}
Тестовый пример 3.2.1
Тестовый пример 3.2.2
20
Тестовый пример 3.2.3
Тестовый пример 3.2.4
3.3 Задание 3
Разработать программу согласно варианту.
Листинг 3.3.1 – Задание 3
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
setlocale(0, "");
int mas[14];
int quality_even = 0, sum_even = 0;
for (int i = 0; i < 14; i++) {
cout << "[" << i + 1 << "]" << ": ";
cin >> mas[i];
if (mas[i] > 0 && mas[i] % 2 == 0) {
++quality_even;
21
sum_even += mas[i];
}
}
cout << "Массив :" << endl;
for (int i = 0; i < 14; i++) {
cout << mas[i] << " ";
}
cout << endl << "Количество четных положительнеых
элиментов равно " << quality_even << endl;
cout << "Сумма четных положительнеых элиментов равна "
<< sum_even << endl;
system("pause");
return 0;
}
Тестовый пример 3.3.1
3.4 Задание 4
Разработать программу согласно варианту. Массивы в задании
применить динамические.
22
Листинг 3.4.1 – Задание 4
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
setlocale(0, "");
int N, M;
cout << "Количество строк: ";
cin >> N;
cout << "Количество столбцов: ";
cin >> M;
auto** mas = new float* [N];//инициализ-ия 2-го массива
for (int i = 0; i < N; ++i)
mas[i] = new float[M];
int quality_even = 0; // even - четный
int quality_odd = 0; // odd - нечетный
for (int i = 0; i < N; ++i) { //ввод элементов
for (int j = 0; j < M; ++j) {
cout << "[" << i << "]"
<< " [" << j << "]: ";
cin >> mas[i][j];
if (mas[i][j] % 2 != 0)//проверяем нечетность
++quality_odd;
else ++quality_even;
}
}
cout << "Массив:" << endl;
for (int i = 0; i < N; ++i) {
//вывод матрицы
23
for (int j = 0; j < M; ++j) {
cout << mas[i][j] << " ";
}
cout << endl;
}
cout << "Количество четных элементов равно " <<
quality_even << endl;
cout << "Количество нечетных элементов равно " <<
quality_odd << endl;
system("pause");
for (int i = 0; i < N; ++i) delete mas[i];
delete[] mas;
return 0;
}
Тестовый пример 3.4.1
24
Список литературы
1. История создания и общая характеристика языка C++ [Электронный ресурс] URL:
http://y95193mh.bget.ru/content/2/211.html (дата обращения: 19.02.2023)
языка С/C++. Примеры использования [Электронный ресурс] URL:
http://www.codenet.ru/progr/cpp/ccpphistory.php
(дата
обращения:
19.02.2023)
2. История
3. Что
такое
C++
-
Web-Proger
ресурс]
[Электронный
http://web.spt42.ru/index.php/chto-takoe-c-plus-plus
08.03.2023)
(дата
URL:
обращения:
4. C++ - Энциклопедия языков программирования [Электронный ресурс] URL:
http://progopedia.ru/language/c-plus-plus/ (дата обращения: 08.03.2023)
5. Введение
в
C++
-
Metanit
[Электронный
ресурс]
URL:
https://metanit.com/cpp/tutorial/1.1.php (дата обращения: 08.03.2023)
6. Язык программирования С++: чем он отличается от С, где его применяют и подходит
ли
он
для
старта
[Электронный
ресурс]
URL:
https://ru.hexlet.io/blog/posts/yazyk-cpp (дата обращения: 08.03.2023)
7. С++
-
Википедия
[Электронный
ресурс]
URL:
https://ru.wikipedia.org/wiki/C%2B%2B#cite_note-XXtraps64bit-46 (дата
обращения: 08.03.2023)
8. Добро пожаловать в интегрированную среду разработки Visual Studio [Электронный
ресурс]
URL:
https://learn.microsoft.com/ru-ru/visualstudio/getstarted/visual-studio-ide?view=vs-2022 (дата обращения: 19.02.2023)
9. Microsoft Visual Studio Описание, где скачать, расширения файлов [Электронный
ресурс] URL: https://open-file.ru/programs/microsoft-visual-studio (дата
обращения: 08.03.2023)
10. Описание среды разработки Microsoft Visual Studio [Электронный ресурс] URL:
https://studbooks.net/2258619/informatika/opisanie_sredy_razrabotki
_microsoft_visual_studio (дата обращения: 08.03.2023)
25
Download