Довідник астронома

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    178,28 Кб
  • Опубликовано:
    2015-09-09
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Довідник астронома

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ «ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ» ЧЕРНІВЕЦЬКИЙ ФАКУЛЬТЕТ

Кафедра інформаційних систем










Курсова робота

з дисципліни “Програмування”

Тема: “Довідник астронома ”


Виконавець:

Козубовська Андріяна



Чернівці 2015

Зміст

Вступ

.        Теоретична частина

.        Практична частина

.1      Постановка задачі

.2      Алгоритм роботи

.3      Інструкція використання програми

Висновок

Список джерел

Додатки

Вступ

Мова програмування Сi була розроблена в 1972 р. Денисом Рiтчi, який є одним з авторів операцiйної системи UNIX. Мова програмування Сi пізніше була використана для програмування цiєї системи, а також багатої бібліотеки обслуговуючих програм, оскільки, являлася універсальною мовою загального призначення, мова Сi зручна для програмування системних задач. Поява мікрокомп’ютерів закріпила позиції мови Сi. Було створено близько 30 його нових компіляторів, а після проведення Американським національним інститутом стандартів (American National Standards Institute) робіт по стандартизацiї в області програмування почали розроблятися компілятори, що вiдповiдали опублікованому весною 1986 р. проекту стандарту.

Першим компілятором по стандарту ANSI являлась система Турбо Сi версiї 1.0 фiрми Borland International. Ця система, що складається з компілятора мови Сi, пов'язаного з ним редактора, компоновщика i бібліотек, забезпечила користувачам зручну інтегровану операційну оболонку, а також суттєво полегшувала професійне програмування, в якому визначальними параметрами є висока швидкість компiляцiї, висока якість згенерованого коду та невеликий об’єм оперативної пам’ять. Мова Сі серед сучасних мов програмування є однією iз найбільш поширених. Вона універсальна, але найбільш ефективне її використання в задачах системного програмування - розробки трансляторів, операційних систем, інструментальних засобів. Мова Сі добре зарекомендувала себе ефективністю, лаконічністю запису алгоритмів, логічною стрункістю програм. У багатьох випадках програми, написані на мові Сі, можна порівняти по швидкості з програмами, написаними на мові Асемблера, при цьому вони більш наглядні i прості у супроводі.

Основними перевагами мови Сі вважаться висока переча написаних на нiй програм мiж комп'ютерами з різною архітектурою, мiж різними операційними середовищами. Транслятори мови Сі дiять практично на всiх персональних комп'ютерах, які використовуються в наш час. Перечислимо окремі особливості мови С:

в мові Сі реалізовані окремі операцiї низького рівня (а саме операцiї над бітами). Окремі з таких операцій напряму вiдповiдають машинним командам;

мова Сі підтримує механізм показчикiв на змiннi i функцiї;

базовi типи даних мови Сі відображають тi ж об’єкти, з якими потрібно мати справу програмі на мові Асемблера,- байти, машинні слова, символи, строки;

як в нiякiй iншiй мові програмування високого рівня в мові Сі накладаються лише незначні обмеження на перетворення типів даних;

не дивлячись на ефективність і потужність конструкції мови Сі, він відносно малий по об'єму, але в системне оточення мови Сі входить бібліотека стандартних функцій, в який реалізовані встроенi оператори введення - виведення, динамічного розподілу пам’ять, управління процесами i т.д. Народження комп'ютерних навчальних систем пов'язане з поширенням персональних комп'ютерів, забезпечених призначеним для користувача графічним інтерфейсом і здатних сприймати і відтворювати мультимедійні дані в різних форматах. Ширші можливості по використанню комп'ютерних навчальних систем відкрилися завдяки Інтернету. Саме завдяки «виходу» навчальних програм в Інтернет з'явився термін eLearning - «електроне навчання». Основним завданням курсової роботи це закріплення теоретичних знань та практичних навичок програмування мовою С/С++, набутих під час вивчення дисциплін “Проблемно-орієнтовані мови програмування ”.

У процесі виконання курсової роботи студент повинен навчитися самостійно працювати з літературою, розробляти алгоритми, здійснювати їх програмну реалізацію та від лагодження на сучасних обчислювальних системах. Ціль курсової роботи - створення програмного забезпечення, яке працює із текстовим файлом, структурами даних, має зв’язок між класами та функціями.

Об’єктом курсової роботи є розробка програми, яка виконує функції бази даних.

1. Теоретична частина

Сі - це мова програмування високого рівня, який більш популярний, ніж Паскаль і Асемблер. Сі, дозволяє писати програми під Windows. Адже перші Операційні системи були написані саме на мові Сі. Програмування під Windows зараз дуже поширене в світі, але для цього необхідно багато праці і зусилля. В даному курсі ми пройдемо не один десяток уроків, щоб спочатку навчитися програмувати на мові С. В них ви знайдете приклади програмування на Си. Після чого ви можете вивчати програмування під windows. Щоб писати програми на мові Сі, необхідно увійти в середу програмування. Якщо у вас немає цієї програми, то ви можете завантажити її на будь-якому сайті, це: Borland C, Visual C++, Visual Studio 2005, Visual Studio 2008 і вже виходить Visual Studio 2010 якщо ж вона у вас є, то приступимо до процесу навчання.

Частиною стандартної бібліотеки C++ є бібліотека iostream - об'єктно-орієнтована ієрархія класів, де використовується і множинне, і віртуальне спадкоємство. У ній реалізована підтримка для файлового введення/виводу цих вбудованих типів. Крім того, розробники класів можуть розширювати цю бібліотеку для читання і запису нових типів даних. Для використання бібліотеки iostream в програмі необхідно включити заголовний файл #include <iostream>.

Операції введення/виводу виконуються за допомогою класів istream (потокове введення) і ostream (потоковий вивід). Третій клас, iostream, являється похідним від них і підтримує двонаправлене введення/вивід. Для зручності в бібліотеці визначено три стандартні об'єкт-потоки:- об'єкт класу istream, відповідний стандартному введенню. У загальному випадку він дозволяє читати дані з терміналу користувача;- об'єкт класу ostream, відповідний стандартному виводу. У загальному випадку він дозволяє виводити дані на термінал користувача;- об'єкт класу ostream, відповідний стандартному виводу для помилок. У цей потік ми направляємо повідомлення про помилки програми. Висновок здійснюється, як правило, за допомогою переобтяженого оператора зрушення вліво (<<), а введення - за допомогою оператора зрушення управо (>>): Окрім читання з терміналу і запису на нього, бібліотека iostream підтримує читання і запис у файли. Для цього призначені наступні класи:, похідний від istream, зв'язує введення програми з файлом;, похідний від ostream, зв'язує виведення програми з файлом;, похідний від iostream, зв'язує як введення, так і виведення програми з файлом. Щоб використовувати частину бібліотеки iostream, пов'язану з файловим введенням/виводом, необхідно включити в програму заголовний файл

#include <fstream>

Бібліотека iostream підтримує також введення/вивід в область пам'яті, при цьому потік зв'язується з рядком в пам'яті програми. За допомогою потокових операторів введення/виводу ми можемо записувати дані в цей рядок і читати їх звідти. Об'єкт для строкового введення/виводу визначається як екземпляр одного з наступних класів:, похідний від istream, читає з рядка;, похідний від ostream, пише в рядок;, похідний від iostream, виконує як читання, так і запис.

Для використання будь-якого з цих класів в програму треба включити заголовний файл #include <sstream>

В мові C++ для представлення і обробки рядків є дві можливості. По-перше, можна використовувати символьний масив, що закінчується нулем і є рядком в стилі мови C, як це й робилося практично у всіх прикладах даної книги. По-друге, для роботи з рядками можна використовувати об'єкти бібліотечного класу string з бібліотеки <string>. В цій бібліотеці ім'я string оголошено в просторі імен std і є коротким ім'ям конкретизації більш загального класу-шаблону basic_string: typedef basic_string<char> string; Додавання в C++ класу string на перший погляд здається зайвим, оскільки в C++ як рядки вже підтримуються масиви символів, що закінчуються нулем. Але ці рядки не можна обробляти за допомогою стандартних операторів C++ і вони не можуть бути частиною звичайних виразів C++. Як демонстрація цього розглянемо наступний фрагмент програми: Для символьного рядка в стилі C не можна використовувати оператор “=” для присвоювання нового значення, за винятком ініціалізації, а для конкатенації двох рядків не можна використовувати оператор складання. Окрім цього, для обробки рядків є додаткові можливості. Щоб дістати доступ до класу string, в програму слід включити директиву:#include <string>В класі string є декілька конструкторів. Нижче представлені прототипи трьох з них, які частіше за все використовуються в програмах:();(const char *str);(const string &str);

В першому варіанті за допомогою конструктора створюється порожній об'єкт типу string. В другому варіанті об'єкт типу string створюється з рядка в стилі C, що закінчується нулем, заданого вказівником на його перший символ; цей конструктор є конструктором приведення рядка, що закінчується нулем, до об'єкту типу string. В третьому варіанті об'єкт типу string створюється з іншого об'єкту типу string, тобто цей варіант конструктора є конструктором копіювання.

За замовчуванням усі значення, що виводяться, вирівнюються по правому краю: якщо ширина поля більше від значення, що виводиться, його буде вирівняно по правому краю поля. Щоб встановити вирівнювання по лівому краю, поставте знак "мінус" відразу після знаку %. Наприклад, рядок форматування %-10.2f забезпечить вирівнювання дійсного числа (з двома десятковими знаками у 10-символьному полі) по лівому краю. Розглянемо програму, у якій продемонстровано механізм використання специфікаторів ширини поля і вирівнювання по лівому краю.

#include <stdio.h>// Для введення/виведення.

Крім додавання покажчика з цілочисельним значенням і віднімання його від покажчика, а також обчислення різниці двох покажчиків, над покажчиками жодні інші арифметичні операції не виконуються. Наприклад, до покажчиків не можна додавати float - абоdouble - значення.

Щоб зрозуміти, як формується результат виконання арифметичних операцій над покажчиками, виконаємо таку коротку програму. Вона виводить реальні фізичні адреси, які містять покажчик наint - значення (izm) і покажчик наfloat - значення (f). Звернемо Вашу увагу на кожну зміну адреси (залежну від базового типу покажчика), яка відбувається під час повторення циклу [21]. Зверніть увагу також на те, що під час використання покажчика в cout - настанові його адреса автоматично відображається у форматі адресації, що вживається для поточного процесора і середовища виконання. #include <conio>// Для консольного режиму роботи

Стандарт мови програмування C++ визначає всю свою бібліотеку у власному просторі імен, який іменується std. Саме з цієї причини більшість програм у цьому навчальному посібнику містять таку настанову:namespace std;// Використання стандартного простору імен.

іnt main ( ) {

Це означає, що розпочинаєм писати головну функцію main. Саме з цієї функції консольна програма розпочинає свою роботу. Intо значає, що функція повертає значення типу int, тобто цілого. В С++ є де-які типи даних, про них пізніше. Після int йде назва функції (в нашому випадку main). Потім у дужках передаються аргументи функції, зараз їх намає, отже, поки не звертаємо уваги. Потім йде символ{,який означає початок тіла функції.

Функція, що робить затримку екрану. Для її використання потрібно підключити бібліотеку conio.h.

Логічна настанова if:

Настанова if у мові програмування C++ діє подібно до настанови if, визначеної в будь-якій іншій мові програмування. Її простий формат є таким: if(умова) настанова; У цьому записі елемент умова- вираз, який під час обчислення можевиявитися значенням, що дорівнює ІСТИНІ або ФАЛЬШІ. У мові програмування C++ ІСТИНА представляється ненульовим значенням, а ФАЛЬШ - нулем. Якщо умова, або умовний вираз, є істинним, елемент настановави-конається, інакше - ні.

Циклічна настанова for:

Цикл for повторює вказану настанову задану кількість разів. Настанова for у мові програмування C++ діє практично так само, як настанова for, визначена в таких мовах програмування, як Java С#,Pascal і VisualBasic. Її простий формат є таким: for (ініціалізація; умова; інкремент) настанова; У цьому записі елемент ініціалізація є настанова присвоєння, яка встановлює керівній змінній циклу початкове значення. Ця змінна діє як лічильник, який керує роботою циклу. Елемент умова є виразом, у якому тестується значення керівної змінної циклу. Результат цього тестування визначає, виконається цикл for ще раз чи ні. Елемент інкремент - вираз, який визначає, як змінюється значення керівної змінної циклу після кожної ітерації. Цикл for виконуватиметься доти, доки обчислення елемента умова дає істинний результат. Як тільки умова стане помилковою, виконання програми продовжиться з настанови, що знаходиться наступною за циклом for.

Ключове слово class показує компіляторові, що все у фігурних дужках ({}) належить оголошенню класу. (Не зі ставити крапку з коми наприкінці оголошення.) Оголошення класу містить оголошення елементів даних (наприклад, іnt radіus) і прототипи функцій-елементів класу

• Кожне оголошення класу повинне включати прототип функції конструктора.

• Ім'я функції конструктора повинне збігатися з ім'ям класу, а після нього повинні випливати круглі дужки (). Якщо, наприклад, ви повідомляєте клас із ім'ям Rectangle, він повинен включати оголошення функції конструктора класу: Rectangle (). Отже, оголошення класу Rectangle повинне виглядати так:

• Не згадуйте ніякого значення, що повертає, для функції конструктора. (Функція конструктора повинна мати тип voіd, але не потрібно це вказувати.)

• Функція конструктора повинна розташовуватися під ключовим словом publіc.

Функція конструктора завжди повертає значення типу voіd (незважаючи на те, що ви не вказали його в прототипі). Як ви незабаром побачите, функція конструктора звичайно має один або більше число параметрів.

• Ім'я функції деструктора повинне збігатися з ім'ям класу і йому повинен передувати символ ~. Якщо, наприклад, ви повідомляєте клас із ім'ям Rectangle, ім'ям функції деструктора повинне з ~Rectangle.

• Не вказуйте ніякого значення, що повертає, для функції деструктора. (Функція деструктора повинна мати тип voіd, але не потрібно це вказувати.)

• Функція деструктора не має ніяких параметрів.

Шаблон vector розміщений у заголовковому файлі<vector>. Як і всі стандартні компоненти, він розміщений у просторі імен <#"862746.files/image001.gif">

Рисунок 1.1

Вводимо 1 і вводимо певні дані щоб додати зорю в файл, нажимаємо Enter для продовження роботи.

Рисунок 1.2

Провіряємо чи зоря записана у файлі. Відкриваємо файл:6.45 -16.42 BigDog -1.46 8.66.23 -52.41 Keel -0.72 31014.39 -60.5 Centauri -0.27 4.314.15 19.1 Bootesа -0.04 3418.36 38.47 Lira 0.03 255.16 45.59 Charioteer 0.08 415.14 -8.12 Orionа 0.12 8707.39 5.13 Malagos 0.38 11.41.37 -57.14 Eridan 0.46 695.55 7.24 Orion 0.5 53014.03 -60.22 Centauri 0.61 40012.26 -63.05 Southern_Cross 0.76 33019.5 8.52 Eagle 0.77 164.35 16.3 Taurus 0.85 6016.29 -26.25 Scorpio 0.96 61013.25 -11.09 Virgin 0.98 2507.45 28.01 Twins 1.14 4022.57 -29.37 Southern_Fish 1.16 2212.47 -59.41 Southern_Cross 1.25 29020.41 45.16 Swan 1.25 150010.08 11.58 Lion 1.35 696.58 -28.58 BigDog 1.5 4007.34 31.53 Twins 1.57 4912.31 -57.06 Southern_Cross 1.63 12017.33 -37.06 Scorpio 1.63 33012.4 3.7 Scorpio 54.2 0.7

Бачим що наша зірка записана у файлі. Продовжуєм працювати з програмою. Вводимо 2 для того щоб вивести найяскравіші зорі.

Рисунок 1.3. Продовжуємо роботу з програмою. Вводимо 3 для виведення зорі у сузір’ї.

Рисунок 1.4

Рисунок 1.5

Продовжуємо роботу з програмою. Вводимо 4 для виведення зорі у заданій точці світу і у заданий час.

Рисунок 1.6

Якщо користувач увів неправельні дані програма повідомить про це.

Рисунок 1.7

Для того щоб завершити роботу потрібно ввести 5.

Висновок

В ході курсової роботи на практиці застосували свої знання з об’єктно-орієнтованого програмування. Поглибили розуміння основних принципів об’єктно-орієнтованої ідеології програмування. Навчились розробляти ієрархію класів. Набули практичних навиків роботи. Таким чином в курсовому проекті була розглянута програма де треба створити файл, що містить відомості про зірки і сузір’я, за таким зразком: видимі зірки: назва, сузір'я, видима зоряна величина, відстань від Землі, координати на небосхилі: пряме сходження (ч, хв..) і схилення (град., хв..). Пошук зірок, що входять в дане сузір'я, найяскравішої зірки сузір'я, видимих сузір'їв і зірок в заданій точці земної кулі в заданий час. По бажанню користувача вивести на екран кількість таких зірок. Забезпечити можливість поповнення файлу з клавіатури. Забезпечити можливість відновлення попередньої версії файлу. Програма на курсовий проект успішно виконана та збережена на диску який входити до комплекту курсового проекту.

комп'ютерний програмування файл навчальний

Список джерел

1.      Страуструп Б. Язык программирования С++. Специальное издание. - М., СПб.:”Издательство БИНОМ” - „Невский Диалект”, 2001г. - 1099 с.

2.      Дейтел Х., Дейтел П. Как программировать на С++. Третье издание.-М.: ЗАО „Издательство БИНОМ”, 2001г. - 1152с.

.        Эндрю Троельсен. C# и платформа.NET. Библиотека программиста. - СПб.: Питер, 2005. - 796 с.

.        Бондарев В.М., Объектно-ориентированное программирование на С#. Учебное пособие. - Харьков: СМИТ, 2009г. - 224 с.

.        Бондарев В.М., Программирование на С++. Учебное пособие. - Харьков: СМИТ, 2004г. - 294 с.

Додаток А

ЛІСТИНГ ПРОГРАМИ

#include <iostream>

#include <vector>

#include <string>

#include <fstream>

#include <stdio.h>

#include <conio.h>

#include <windows.h>

#include <sstream>namespace std;kolStar; //зберігає кількість зірок, що занесені до довідникаTime

{:minute;hour;date;month;() //конструктор класу

{

//встановлення дати та часу на

//15 травня 12:00= 5;= 15;= 12;= 0;

}

//метод встановлення датиsetDate(int setMonth, int setDate)

{= setMonth;= setDate;

}

//метод встановлення часуsetTime(int setHour, int setMinute)

{= setHour;= setMinute;

};Star

{:xKor; //схилення зоріyKor; //пряме сходження зоріstarBright; //видима яскравість зоріtrek; //відставнь до зоріconstellation; //назва сузіря до якого зоря входитьname; //назва зорі

//конструктор класу(string nameOfStar, float x, float y, string constel,bright, float setTrek)

{

//заповнення інформації про зорю, що створюється= nameOfStar;= setTrek;= x;= y;= constel;= bright;

};AstronomControl

{:lastDoKol; //зберігає довжину останнього списку зірок, котрі були запрошені<Star*> star; //вектор зірок

//конструктор класу()

{

//обнулення змінних.clear();= 0;= 0;

}

//метод додавання до каталогу нової зоріaddStar(string nameOfStar, float x, float y,zod, float bright, float setTrek)

{++; //оновлення кількості зорей у каталозі

//створення нового обьекта класу Зоря та занесення її до вектору

star.push_back (new Star(nameOfStar, x, y, zod, bright, setTrek));inFile("AstronomBook.txt", ios_base::app);<< nameOfStar << endl;<< x << endl;<< y << endl;<< zod << endl;<< bright << endl;<< setTrek << endl;.close();

}

//метод, що повертає зорі, на небосхилі у заданій широті та у заданий час<string> getStarsByPlace(float xKor, Time time){

//створення тимчасових змінних та

//обнулення інформації про кількість поточних зірок у векторі<string> ret;.clear();= 0;minZnach;maxZnach;

//вираховуємо змішення Землі від лінії весеннього рівноденняshiftTime = 24 * ((time.month - 1) * 30 + time.date - 81) / 365;.hour = time.hour + (int)shiftTime;.minute = time.minute + (shiftTime - ((int)shiftTime));

//якщо зміщення віходить за діапазон, виправляємо цю неточність(time.hour > 24).hour = time.hour - 24;

//розрахунок зірок у північній півкулі(xKor >= 0)

{

//знахождення максиального огляду за данної широти= xKor - 90;= 90 - xKor;

}//розрахунок зірок у південні півкулі

{

//знахождення максиального огляду за данної широти= xKor + 90;= -90 - xKor;

}

//шукаємо зорі, які видно у будь яку пору року(int i = 0; i < kolStar; i++)(star[i]->starBright >= maxZnach)

{

//заносимо її до веторуstr = "";+= star[i]->name;+= ", що знаходится в сузiр'ї ";+= star[i]->constellation;.push_back(str);++;

}

{((star[i]->starBright > minZnach) && (star[i]->starBright < maxZnach))

{(time.hour < 6)

{((star[i]->xKor < time.hour) || (star[i]->xKor < 24 - 6 + time.hour))

{str = "";

str += star[i]->name;+= ", що знаходится в сузiр'ї ";+= star[i]->constellation;.push_back(str);++;

}

}if (time.hour > 18)

{((star[i]->xKor > time.hour) || (star[i]->xKor < 6 - 24 + time.hour))

{str = "";+= star[i]->name;+= ", що знаходится в сузiр'ї ";+= star[i]->constellation;.push_back(str);++;

}

{((star[i]->xKor > time.hour - 6) && (star[i]->xKor < time.hour + 6)){str = "";+= star[i]->name;+= ", що знаходится в сузiр'ї ";+= star[i]->constellation;.push_back(str);++;

}ret;

}

//метод виведення найяскравіших зірок<string> getBrightersStars(){<string> ret; //змінна збереження списку найяскравіших зорей.clear(); //спорожнюємо вектор перед використанням= 0; //обнулення кількості єлементів у векторі

//перевірка всіх зорей на яскравість та при визначенні яскравості

//додавання до вектору цієї зорі(int i = 0; i < kolStar; i++)(star[i]->starBright < 0.5){.push_back(star[i]->name);++;

}ret;

}

\

//метод, що повертає вектор зорей, що знаходятся у заданному сузірї<string> getStartByConstellation(string searchConstellation)

{

//свторюємо вектор для запису зорей та обнулюєто змінні<string> ret;.clear();= 0;

//пошук зорей та додавання їх до ветора(int i = 0; i < kolStar; i++)(star[i]->constellation == searchConstellation)

{.push_back(star[i]->name);++;

}ret;

}

};

//свторення обьекту керування довідникомastronom;readInfoAboutStar()

{read("AstronomBook.txt"/*, ios_base::in*/);(read.is_open())

{isEnd = false;(!isEnd)

{name = "";sozvezdiye = "";x, y, bright, trek;>> name;>> x;>> y;>> sozvezdiye;>> bright;>> trek;(int i = 0; i < kolStar; i++)(name == astronom.star[i]->name)= true;(!isEnd).addStar(name, x, y, sozvezdiye, bright, trek);

//addStar("Сіріус", 6.45, -16.42, "Великого Пса", -1.46, 8.6);

}

{

//у вигляді [назва] [пряме сходження][схилення][сузірье][яскравість][відстань].addStar("Sirius", 6.45, -16.42, "BigDog", -1.46, 8.6);.addStar("Canopus", 6.23, -52.41, "Keel", -0.72, 310);.addStar("Toliman", 14.39, -60.50, "Centauri", -0.27, 4.3);.addStar("Arcturus", 14.15, 19.10, "Bootesа", -0.04, 34);.addStar("Vega", 18.36, 38.47, "Lira", 0.03, 25);.addStar("Chapel", 5.16, 45.59, "charioteer",0.08, 41);.addStar("Rigel", 5.14, -8.12, "Orionа", 0.12, 870);.addStar("Procyon", 7.39, 5.13, "Malagos", 0.38, 11.4);.addStar("Achernar", 1.37, -57.14, "Eridan", 0.46, 69);.addStar("Betelgeuse", 5.55, 7.24, "Orion", 0.5, 530);.addStar("Hadar", 14.03, -60.22, "Centauri", 0.61, 400);.addStar("Acrux", 12.26, -63.05, "Southern_Cross", 0.76, 330);.addStar("Altair", 19.50, 8.52, "Eagle", 0.77, 16);.addStar("Aldebaran", 4.35, 16.30, "Taurus", 0.85, 60);.addStar("Antares", 16.29, -26.25, "Scorpio", 0.96, 610);.addStar("Spica", 13.25, -11.09, "Virgin", 0.98, 250);.addStar("Pollux", 7.45, 28.01, "Twins", 1.14, 40);.addStar("Formalhaut", 22.57, -29.37, "Southern_Fish", 1.16, 22);.addStar("Becrux", 12.47, -59.41, "Southern_Cross", 1.25, 290);.addStar("Deneb", 20.41, 45.16, "Swan", 1.25, 1500);.addStar("Regul", 10.08, 11.58, "Lion", 1.35, 69);.addStar("Adar", 6.58, -28.58, "BigDog", 1.5, 400);.addStar("Castor", 7.34, 31.53, "Twins", 1.57, 49);.addStar("Gacrux", 12.31, -57.06, "Southern_Cross", 1.63, 120);.addStar("Shaul", 17.33, -37.06, "Scorpio", 1.63, 330);

}.close();

}Menu()

{

//параметр виходу встановлюємо як хибуisExit = false;chooseNum;

//меню програми

{<<"\t\t\tДовiдник астронома";<< endl<<endl;<< "1.Додати зорю" << endl;<< "2.Вивести найяскравiшi зорi" << endl;<< "3.Вивести зорi у заданому сузiр\"ї" << endl;<< "4.Вивести зорi у заданiй точцi свiту i у заданий час" << endl;<< "5.Вихiд" << endl;

//считування результату>> chooseNum;

//вибір результату(chooseNum)

{

//свторення нової зірки1:

{name = "";zodiak = "";x = 0;y = 0;velichina = 0;bright = 0;("cls");<< "Введiть назву зорi" << endl;>> name;<< "Введiть пряме пiднесення зорi у виглядi години.хвилини" << endl;>> x;<< "Введiть схилення зорi у виглядi градуси.хвилини" << endl;>> y;<< "Введiть вiдстань до зорi" << endl;>> velichina;<< "Введiть видиму зоряну величину" << endl;>> bright;<< "Оберiть сузiр\"я до якого вiдносится зоря" << endl;>> zodiak;<<"Нажмiть Enter для повернення в головне меню...";

_getch();("cls");

//додавання нової зірки до каталогу.addStar(name, x, y, zodiak, bright, velichina);

};2:

{

system("cls");

//виведння найяскравіших зірок<string> brithtersStar = astronom.getBrightersStars();(int i = 0; i < astronom.lastDoKol; i++)<< brithtersStar[i] << endl;

cout<<"\n\nНажмiть Enter для повернення в головне меню...";

_getch();("cls");

};3:

{("cls");

//виведення зірок що знаходятся в введеному сузірїnameOfConstellation = "";<string> starsVector;.clear();<< "Введiть iм'я сузiр\"я" << endl;>> nameOfConstellation;= astronom.getStartByConstellation(nameOfConstellation);<< "Результати пошуку зiрок у сузiр\"ї " << nameOfConstellation << endl;(int i = 0; i < astronom.lastDoKol; i++)<< starsVector[i] << endl;<< endl;<<"\n\nНажмiть Enter для повернення в головне меню...";

_getch();("cls");

};4:

{("cls");

//виведення видимих зорей у заданій широті та часіisTrueEnter = true;xKoord = 0;timeTemperOne;timeTemperTwo;time;<< "Введiть широту потрiбного мiсця(+ якщо пiвнiчного, - якщо пiвденного)" << endl;>> xKoord;<< "Введiть потрiбну годину" << endl;>> timeTemperOne;<< "Введiть потрiбну хвилину" << endl;>> timeTemperTwo;

if ((xKoord > 90) || (xKoord < -90) || (timeTemperOne > 23) || (timeTemperOne < 0)

|| (timeTemperTwo > 59) || (timeTemperTwo < 0))= false;(isTrueEnter).setTime(timeTemperOne, timeTemperTwo);<< "Введiть потрiбний мiсяць (1-12)" << endl;>> timeTemperOne;<< "Введiть потрiбний день" << endl;>> timeTemperTwo;((timeTemperOne > 12) || (timeTemperOne < 0)

|| (timeTemperTwo > 31) || (timeTemperTwo < 0))= false;(isTrueEnter){

//заповнення даних для подальшого використанні при пошуку зорей.setDate(timeTemperOne, timeTemperTwo);<string> starsVector;.clear();

//обробка отриманих результатів про зорі та виведння отриманної інформації= astronom.getStarsByPlace(xKoord, time);(int i = 0; i < astronom.lastDoKol; i++)<< starsVector[i] << endl;(astronom.lastDoKol == 0)<< "не знайдено жодної зорi" << endl;<< endl;

}<< "Ви ввели некоректнi даннi";<<"\n\nНажмiть Enter для повернення в головне меню...";

_getch();("cls");

};5:

//вихід з програми= true;

//реакція на введення некоректної цифри:("cls");<< "Ви зробили некоректний вибiр" << endl;<<"Нажмiть Enter для повернення...";

_getch();("cls");

}

} while(! isExit); //Поки не натиснути "5" програма буде правцювати

}main(){(LC_ALL,"russian");= 0;

//заповнення каталогу про зорі інформацією();();0;

}

Додаток Б

ФАЙЛ ПРОГРАМИ:6.45 -16.42 BigDog -1.46 8.66.23 -52.41 Keel -0.72 31014.39 -60.5 Centauri -0.27 4.314.15 19.1 Bootesа -0.04 3418.36 38.47 Lira 0.03 255.16 45.59 Charioteer 0.08 415.14 -8.12 Orionа 0.12 8707.39 5.13 Malagos 0.38 11.41.37 -57.14 Eridan 0.46 695.55 7.24 Orion 0.5 53014.03 -60.22 Centauri 0.61 40012.26 -63.05 Southern_Cross 0.76 33019.5 8.52 Eagle 0.77 164.35 16.3 Taurus 0.85 6016.29 -26.25 Scorpio 0.96 61013.25 -11.09 Virgin 0.98 2507.45 28.01 Twins 1.14 4022.57 -29.37 Southern_Fish 1.16 2212.47 -59.41 Southern_Cross 1.25 29020.41 45.16 Swan 1.25 150010.08 11.58 Lion 1.35 696.58 -28.58 BigDog 1.5 4007.34 31.53 Twins 1.57 4912.31 -57.06 Southern_Cross 1.63 12017.33 -37.06 Scorpio 1.63 33012.4 3.7 Scorpio 54.2 0.7

Похожие работы на - Довідник астронома

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!