Объектно-ориентированное программирование в C++

Программа по организации заполнения массива объектов приложения из внешнего файла данных формата csv. Описание модуля Def.h, Plant.h и Main.cpp. Контрольный пример работы программы. Рассмотрение передачи неправильного имени файла в качестве параметра.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 27.01.2013
Размер файла 567,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Содержание

  • Введение
  • 1. Обзор средств реализации курсового проекта
  • 2. Описание программного комплекса
    • 2.1 Структура программного комплекса
    • 2.2 Описание модуля Def.h
    • 2.3 Описание модуля Plant.h
    • 2.4 Описание модуля Main.cpp
  • 3. Описание работы программы по контрольному примеру
    • 3.1 Вызов программы без параметров
    • 3.2 Вызов программы только с именем файла в качестве параметра, командой `v`
    • 3.3 Вызов программы с командой `r`
    • 3.4 Передача неправильного имени файла в качестве параметра
  • Заключение
  • Список использованных источников
  • Приложение

Введение

Целью данной работы является научиться управлять массивами объектов посредством средств объектно-ориентированного программирования.

В ходе работы необходимо создать программный комплекс, по обработке заданного множества данных.

Множество данных представляет собой массив объектов, описание которых находиться в файле формата CSV. В данном варианте это массив, описывающий производственные предприятия города. Для каждой записи должны быть определены три поля данных:

- количество сотрудников (integer);

- название (string);

- занимаемая площадь в гектарах (real).

Во время выполнения приложение должно выполнять следующие действия:

- загрузка массива из текстовых файлов в формате CSV (данные, разделенные символом ";", причем одна строка задает один элемент массива);

- просмотр всех элементов массива (один элемент на одной строке);

- получение отчета по количеству числовых значений, находящихся в заданном диапазоне.

Условия и ограничения на выполнение задания:

- Использование объектно-ориентированного подхода при проектировании приложения обязательно.

- Все поля классов, описывающих элементы множества данных, - private (за исключением констант).

- Классы для элементов множества данных должны содержать конструкторы следующих видов: а) конструктор без параметров, очищающий переменные объекта класса; б) конструктор, инициализирующий все переменные класса, значениями, заданными в качестве параметра; в) конструктор приведения из строки символов (поля класса, разделенные символом ";");

- Исходный файл является корректным.

- Интерфейс разработанных классов продемонстрировать в форме консольного приложения.

- Выводить отчеты в виде таблицы (одна запись - одна строка таблицы).

1. Обзор средств реализации курсового проекта

Для разработки программы использован язык C++.

Язык возник в начале 1980-х годов, когда сотрудник фирмы Bell Laboratories Бьёрн Страуструп придумал ряд усовершенствований к языку С под собственные нужды. До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. В 1998 году был ратифицирован международный стандарт языка C++: ISO/IEC 14882:1998 "Standard for the C++ Programming Language"; после принятия технических исправлений к стандарту в 2003 году -- нынешняя версия этого стандарта -- ISO/IEC 14882:2003.

Ранние версии языка, известные под именем "C с классами", начали появляться с 1980 года. Идея создания нового языка берёт начало от опыта программирования Страуструпа для диссертации. Он обнаружил, что язык моделирования Simula имеет такие возможности, которые были бы очень полезны для разработки большого программного обеспечения, но работает слишком медленно. В то же время язык BCPL достаточно быстр, но слишком близок к языкам низкого уровня и не подходит для разработки большого программного обеспечения. Страуструп начал работать в Bell Labs над задачами теории очередей (в приложении к моделированию телефонных вызовов). Попытки применения существующих в то время языков моделирования оказались неэффективными. Вспоминая опыт своей диссертации, Страуструп решил дополнить язык C (преемник BCPL) возможностями, имеющимися в языке Симула. Язык C, будучи базовым языком системы UNIX, на которой работали компьютеры Bell, является быстрым, многофункциональным и переносимым. Страуструп добавил к нему возможность работы с классами и объектами. В результате, практические задачи моделирования оказались доступными для решения как с точки зрения времени разработки (благодаря использованию Симула-подобных классов) так и с точки зрения времени вычислений (благодаря быстродействию C). В начале в C были добавлены классы (с инкапсуляцией), производные классы, строгая проверка типов, inline-функции и аргументы по умолчанию.

Разрабатывая C с классами (позднее C++), Страуструп также написал программу cfront -- транслятор, перерабатывающий исходный код C с классами в исходный код простого C. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов.

В 1983 году произошло переименование языка из C с классами в C++. Кроме того, в него были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Его первый коммерческий выпуск состоялся в октябре 1985 года. В 1985 году вышло также первое издание "Языка программирования C++", обеспечивающее первое описание этого языка, что было чрезвычайно важно из-за отсутствия официального стандарта. В 1989 году состоялся выход C++ версии 2.0. Его новые возможности включали множественное наследование, абстрактные классы, статические функции-члены, функции-константы и защищённые члены.

В 1990 году вышло "Комментированное справочное руководство по C++", положенное впоследствии в основу стандарта. Последние обновления включали шаблоны, исключения, пространства имён, новые способы приведения типов и булевский тип.

Стандартная библиотека C++ также развивалась вместе с ним. Первым добавлением к стандартной библиотеке C++ стали потоки ввода/вывода, обеспечивающие средства для замены традиционных функций C printf и scanf. Позднее самым значительным развитием стандартной библиотеки стало включение в неё Стандартной библиотеки шаблонов.

Никто не обладает правами на язык C++, он является свободным. Однако сам документ стандарта языка (за исключением черновиков) не доступен бесплатно.

В качестве инструмента для создания исполняемого файла используется среда разработки Borland C++ 3.1. Внешний вид данной оболочки представлен на рис. 1.

В связи с неудобным и ограниченным по функциональным возможностям встроенным редактором среды Borland C++, в сравнении с более современными средствами редактирования, для подготовки и редактирования файлов программных модулей использован редактор Notepad++.

Notepad++, по сравнению со встроенным редактором среды Borland C++, имеет более широкие возможности по обеспечению удобства редактирования кода программ. Такие, например, как настраиваемая подсветка синтаксиса, подсветка парных скобок, режим автозавершения слов или имен функций, режим подсказки параметров стандартных функций и процедур, сворачивание блоков кода. Пример работы программы Notepad++ приведен на рис. 2.

Рисунок 1 - Внешний вид оболочки Borland C++ 3.1

Рисунок 2 - Пример работы программы Notepad++

массив модуль программа файл

Программа в готовом к применению (откомпилированном) виде представляет собой исполняемый файл plant.exe.

2. Описание программного комплекса

2.1 Структура программного комплекса

Программный комплекс состоит из 3-х программных файлов:

Def.h- описание макроконстант программы

Plant.h- описание базового класса Plant, используемого для организации и управления массивом данных.

Main.cpp- главный программный модуль, содержащий описание глобальных переменных и реализацию основной исполняемой в C++ функции main.

2.2 Описание модуля Def.h

В данном модуле содержится определение глобальных макроконстант приложения:

MAX_NAME - максимальная длина названия предприятия, установлена размером в 30 символов

MAX_PLANT - наибольшее доступное количество элементов в массиве установлено в 100 элементов.

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

2.3 Описание модуля Plant.h

Модуль программы Plant.h содержит описание базового класса Plant.

В состав класса входят 3 private свойства:

int WorkCnt;- к-во рабочих на предприятии

char *pName;- указатель на строку с наименованием предприятия

double pArea;- занимаемая площадь

три конструктора класса:

plant();- конструктор без параметров

plant(int, const char*, double);- конструктор с параметрами

plant(const char*); - конструктор приведения из строки символов

Конструктор без параметров создает новый экземпляр объекта класса, заполняя его свойства нулевыми (для числовых) или пустыми (для символьных) значениями.

Конструктор с параметрами создает экземпляр класса и заполняет его свойства значениями, переданными конструктору в следующем порядке: количество_рабочих, наименование, площадь. Конструктор приведения из строки символов создает новый экземпляр класса, заполняя его свойства значениями, вычлененными из строки символов, переданной данному конструктору. Строка символов, передаваемая конструктору, должна соответствовать правильному формату CSV строки описывающей один отдельный элемент массива предприятий. Разделителем значений строки является знак точка с запятой - ";". Последовательность передаваемых значений CSV строки должна соответствовать следующему порядку: количество_рабочих; наименование; площадь. Во всех конструкторах используется оператор new для динамического выделения блока оперативной памяти размером MAX_NAME байт под наименования предприятия.

Деструктор класса ~plant(). Деструктор не получает никаких параметров, служит для удаления экземпляра класса из оперативной памяти компьютера. В ходе работы деструктора используется оператор delete для освобождения памяти, выделенной ранее оператором new под строку наименования предприятия.

Методы-геттеры класса возвращают значения связанных с ними параметров экземпляра класса:

int getWorkCnt(void) - связан с WorkCnt, возвращает количество рабочих на предприятии;

const char *getPName(void) - связан с PName, возвращает константную ссылку на начало области оперативной памяти отведенной под наименование предприятия;

double getPArea(void) - связан с PArea, возвращает занимаемую предприятием площадь.

Методы-геттеры класса не принимают никаких значений.

Методы-сеттеры класса присваивают новые значения связанным с ними свойствам экземпляра класса:

void setWorkCnt(int) - связан с WorkCnt, устанавливает новое количество рабочих

void setGetPName(const char*) - связан с PName, копирует в область памяти, отведенную под наименование организации, строковое значение, расположенное по константной ссылке переданной в метод.

void setPArea(double) - связан с PArea, устанавливает новое значение для занимаемой площади.

Методы-сеттеры не возвращают никаких значений.

2.4 Описание модуля Main.cpp

Main.cpp - основной компилируемый модуль программы. Содержит определение глобальных переменных программы, код главной функции main, прочие сервисные процедуры и функции приложения.

В данном модуле есть два глобальных объявления:

plant *plants[MAX_PLANT]; - ссылка на массив объектов типа plant с максимальным размером MAX_PLANT элементов;

int plantCnt=0; - счетчик текущего количества элементов в массиве с первоначальной инициализацией его в 0.

Предварительное объявление и описание следующих методов программы:

void ShowHelp(void); - процедура вывода краткой справочной информации и используемых параметрах вызова программы.

int LoadFromFile(const char*); - функция чтения файла данных и заполнения массива элементов, описывающих предприятия города. В случае возникновения ошибок в момент чтения данных - отображает на экране сообщение об ошибке, возвращает -1. В случае успеха - возвращает количество прочитанных и заполненных элементов массива.

void waitKey(void); - сервисная процедура, используемая для организации ожидания реакции пользователя после какого-либо вывода информации на экран. Необходима, для того, чтобы дать пользователю возможность и время для ознакомления с результатами работы программы выведенными на экран.

void ShowData(void); - выводит на экран информацию об элементах массива в виде таблицы порциями по LINES_TO_PRINT строк. После каждого вывода просит подтверждение путем нажатия клавиши.

void ShowReport(void); - вычисляет общие и средние численность и площадь предприятий из массива данных. Выводит на экран количество предприятий в массиве, а также результаты вычислений в виде таблицы на экран.

Так как приложение является консольным - вызов функции main должен производится с параметрами:

void main(int argc, char *argv[]).

В зависимости от переданных при запуске параметров зависит дальнейшее поведение программы. Внутри функции main производится анализ переданных значений и вызов соответствующих сервисных функций с последующим выводом информации и/или служебных сообщений о ходе выполнения программы. В самом начале выполнения функция main проверяет количество переданных ей параметров, если запуск осуществлен с пустой строкой в качестве параметра (argc==1), то функция вызывает процедуру ShowHelp(), отображающую справочную информацию о порядке работы с программой и завершает выполнение. Если параметров больше чем один (первый- всегда путь и имя вызываемой программы) - пытаемся открыть файл, имя которого должно быть передано в качестве второго параметра. При неуспехе данной операции - завершаем выполнение программы:

if (argc>1) if (LoadFromFile(argv[1])<0) exit(0);

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

if (plantCnt==0){ cout << "В файле нет данных!" << endl; waitKey(); exit(0); }

После того как все вышеописанные проверки были проведены, файл успешно открыт и данные прочитаны - производится проверка на наличие и состав дополнительных параметров. Несмотря на то, что в спецификации указывается два действующих параметра, при выполнении программного кода действительная проверка производится только для одного r[eport]. Во остальных случаях (параметр принимает любые возможные значения отличные от `r' или вообще отсутствует) считается, что программе передан параметр `v'.

if (argc>2) if (argv[2][0]=='r') ShowReport(); else ShowData(); else ShowData();

3. Описание работы программы по контрольному примеру

Программа plant.exe является консольным приложением, обрабатывающим данные из специально подготовленного файла формата CSV.

Для проверки работоспособности программы будет подготовим в программе Notepad++ типизированный файл данных data.csv (см. рис. 3) следующего содержания:

500;Агрофирма ОАО;28

450;ЧПУП РемБытЧтоНибудьСтрой;20

50;ОДО Рост;15

3;ООО Рога и Копыта;10

150;Плюшкин & Ко;25.5

154;Завод ЖБИ №15;140.58

25;магазин "Ромашка";2.1

250;ЗАО Артемий;4

180;ЖСПК-25;5.2

43;Ляськи-Масяськи Ltd;16

452;Кирпичный завод №3;76.7

15;автомастерская;1.8

Рисунок 3 - Типизированный файл данных data.csv

При вызове программы ей через командную строку необходимо передать параметры в следующей последовательности:

plants.exe [<файл> [команда]], где:

файл - имя файла, для которого осуществляется обработка

команда - параметр команды, определяющий действие, которое необходимо выполнить с файлом данных. В качестве параметра команды могут быть переданы символы `v' или `r'.

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

Команда v[iew] служит для отображения информации, содержащейся в файле на экране в виде таблицы.

Команда r[eport] используется для расчета отчетных данных по информации, содержащейся в файле и выводе отчета на экран.

Вызов приложения без параметров выведет справочную информацию об использовании приложения. Запуск программы только с именем файла расценивается как вызов команды v[iew], таким же образом обрабатывается и вызов приложения с командой отличной от представленных `v' и 'r'.

3.1 Вызов программы без параметров

Командная строка: c:\>plant.exe

Рисунок 4 - Пример выполнения plant.exe

При вызове программы без указания параметров на экран выводится краткая справочная информация об использовании параметров командной строки приложения. Пример выполнения plant.exe без параметров приведен на рис. 4.

Нажатие клавиши на клавиатуре закроет приложение.

3.2 Вызов программы только с именем файла в качестве параметра, командой `v`

Вызов программы только с именем файла или командой `v` активирует режим просмотра информации. Пример работы такого вызова представлен на рис. 5.

Командная строка: c:\>plant.exe data.csv

Рисунок 5 - Вызов программы только с именем файла или командой `v`

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

3.3 Вызов программы с командой `r`

Запуск приложения с командой r[eport] иницирует чтение данных из файла в массив и выполнение статистических расчетов по числовым значениям распознанных объектов. В представленной программе расчитываются общие суммы и средние значения численности предприятий и занимаемой ими площади. После расчета на экран будет выведено количество предприятий в массиве и расщитанные статистические величины. Пример выполнения приведен на рис. 6.

Рисунок 6 - Командная строка: c:\>plant data.csv r

3.4 Передача неправильного имени файла в качестве параметра

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

Командная строка: c:\>plant.exe wrong.csv v

Рисунок 7 - Передача неправильного имени файла в качестве параметра

Заключение

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

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

Список использованных источников

1 Б. Керниган, Д. Ритчи. Язык программирования С [Текст]: учебное пособие / Б. Керниган - М.: Москва-С.-Петербург-Киев, 2009.-292 с.

2 Айра Пол. Объектно-ориентированное программирование на C++ [Текст]: учебное пособие / Айра Пол - М.: . Бином, 2001.-464 с.

4 Эккель Брюс. Философия С++ .Введение в стандартный С++ [Текст]: учебное пособие / Эккель Брюс - М.: Питер, С.-Петербург, 2004.-572 с.

5 Р. Лафоре. Объектно-ориентированное программирование в C++ [Текст]: учебное пособие / Р. Лафоре - М.: Питер, С.-Петербург, 2004.-928 с.

Приложение

Модуль def.h

Исходный код файла def.h

// Заголовочный файл

#define MAX_NAME30

#define MAX_PLANT100

#define LINES_TO_PRINT10

Модуль plant.h

Исходный код файла plant.h

// описание класса plant

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

#include <stdlib.h>

#include <string.h>

#include "Def.h"

class plant{

int WorkCnt; // к-во рабочих

char *pName; // наименование

double pArea; // пллощадь

public:

// конструкторы

plant();

plant(int, const char*, double);

plant(const char*);

// деструктор

~plant();

// Gets

int getWorkCnt(void);

const char *getPName(void);

double getPArea(void);

// Set

void setWorkCnt(int);

void setGetPName(const char*);

void setPArea(double);

};

// пустой конструктор

plant::plant(){

WorkCnt = 0;

pName = new char[MAX_NAME];

pName[0] = '\x0';

pArea = 0;

}

// конструктор с заполнением

plant::plant(int wc, const char *pn, double pa){

WorkCnt = wc;

pName = new char [MAX_NAME];

strcpy(pName, pn);

pArea = pa;

}

// конструктор по строке

plant::plant(const char *strCSV){

char *ptr1, *ptr2, *tmp, *csv;

WorkCnt = 0;

pName = new char [MAX_NAME];

pName[0] = '\x0';

pArea = 0;

csv = new char [strlen(strCSV)+1];

tmp = new char [strlen(strCSV)+1];

strcpy(csv, strCSV);

ptr1 = strchr(csv, ';');

if (ptr1==0) return;

strncpy(tmp, csv, ptr1-csv);

tmp[ptr1-csv] = '\x0';

WorkCnt = atoi(tmp);

ptr1++;

ptr2 = strchr(ptr1, ';');

if (ptr2==0) return;

strncpy(tmp, ptr1, ptr2-ptr1);

tmp[ptr2-ptr1] = '\x0';

strcpy(pName, tmp);

ptr2++;

strcpy(tmp, ptr2);

pArea = atof(tmp);

delete [] csv;

delete [] tmp;

}

plant::~plant(){

delete [] pName;

}

// Get section

int plant::getWorkCnt(void){ return WorkCnt; }

const char *plant::getPName(void){ return pName; }

double plant::getPArea(void){ return pArea; }

// Set section

void plant::setWorkCnt(int wc){ WorkCnt = wc; }

void plant::setGetPName(const char *pn){ strcpy(pName, pn); }

void plant::setPArea(double pa){ pArea = pa; }

Модуль main.cpp

Исходный код файла main.cpp/

// Предприятия города

// основной модуль

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

#include <stdlib.h>

#include <string.h>

#include <iostream.h>

#include <iomanip.h>

#include "Def.h"

#include "Plant.h"

plant *plants[MAX_PLANT]; // массив

int plantCnt=0; // счетчик

// описалово процедур и функций

void ShowHelp(void);

int LoadFromFile(const char*);

void waitKey(void);

void ShowData(void);

void ShowReport(void);

void main(int argc, char *argv[])

{

if (argc==1){

ShowHelp();

exit(0);

}

if (argc>1)

if (LoadFromFile(argv[1])<0)

exit(0);

if (plantCnt==0){

cout << "В файле нет данных!" << endl;

waitKey();

exit(0);

}

if (argc>2)

if (argv[2][0]=='r')

ShowReport();

else

ShowData();

else

ShowData();

}

/* Процедуры и функции */

void waitKey(void){

cout << endl << "Нажмите клавишу...";

while(!kbhit());

getch();

}

// показать справку

void ShowHelp(void){

cout << endl;

cout << "plants - параметры командной строки:" << endl;

cout << "plants.exe [<file> [command]]" << endl;

cout << " <file> - имя CSV-файла (указывать с расширением)" << endl;

cout << " [command] - выполняемая команда:" << endl;

cout << " v - просмотр записей файла (по умолчанию)" << endl;

cout << " r - вывод отчета по предприятиям из <file>" << endl;

waitKey();

}

// заполнение массива из файла

int LoadFromFile(const char *fn){

FILE *fl;

char *csv;

csv = new char[200];

if ((fl=fopen(fn, "r"))==0){

cout << "Ошибка чтения файла!" << endl;

waitKey();

return -1;

}

while (!feof(fl))

if (fgets(csv,200,fl) != NULL)

if (plantCnt < MAX_PLANT)

plants[plantCnt++] = new plant(csv);

fclose(fl);

delete [] csv;

return plantCnt;

}

void ShowData(void){

int notEnd=1, scrPos, listIndex=0, lastShow;

cout.precision(2);

while (notEnd){

clrscr();

scrPos = 0;

if (listIndex+LINES_TO_PRINT < plantCnt)

lastShow = listIndex+LINES_TO_PRINT;

else

lastShow = plantCnt;

cout << "Список предприятий: " << listIndex+1 << " - " << lastShow <<endl;

cout << "--------------------------------------------------------------------" << endl;

cout << " НАИМЕНОВАНИЕ | К-во сотрудников | Площадь " << endl;

cout << "--------------------------------------------------------------------" << endl;

while (scrPos < LINES_TO_PRINT){

cout << setiosflags(ios::left) << setw(30) << plants[listIndex]->getPName() << "|";

cout << setiosflags(ios::right) << setw(20) << plants[listIndex]->getWorkCnt() << "|";

cout << setiosflags(ios::right | ios::fixed |ios::showpoint) << setw(15) << plants[listIndex++]->getPArea() << endl;

if (listIndex < plantCnt)

scrPos++;

else{

notEnd=0;

scrPos = LINES_TO_PRINT;

}

}

cout << "--------------------------------------------------------------------" << endl;

waitKey();

}

}

void ShowReport(void){

int i;

double midCnt=0, fullArea=0;

clrscr();

for(i=0; i<plantCnt; i++){

midCnt += plants[i]->getWorkCnt();

fullArea += plants[i]->getPArea();

}

cout.precision(2);

cout << "Статистическая информация о предприятиях:" << endl;

cout << " кол-во: " << plantCnt << endl;

cout << "-----------------------------------------" << endl;

cout << " *** | численность | площадь " << endl;

cout << "-----------------------------------------" << endl;

cout << " средняя | ";

cout << setiosflags(ios::right | ios::fixed |ios::showpoint) << setw(13) << midCnt/plantCnt;

cout << " | ";

cout << setiosflags(ios::right | ios::fixed |ios::showpoint) << setw(13) << fullArea/plantCnt << endl;

cout << " общая | ";

cout << setiosflags(ios::right | ios::fixed |ios::showpoint) << setw(13) << midCnt;

cout << " | ";

cout << setiosflags(ios::right | ios::fixed |ios::showpoint) << setw(13) << fullArea << endl;

cout << "-----------------------------------------" << endl;

waitKey();

}

Размещено на Allbest.ru


Подобные документы

  • Описание данных, используемых при решении задачи. Структура программного модуля. Составление блок-схемы процедуры заполнения класса ZapisBook из текстового файла. Описание разработанной программы для упрощения работы с электронной записной книжкой.

    курсовая работа [687,2 K], добавлен 03.10.2013

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

    реферат [14,5 K], добавлен 06.12.2011

  • Реализация программы-конвертера для создания на основе передаваемых dbf файлов файла формата XML (по заданному пользователем шаблону). Создание шаблонов при помощи кода и при помощи конструктора. Проектирование архитектуры программного продукта.

    дипломная работа [1,6 M], добавлен 27.06.2013

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

    курсовая работа [254,6 K], добавлен 26.01.2013

  • Описание разрабатываемой программы с точки зрения пользователя. Диаграмма вариантов использования приложения. Объектное представление программы. Разработка класса корабля, прикладного окна и события but. Окно приложения с перемещающимися кораблями.

    курсовая работа [207,0 K], добавлен 05.04.2014

  • Описание типизированных файлов. Принципы работы с файлами, создание и открытие на запись нового файла. Чтение из файла, открытие существующего файла на чтение. Определение имени файла. Запись в текстовый файл. Описание множества и операции над ними.

    реферат [86,4 K], добавлен 07.02.2011

  • Алфавит, операторы языка С#. Понятие классов и объектов, модификаторы. Структура программного модуля. Практический пример заполнения матрицы. Программа нахождения первого отрицательного члена заданной последовательности, контрольный пример и блок-схема.

    курсовая работа [1,4 M], добавлен 04.01.2015

  • Создание приложения по выбору варианта заполнения прямоугольной матрицы: случайными числами или из текстового файла. Идентификаторы метода "main". Расчет количества столбцов, содержащих хотя бы один нулевой элемент. Инструкция по работе с программой.

    курсовая работа [563,8 K], добавлен 28.10.2014

  • Структура записей входного массива. Описание основных типов данных. Алгоритм программы: присвоение начальных значений переменных, чтение списка из файла, вывод данных на экран, выполнение обработки данных, сохранение списка в файл. Листинг программы.

    курсовая работа [325,2 K], добавлен 28.12.2012

  • Алгоритм и код программы для создания исходного двоичного файла чисел с произвольным количеством элементов, чтения из файла действительных восьмибайтных элементов и подсчёта общего количества элементов файла. Вывод результата работы программы на экран.

    контрольная работа [1,0 M], добавлен 23.11.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.