Структурный шаблон, динамический массив

Автор работы: Пользователь скрыл имя, 15 Февраля 2013 в 05:37, курсовая работа

Краткое описание

C++–компилируемый статически типизированный язык программирования общего назначения. Поддерживая разные парадигмы программирования, сочетает свойства как высокоуровневых, так и низкоуровневых языков.
В сравнении с его предшественником – языком C, – наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Название «C++» происходит от языка C, в котором унарный оператор ++ обозначает инкремент переменной.
Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры). Существует несколько реализаций языка C++ – как бесплатных, так и коммерческих. Их производят Проект GNU, Microsoft, Intel и Embarcadero (Borland). C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.

Содержание

Введение

5
1 Теоретические основы

8
2 Описание алгоритма программы

14
3 Описание основных функций и переменных программы

19
4 Тестирование программы

20
5 Руководство пользователя

23
Заключение

24
Библиографический список

25

Прикрепленные файлы: 1 файл

пояснительная записка норм исправ дуб 2 33.docx

— 333.86 Кб (Скачать документ)

random_shuffle(start,end) –сортирует элементы между start и end в случайном порядке

sort(start,end) - сортирует элементы от start до end в порядке возрастания

Динамическая память. Динамическое выделение памяти необходимо для эффективного использования памяти компьютера. Например, мы написали какую-то программу, которая обрабатывает массив. При написании данной программы необходимо было объявить массив, то есть задать ему фиксированный размер (к примеру, от 0 до 100 элементов). Тогда данная программа будет не универсальной, ведь может обрабатывать массив размером не более 100 элементов. А если нам понадобятся всего 20 элементов, но в памяти выделится место под 100 элементов, ведь объявление массива было статическим, а такое использование памяти крайне не эффективно. 

В С++ операции new и delete предназначены для динамического распределения памяти компьютера.  Операция new  выделяет память из области свободной памяти, а операция delete высвобождает выделенную память.  Выделяемая память, после её использования должна высвобождаться, поэтому операции new и delete используются парами. Даже если не высвобождать память явно, то она освободится ресурсами ОС по завершению работы программы..

int*ptrvalue = newint;

Операция new создает объект заданного типа, выделяет ему память и возвращает указатель правильного типа на данный участок памяти. Если память невозможно выделить, например, в случае отсутствия свободных участков, то возвращается нулевой указатель, то есть указатель вернет значение 0. Выделение памяти возможно под любой тип данных: int, float,double, char и т. д.

deleteptrvalue;

Создание  динамических массивов

 Чаще  всего операции new и delete применяются, для создания динамических массивов, а не для создания динамических переменных. Рассмотрим фрагмент кода, создания одномерного динамического массива.

float *ptrarray = new float [10];

После того как динамический массив стал ненужным, нужно освободить участок памяти, который под него выделялся.

delete [] ptrarray;

После оператора delete ставятся квадратные скобочки, которые  говорят о том, что высвобождается участок памяти, отводимый под  одномерный массив.

Так же в  программе использовались структуры.

Структура– это составной тип данных, который состоит из элементов разных типов. Объявление структуры следует рассматривать как объявление типа.

Предположим, требуется хранить информацию о  баскетболисте. Нужно хранить его  имя, зарплату, рост, вес, среднюю результативность, процент попаданий, результативных передач и тому подобное. Тогда понадобится некоторая форма данных, которая могла бы хранить всю эту информацию как единое целое. Массив здесь не подходит. Хотя массив может хранить несколько элементов, но все они должны быть одного типа. То есть один массив может хранить 20 целых чисел, а другой — 10 чисел с плавающей точкой, но он не может хранить целые значения в одних элементах и значения с плавающей точкой — в других.

Удовлетворить эту потребность в совместном хранении всей информации о баскетболисте  может структура C++. Это позволяет  унифицировать представление данных за счет сохранения всей информации, связанной с баскетболистом, в одной структурной переменной. Если вы хотите отслеживать информацию о целой команде, то можете воспользоваться массивом структур. Тип структуры — это еще и ступенька к покорению бастиона объектно-ориентированного программирования C++ - класса. Изучение структур приблизит вас к сердцу ООП на языке C++.

Структура — определяемый пользователем тип  с объявлением, описывающим свойства типа. После того, как вы определите тип, вы можете создавать переменные этого типа. То есть, создание структуры — двухфазный процесс. Во-первых, вы определяете описание структуры, перечисляющей и именующей типы данных, которые могут быть сохранены в структуре. Затем вы создаете структурные переменные, или, иначе говоря, структурные объекты данных, которые следуют плану, заданному объявлением.

struct [<имя структуры>]{

<тип  поля><индетификатор 1>;

<тип  поля><индетификатор 2>;

   …

<тип  поля><индетификатор N>;

   }[<идентификатор перемен. типа  данного шаблона>];

Пример. Объявление структуры, которая хранит сведения о журнале: название, год, номер.

struct magazin{

   char* tittle;

   int year;

   intnumber;

   };

Ниже  определена и инициализирована переменная структура mag.

magazinmag = {"Nature", 3, 1995);

Доступ  к элементам структуры осуществляется по составному имени:

<имя  структуры>.< индетификатор n>

Здесь точка  обозначает оператор выбора, а составное  имя дает еще один пример адресного  выражения.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. АЛГОРИТМ  ПРОГРАММЫ

В предоставленной программе используется интерфейс на основе меню. В качестве реализации использовалась функция  case. С помощью данной функции возможен выбор действий посредством введения номера операции. . В данном случае нужно будет сравнить одну переменную k (введенную с клавиатуры) с различными значениями и выполнить разные участки кода в зависимости от того, каково значение. Именно это поможет сделать оператор switch. Всего в программе используется  семьоператоров  switch.

  1. Вывод всех данных.
  2. Вывод данных отсортированных в алфавитном порядке.
  3. Вывод мужчин.
  4. Вывод женщин
  5. Вывод среднего роста мужчины
  6. Вывод фамилии и имени самой молодой женщины, чей рост выше среднего роста мужчин
  7. Выход из программы.

Так же для облегчения занимаемой памяти используется динамический массив, который выделает память только в  момент работы самой программы, а  не на шаге компиляции.

Вывод мужчин или женщин осуществляется с помощью проверки условия оператором if (согласно рисунку 1). Так как в структуре, принадлежность пола обозначается одним символом, применение данного способа является самым оптимальным для данного случая.

Для отборки самой молодой девушки, чей рост выше среднего роста мужчин, использовалась отдельная функция, перевода даты в десятичную систему и последующим сравнением между собой.

 Для выхода использовалась  операция return(0), которая закрывает программу.

Рисунок 1 – Блок – схема меню программы.

Рисунок 2 –  Блок – схема выбора и вывода мужчин (женщин) из списка.

Рисунок 3 – Блок схема сортировки  и вывода самой молодой женщины  чей рост вше среднего роста мужчины.

Функция minidata представляет собой перевод даты в десятичное числа. С последующим сложением и сравненем полученных дпт

Функция “minidata” требуется для сравнение  дат рождения и выявления самой  молодой девушке. В функцию передается год, день и месяц рожденияДанные переводятся всецело в десятичную систему. Путем умножения года рождения на 10000, месяца на 100 и прибавлением дня..С последующим сравниваются между собой. Процедура перехода выполняется следующим образом:

a.y*10000+a.m*100+a.d

Если  первое значение больше второго возвращается единица иначе ноль.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. ОПИСАНИЕ ВСЕХ ФУНКЦИЙ И ПЕРЕМЕННЫХ ПРОГРАММЫ.

В данной программе использовалось две функция  “comp” и “minidata”.

Функция “comp” используется для сортировки фамилий по алфавиту, путем сравнения каждой буквы  и возвращение единицы или нуля. Анна процедура помогает сортировать не только по первой букве но и по всему слову.

Так же в  програме использовались переменные типо bool для возвращения истинных или ложных значений.

 

Таблица 1 – Описание переменных

Имя

Тип

Описание переменной

t

int

Счетчик мужчин

i

Счетчик цикла

l

Счетчик цикла, подсчетколичества операций

s

Счётчик ввода операция

e

Счётчик подсчета количества мужчин

N

Хранит количества людей

q

 

Счётчик правильности ввода значений

k

 

Номер выполняемой операции

youngest_woman_no

 

Хранения номера самой молодой  женщины

higt

float

Переменная в структуре menхранящая средний рост мужчин

symm

Сумма всех мужчин

comp

bool

Возвращение 1 или 0

d

birth_date (int)

Структура хранящая даты рождения

m

y

surname

men(char)

Переменная в структуре men хранящая фамилию

name

Переменная в структуре men хранящая имя

sex

Переменная в структуре men хранящая пол


4. ТЕСТИРОВАНИЕ ПРОГРАММЫ.

Для отладки  программы производились многократные тесты.

При входе в программу, автоматически  запрашивается количество человек.

Далее программа выдает шаблон на заполнение, в котором требуется ввести:

  1. Фамилию.
  2. Имя.
  3. День рождения.
  4. Месяц рождения.
  5. Год рождения.
  6. Рост.
  7. Пол.

При вводе  даты рождения проверяются условия. Не более 31 дня в месяце, количество месяцев не превышается 12, год не менее 1930 и не более 2012.При невыполнении условия, программа выдаёт сообщение об ошибке.

Рисунок 4 - Проверка даты.

После заполнения даты, требуется ввести рост. Так же данное условие проверяется. Рост может быть не больше 250 и меньше 50 сантиметров. При неверном вводе выдается ошибка и повторный ввод роста.

 

Рисунок 5 - Проверка веденного роста.

Далее пользователь вводит пол. Данное условие не проверяется.

После заполнения шаблонов пользователь предоставляется меню.

Рисунок 6 - Меню программы.

При вводе  нужной операции выполняется соответствующее  действие.

Сортировка по алфавиту проходит по каждому символу.

Рисунок 7 - Сортировка по алфавиту.

При выполнении пункта «6», сравнение дат производиться  программно. При совпадении годов(месяца), учитывается месяц(день) рождения человека.

Рисунок 8 - Вывод самой молодой девушки, чей рост выше среднего роста мужчины.

При выводе операции «3» выводятся все данные о мужчинах. Если таковых не имеется, то выводиться сообщение об их отсутствии. Следовательно,  не выполняется пункт «6» и выводиться сообщение об отсутствии девушек, удовлетворяющих условию. Так же не выполняется пятая операция.

Рисунок 9 - Пример выполнения программы без мужчин.

 

Так же учитывается и отсутствие женщин в списке.

 

Рисунок 10 - Пример выполнения программы без женщин.

 

Если пользователь вводит неверный номер операции, выводиться сообщение об ошибке и просьба ввести его повторно.

Рисунок 11 - Вывод ошибки, при неверно введённой операции.

 

 

 

 

 

 

 

 

5. РУКОВОДСТВО  ПОЛЬЗОВАТЕЛЯ

В начале программы пользователю предлагается ввести количество человек. В данном поле не рекомендуется вводить буквенные значения. В противном случае программа работает не корректно.

Далее пользователь вводит имя и фамилию, в данном поле не имеется ни каких ограничений.

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

После пользователь вводит рост, он так же проверяется. Рост человека не более 250 и не менее 50сантиметров. Последним пунктом вводиться пол, одной буквой.

 Далее  возможна работа с базой данных. На экран выводиться меню. Пользователь  вводит номер нужной операции  и на экран выводиться отсортированная информация.

По просьбе  пользователя возможен вывод:

  1. Вывод всех данных.
  2. Вывод данных отсортированных в алфавитном порядке.
  3. Вывод мужчин.
  4. Вывод женщин
  5. Вывод среднего роста мужчины
  6. Вывод фамилии и имени самой молодой женщины, чей рост выше среднего роста мужчин
  7. Выход из программы.

При вводе неверной операции выводиться ошибка и повторный ввод. При введении символьных значений программа завершает  работу.Для выхода из программы введите «7»

ЗАКЛЮЧЕНИЕ

В современном, информационном обществе человек имеет дело с большим  количеством информации. Её нужно  обрабатывать, хранить, редактировать. Именно для этого разрабатываются  различные программные приложения, которые облегчают нашу жизнь.

В процессе выполнения курсовой работы была разработана программа на языке  программирования С++.

В ходе работы были освоены структуры, работа с базами данных а именно:

  1. сортировка по алфавиту
  2. ввод данных через клавиатуру
  3. вывод отсортированной базы данных по требованию пользователя.

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

Освоены новые библиотеки аlgorithm и windows.h. Обеспечена проверка правильности ввода данных, путем создания условий проверки через цикл for иwhile.

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

Программа адоптирована для любого пользователя. Благодаря понятному  интерфейсу программа подходит для  использования, как в домашних условиях, так и в различных предприятиях.

 

 

 

 

 

 

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1  Библиотека MSDN  [Электронный ресурс]. – Режим доступа : http://msdn.microsoft.com/ru-ru/library. – 16.05.2012.

Информация о работе Структурный шаблон, динамический массив