МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Функции - члены класса и дружественные функции.





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

1.1 Введение в классы

1.2 Перегрузка функций

1.3 Перегрузка операторов

1.4 Пример решения задачи (вар. 17 лаб.10).

Составить программу, в которой будут вводиться 7 - 10 строк таблицы, образец которой приведен в Вашем варианте индивидуального задания к лабораторной работе № 10 и выводится на экран таблица - сразу же после ввода и после сортировки ее по значениям в первом столбце. Программа должна быть составлена с использованием класса, необходимо предусмотреть функции доступа к полям класса (функции get() и set()) и необходимо перегрузить следующие операторы:

  • Присваивание;
  • Сложение (в случае символьных полей сложение понимается как конкатенация);
  • Соответствие;
  • Потоковый ввод;
  • Потоковый вывод.

Разработка алгоритма решения.

Алгоритм решения, приведенный на рисунке ниже, является типовым алгоритмом обработки массива, элементами которого являются описания монастырей.

Алгоритм начинается с ввода значений элементов этого массива. Ввод происходит в цикле со счетчиком n, который изменяется от 0 до 9 (блок 2), но как мы увидим ниже, выход из цикла может происходить и до того, как счетчик достигнет последнего значения. В каждой итерации циклу выводится приглашение (блок 3) и вводятся значения составных частей описания монастыря (блоки 4, 6, 7, 8). Но сразу же после ввода первой составляющей - названия - проверяется ее значения (блок 5). Если введено название "***", то дальнейшего ввода не происходит, а сразу выполняется выход из цикла. В любом случае после выхода в переменной n остается количество введенных элементов. Таким образом, программа может обрабатывать массив из 10 или меньше элементов - сколько их было введено. Признаком конца ввода является название "***".

Далее печатаем заголовок таблицы (блок 9) и в цикле (блоки 10, 11) - строки таблицы с данными. Поскольку параметр этого цикла изменяется от 0 до n-1, будет напечатано n строк.

Следующий сложный цикл реализует сортировку таблицы по алгоритму простой обменной выборки. Сортировка выполняется с помощью вложенного цикла (блок 12). В первой итерации внешнего цикла выполняется поиск элемента массива с минимальным значением поля name. Для этого сначала минимальным элементом считается первый элемент (блок 13). Потом в цикле (блок 14) пересматриваются остальные элементы массива, и каждый сравнивается с минимальным (блок 15). Если поле name очередного элемента меньше, чем минимального, то теперь этот элемент считается минимальным (блок 16). Индекс минимального элемента записывается в переменную m. После выхода из внутреннего цикла, если найденный минимальный элемент не первый (блок 17), то он меняется местами с первым (блок 18). Таким образом, минимальный элемент массива становится на свое место. В следующей итерации внешнего цикла выполняется поиск минимума среди элементов массива, начиная со второго, в третьей - начиная с третьего и т.д. После выхода из внешнего цикла массив оказывается отсортированным.

Вывод отсортированного массива (блоки 19 - 21) происходит точно так же, как и вывод начального массива (блоки 9 - 11).

Описание структуры класса.

Описание полей класса.

Для выполнения условий задания нам потребуется класс с функциями-аксессорами из предыдущей лабораторной работы. Напомним, что класс, описывающий Буддистские монастыри Японии имеет следующие поля:



  • Название. - char * .
  • Школа . Тип этого поля претерпел изменения, вызванные новыми условиями. На первый взгляд, тип этого поля можно оставить прежним - char . Но на самом деле оказывается, что для выполнения перегрузки оператора суммы и корректного выполнения программы, тип данного поля необходимо определить как char * . Это можно объяснить тем, что при перегрузке оператора суммы необходимо произвести конкатенацию символьных полей. Таким образом при сложении полей хотя бы двух экземпляров класса для хранения данных поля Школа потребуется уже не char , а char[1] .
  • Количество монахов. - unsigned int.
  • Площадь земли. - float.

Функции - члены класса и дружественные функции.

Класс church имеет следующие функции-члены:

  • void set(char *a,char *b,unsigned int ,float );
  • void get(char *a, char *b, unsigned int &c, float &d);
  • void show(void);
  • church operator = (church &o1);
  • int operator == (church &o1);
  • church operator + (church &o1);

    а также два конструктора - по умолчанию и инициализирующий:
  • church() { square=0; count=0;}
  • church(char *a, char *b, unsigned int &c, float &d);


Класс church имеет следующие дружественные функции:

  • friend ostream & operator<<(ostream &stream, church &o1);
  • friend istream & operator>>(istream &stream, church &o1);
  • friend void shapka(void);
  • friend void linebuild(void);
  • friend int isvalid(int a, int b);




©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.