![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Добавление новых файлов в проект в среде разработки Visual Studio 2008Содержание книги
Поиск на нашем сайте
Для добавления новых файлов в проект новых файлов в проект необходимо вызвать контекстное меню над именем проекта в «Проводнике решений» (Solution Explorer) (см. рисунок 13.1) и далее выбрать раскрывающийся пункт «Добавить» (Add). В нем нас на текущий момент будут интересовать два подпункта “New Item …” (Новый объект) и “Exiting Item …” (Существующий объект). Первый создает новый файл, одного из предложенных типов, а второй добавляет к проекту уже существующий. Диалоговое окно с вариантами доступных для создания файлов представлено на рисунке 13.2. Результат добавления файлов в проект представлен на рисунке 13.3. Теперь достаточно воспользоваться директивой #include для использования функций, констант и типов данных, располагающихся в новых файлах. Рисунок 13.1 – Добавление нового файла в проект
Рисунок 13.2 – Диалоговое окно выбора типа добавляемого файла
Рисунок 13.3 – Результат добавления новых файлов в проект
Пример работы с многофайловыми проектами Разберем работу с многофайловыми проектами на примере задачи из предыдущей лабораторной работы.
Пример: Нахождение расстояния между точками Задание. Написать программу, которая находит расстояние между двумя точками. Координаты могут задаваться как в декартовой, так и в полярной системе координат. Предусмотреть функции перевода из декартовой системы в полярную и обратно.
Алгоритм решения: - Задать или ввести с клавиатуры координаты точек. - Для пары точек определить расстояние по одной из формул: o для декартовой системы: o для полярной системы: - Вывести результаты на экран.
Определение требуемых типов данных.
Для удобства хранения информации о координате точки в одной из систем координат удобно воспользоваться структурами, хранящими пары координат одной и той же точки. Для простоты назовем их cartesian для декартовой, и polar для полярной системы координат.
Разбиение на подзадачи.
В результате описанного алгоритма и задания определяем спецификации нужных нам функций. Для удобства использования воспользуемся перегрузкой: 1. double len(cartesian a, cartesian b) – принимает две координаты в декартовой системе и возвращает длину. 2. double len(polar a, polar b) – принимает две координаты в полярной системе и возвращает длину.
3. double len(cartesian a, polar b) – принимает первую координату в декартовой системе, а вторую в полярной, и возвращает длину.
4. double len(polar a, cartesian b) – принимает первую координату в полярной системе, а вторую в декартовой, и возвращает длину. 5. polar cartesian_to_polar(cartesian x) – переводит координаты точки из в декартовой системы в полярную. 6. cartesian polar_to_cartesian(polar x) – переводит координаты точки из в полярной системы в декартову.
Разбиение на модули. Исходя из логики работы программы, а также, возможного дальнейшего применения полученных результатов естественным будет разбить ее на два файла: PRG-Lab13.cpp – содержащий точку входа в программу, а также основные вызовы функции и взаимодействие с пользователем; points.cpp – содержащий реализации вышеперечисленных функций; а также points.h – содержащий интерфейсы данных функций и типы данных, и служащий для подключения возможностей работы с точками в различных системах координат.
Файл points.h
// points.h: Содержит определения основных типов и прототипы функций. // #ifndef POINTS_H #define POINTS_H
//Объявления типов //Точка в декартовой системе координат struct cartesian{ double x, y; };
//Точка в полярной системе координат struct polar{ double r, pi; };
//Прототипы функций double len(polar a, polar b); double len(cartesian a, cartesian b); double len(cartesian a, polar b); double len(polar a, cartesian b);
polar cartesian_to_polar(cartesian x); cartesian polar_to_cartesian(polar x); #endif
Файл points.cpp
Примечание. Обратите внимание на повторное использование вызовов уже существующих функций. Данная техника позволяет добиться быстрого и удобного внесения корректив (хотя и за счет несущественной потери в производительности). Например, при наличии ошибки, скажем, при неверно запрограммированной формуле, ее достаточно исправить лишь в одном месте, а не искать по всему тексту модуля.
// points.cpp: Содержит определения функций // #include "points.h" #include <math.h> double len(polar a, polar b) { return sqrt(pow(a.r, 2) + pow(b.r, 2) - 2*a.r*b.r*cos(a.pi - b.pi)); } double len(cartesian a, cartesian b) { return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2)); } double len(cartesian a, polar b) { cartesian c; c = polar_to_cartesian(b); return len(a, c); } double len(polar a, cartesian b) { return len(b, a); } polar cartesian_to_polar(cartesian x) { polar y; y.r = sqrt(pow(x.x, 2) + pow(x.x, 2)); if (y.r == 0) y.pi = 0; else y.pi = asin(x.y/y.r); return y; } cartesian polar_to_cartesian(polar x)
{ cartesian y; y.x = x.r*cos(x.pi); y.y = x.r*sin(x.pi); return y; }
Файл PRG-Lab13.cpp
// PRG-Lab13.cpp: Основной файл проекта, содержит точку входа в программу // #include <iostream> #include "points.h" using namespace std; void main(int argc, char* argv[]) { setlocale(LC_ALL, "Russian"); const double PI = 3.14159; cartesian a = {3, 0}, b = {1, 1}; polar c = {1.41, PI/4}, d = {3.1, 0.95}; //вызовы перегруженных функций //для точек в различных системах координат //декартова - декартова cout << len(a, b) << endl; //полярная - полярная cout << len(c, d) << endl; //декартова - полярная cout << len(a, d) << endl; //полярная - декартова cout << len(c, b) << endl; }
Таким образом мы получили собственную мини библиотеку, которую можно расширять в дальнейшем и использовать в других проектах. Препроцессор Препроцессор языка С — это небольшой текстовый редактор. Ему передается текст программы, написанной на языке С, он просматривает текст и первым делом удаляет из него все комментарии, оставляя на месте каждого комментария пробел. Затем он ищет предназначенные ему директивы и выполняет их. Каждая директива препроцессору записывается на отдельной строке. Перед директивой в этой строке могут быть только пробельные символы. Директива начинается со знака номера #. Вот этот знак и отыскивает препроцессор, чтобы выполнить указания директивы.
|
||||||
Последнее изменение этой страницы: 2016-12-11; просмотров: 279; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.81.198 (0.008 с.) |