Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Функциональные характеристикиСтр 1 из 10Следующая ⇒
Структуры данных Данные хранятся в файле в виде строк, содержащих записи следующего формата: Фамилия Рост Размер_обуви Выполняемые функции · ввод записей из файла · сортировка по росту и размеру обуви · запись в базу данных Требования к среде эксплуатации Внимание!!! Все разделы отчета необходимо дозаполнить соответствующей текстовой, графической и математической информацией. Требования к среде разработки Постановка задачи Ставится задача проектирования базы данных " Воинское подразделение". Операции: · добавление записей · сортировка · ввод записей из базы данных · вывод записей в базу данных · поиск по полю фамилия Способ решения. Для решения поставленной задачи можно использовать технологию объектно-ориентированного программирования на языке С++ в классах с применением наследования. 4. Теоретическая справка Сведения о средствах языка программирования Математическое обеспечение методов решения Алгоритмическое обеспечение Программное обеспечение Структура программы Проект программы состоит из трех файлов: · файл sol.h – содержит объявление классов sol solp · файл sol.cpp – содержит реализацию классов · файл inherit.cpp – содержит главную функцию Структура файлов Файл sol.h Объявление классов. Класс sol. Описать назначение каждого элемента класса class sol { protected: char * f; int n; public: sol(); sol(char * st); sol(const sol & t ~sol(); void prn(); }; Класс solp. class solp: public sol { char *step; int n; public: solp(); solp(char * fi, char *stepi); ~solp(); solp(const solp & t): sol(t); void prn(); }; Файл sol.cpp //----------------------- Класс sol. Описать каждый метод/функцию в формате:
Полный текст методов приводится в приложении Файл inherit.cpp Здесь приводится описание файла Тестирование Здесь приводятся описания тестов Инструкция программисту Здесь приводятся инструкции по установке, эксплуатации и т.п. продукта Заключение Библиографический список
Приложения Приложение 1 Исходный текст программы. Файл sol.h //Класс sol class sol { protected: char * f; int n; public: sol(); sol(char * st); sol(const sol & t ~sol(); void prn(); }; Класс solp. class solp: public sol { char *step; int n; public: solp(); solp(char * fi, char *stepi); ~solp(); solp(const solp & t): sol(t); void prn(); }; Файл sol.cpp //----------------------- //Реализация класса sol sol:: sol(){}; sol:: sol(char * st) { int i; n=(int)strlen(st); for(n=0; st[n]! =0; n++); f=new char[n+1]; for(i=0; i< (n+1); i++)f[i]=st[i]; } sol:: sol(const sol & t){ int n; f=new char [n=strlen(t.f)+1]; for (int i=0; i< n; i++)f[i]=t.f[i]; } sol:: ~sol(); {delete []f; } void sol:: prn(); {cout< < f; } //--------------------- //Реализация класса solp solp:: solp(){}; solp:: solp(char * fi, char *stepi): sol(fi) { int i; n=(int)strlen(stepi); for(n=0; stepi[n]! =0; n++); step=new char[n+1]; for(i=0; i< (n+1); i++)step[i]=stepi[i]; } solp:: ~solp(){delete []step; }; solp:: solp(const solp & t): sol(t) { int i; n=(int)strlen(t.step); step=new char[n+1]; for(i=0; i< (n+1); i++)step[i]=t.step[i]; } void solp:: prn(){ sol:: prn(); cout< < " " < < step; } }; Файл inherit.cpp #include " stdafx.h" #include < string> #include < iostream> using namespace std; #include " sol.h" void f00(solp t){ cout< < " \nf00 "; t.prn(); } int main(int argc, char* argv[]) { solp s1(" john", " efr" ); solp s2(" smith", " serg" ); s1.prn(); f00(s2); return 0; } Проект Здесь привести проект решения Приложение 2 Результаты тестирования Тест 1. Входной файл in.txt Содержимое файла. Выходной файл out.txt Содержимое файла. Тест 2. ... Лабораторная работа № 2. Цель работы Освоить средства создания циклов различных типов в программах на C++ и операторов управления потоком команд. Теоретические сведения Оператор цикла while Для организации повторения, управляемого счетчиком, требуется задать: · Имя управляющей переменной (или счетчика циклов). · Приращение (или уменьшение), на которое изменяется управляющая переменная в каждом цикле. · Условие проверки, не достигнуто ли конечное значение управляющей переменной (т.е. надо ли продолжать циклы). Рассмотрим простую программу, которая выводит на консоль числа от 1 до 10: // повторение, управляемое счетчиком #include < iostream.h> main() { int counter = 1; // задание начального значения while(counter < = 10) { // условие повторения count < < counter < < endl; ++counter; // увеличение } return 0; } Вывод. 1 2 3 4 5 6 7 8 9 10 Объявление int counter = 1; определяет имя управляющей переменной (counter), объявляет переменную как целую, резервируя для нее соответствующее место в памяти, и задает ее начальное значение 1. Объявления, в которых задается начальное значение, являются фактически выполняемыми операторами. Это объявление и задание начального значения переменной counter можно было бы сделать операторами int counter; counter = 1; Здесь само объявление не является выполняемым оператором, а присваивание осуществляется отдельным оператором. Можно использовать оба эти метода для задания начальных значений переменных. Оператор ++counter увеличивает счетчик на 1 при каждом выполнении цикла. Условие продолжения цикла в структуре while проверяет, меньше или равно значение управляющей переменной числа 10 (последнего значения, при котором условие истинно). Заметьте, что тело этой структуры while выполняется и при значении управляющей переменной, равном 10. Выполнение цикла заканчивается, когда значение управляющей переменной превысит 10 (т.е. переменная counter станет равной 11). Программа может быть сделана более компактной, если переменной counter задать начальное значение 0 и заменить структуру while следующей: while(++counter < = 10) cout < < counter < < endl; Этот код экономит один оператор, поскольку инкремент выполняется непосредственно в условии структуры while до того, как это условие проверяется. Этот код также устраняет скобки, заключающие в себе тело while, поскольку теперь while содержит всего один оператор. Кодирование в подобной сжатой манере дается практикой. Поскольку числа с плавающей запятой являются приближенными, контроль количества выполнений цикла с помощью переменной с плавающей запятой может приводить к неточному значению счетчика и неправильному результату проверки условия окончания. В таких случаях в операцию сравнения следует закладывать некоторое отклонение, например, следующим образом: #define delta 0.00001 Double a, b; ... If(abs(a – b) < delta) Count < < “Значения равны” < < endl; ... Оператор цикла for Структура повторения for содержит все элементы, необходимые для повторения, управляемого счетчиком. Чтобы проиллюстрировать мощь структуры for, перепишем программу. // Повторение, управляемое счетчиком, со структурой for #include < iostream.h> main() { // задание начального значения, условие повторения и // приращение – включено в заголовок структуры for for(int counter = 1; counter < = 10; counter++) cout < < counter < < endl; return 0; } Когда структура for начинает выполняться, управляющей переменной counter задается начальное значение 1. Затем проверяется условие продолжения цикла counter < = 10. Поскольку начальное значение counter равно 1, это условие удовлетворяется, так что оператор тела структуры печатает значение counter, равное 1. Затем управляющая переменная counter увеличивается на единицу в выражении counter++ и цикл опять начинается с проверки условия его продолжения. Поскольку значение counter теперь 2, предельная величина не превышена, так что программа снова выполняет тело цикла. Этот процесс продолжается, пока управляющая переменная counter не увеличится до 11 — это приведет к тому, что условие продолжения цикла нарушится и повторение прекратится. Выполнение программы продолжится с первого оператора, расположенного после структуры for (в данном случае с оператора return в конце программы). Структура for «делает все» — она определяет каждый элемент, необходимый для повторения, управляемого счетчиком с управляющей переменной. Если в теле for имеется более одного оператора, то для определения тела цикла требуются фигурные скобки. Отметим, что используется условие продолжения цикла counter < = 10. Если программист некорректно напишет counter < 10, то цикл выполнится всего 9 раз. Это типичная логическая ошибка, называемая ошибкой занижения (или завышения) на единицу. Использование конечного значения управляющей переменной в условиях структур while и for и использование операции отношения < = поможет избежать ошибок занижения на единицу. Например, для цикла, используемого при печати чисел от 1 до 10 условие продолжения цикла следует записать counter < = 10, а не counter < 10 (что является ошибкой занижения на единицу) или counter < 11 (что тем не менее корректно). Общая форма структуры for: Популярное:
|
Последнее изменение этой страницы: 2016-05-03; Просмотров: 662; Нарушение авторского права страницы