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

Автор работы: Пользователь скрыл имя, 08 Сентября 2015 в 23:37, курсовая работа

Краткое описание

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

Содержание

Вступ................................................................................................................... 4-5
Теоретична частина..........................................................................................6-13
Практична частина............................................................................................14
Постановка задачі........................................................................................14
Алгорит роботи............................................................................................15
Інструкція використання програми........................................................16-19
Висновок.............................................................................................................20
Список джерел.................................................

Прикрепленные файлы: 1 файл

ккккккккккккк.docx

— 137.33 Кб (Скачать документ)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                          СПИСОК ДЖЕРЕЛ

  1. Страуструп Б. Язык программирования С++. Специальное издание.-М., СПб.:”Издательство БИНОМ” – „Невский Диалект”, 2001г.-1099 с.
  2. Дейтел Х., Дейтел П. Как программировать на С++. Третье издание.-М.:ЗАО „Издательство БИНОМ”, 2001г.-1152с.
  3. Эндрю Троельсен. C# и платформа .NET. Библиотека программиста. – СПб.: Питер, 2005. – 796 с.
  4. Бондарев В.М., Объектно-ориентированное программирование на С#. Учебное пособие. – Харьков: СМИТ, 2009г. – 224 с.
  5. Бондарев В.М., Программирование на С++. Учебное пособие. – Харьков: СМИТ, 2004г. – 294 с.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                   ДОДАТОК     А

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

#include <iostream>

#include <vector>

#include <string>

#include <fstream>

#include <stdio.h>

#include <conio.h>

#include <windows.h>

#include <sstream>

using namespace std;

int kolStar;    //зберігає  кількість зірок, що занесені  до довідника

class Time

{

public:

int minute;

int hour;

int date;

int month;

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

{

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

//15 травня 12:00

month  = 5;

date   = 15;

hour   = 12;

minute = 0;

}

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

void setDate(int setMonth, int setDate)

{

month = setMonth;

date  = setDate;

}

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

void setTime(int setHour, int setMinute)

{

hour   = setHour;

minute = setMinute;

}

};

class Star

{

public:

float xKor; //схилення зорі

float yKor; //пряме сходження  зорі

float starBright;   //видима  яскравість зорі

float trek;         //відставнь до зорі

string constellation;  //назва сузіря  до якого зоря входить

string name;           //назва зорі

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

Star(string nameOfStar, float x, float y, string constel,

float bright, float setTrek)

{

//заповнення інформації  про зорю, що створюється

name = nameOfStar;

trek = setTrek;

xKor = x;

yKor = y;

constellation = constel;

starBright    = bright;

}

};

 

class AstronomControl

{

public:

int lastDoKol;  //зберігає довжину  останнього списку зірок, котрі  були запрошені

vector <Star*> star;   //вектор  зірок

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

AstronomControl()

{

//обнулення змінних

star.clear();

kolStar  = 0;

lastDoKol = 0;

}

//метод додавання до  каталогу нової зорі

void addStar(string nameOfStar, float x, float y,

string zod, float bright, float setTrek)

{

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

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

star.push_back (new Star(nameOfStar, x, y, zod, bright, setTrek));

ofstream inFile("AstronomBook.txt", ios_base::app);

inFile << nameOfStar << endl;

inFile << x << endl;

inFile << y << endl;

inFile << zod << endl;

inFile << bright << endl;

inFile << setTrek << endl;

inFile.close();

}

 

//метод, що повертає зорі, на небосхилі у заданій широті  та у заданий час

vector <string> getStarsByPlace(float xKor, Time time){

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

//обнулення інформації  про кількість поточних зірок  у векторі

vector <string> ret;

ret.clear();

lastDoKol = 0;

float minZnach;

float maxZnach;

//вираховуємо змішення  Землі від лінії весеннього  рівнодення

float shiftTime = 24 * ((time.month - 1) * 30 + time.date - 81) / 365;

time.hour = time.hour + (int)shiftTime;

time.minute = time.minute + (shiftTime - ((int)shiftTime));

//якщо зміщення віходить  за діапазон, виправляємо цю неточність

if (time.hour > 24)

time.hour = time.hour - 24;

//розрахунок зірок у  північній півкулі

if (xKor >= 0)

{

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

minZnach = xKor - 90;

maxZnach = 90 - xKor;

}

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

{

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

maxZnach = xKor + 90;

minZnach = -90 - xKor;

}

//шукаємо зорі, які видно  у будь яку пору року

for (int i = 0; i < kolStar; i++)

if (star[i]->starBright >= maxZnach)

{

//заносимо її до ветору

string str = "";

str += star[i]->name;

str += ", що знаходится  в сузiр'ї ";

str += star[i]->constellation;

ret.push_back(str);

lastDoKol++;

}

//шукаємо зорі що видно  лише в певну пору року

for (int i = 0; i < kolStar; i++)

{

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

{

if (time.hour < 6)

{

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

{

string str = "";

  str += star[i]->name;

str += ", що знаходится  в сузiр'ї ";

str += star[i]->constellation;

ret.push_back(str);

lastDoKol++;

}

}

else if (time.hour > 18)

{

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

{

string str = "";

str += star[i]->name;

str += ", що знаходится  в сузiр'ї ";

str += star[i]->constellation;

ret.push_back(str);

lastDoKol++;

}

}

else

{

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

string str = "";

str += star[i]->name;

str += ", що знаходится  в сузiр'ї ";

str += star[i]->constellation;

ret.push_back(str);

lastDoKol++;

  }

}

}

}

return ret;

    }

//метод виведення найяскравіших  зірок

vector <string> getBrightersStars(){

vector <string> ret;  //змінна  збереження списку найяскравіших  зорей

ret.clear();    //спорожнюємо  вектор перед використанням

lastDoKol = 0;  //обнулення кількості  єлементів у векторі

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

//додавання до вектору  цієї зорі

for (int i = 0; i < kolStar; i++)

if (star[i]->starBright < 0.5){

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

lastDoKol++;

}

return ret;

}

\

//метод, що повертає вектор  зорей, що знаходятся у заданному  сузірї

vector <string> getStartByConstellation(string searchConstellation)

  {

//свторюємо вектор для  запису зорей та обнулюєто  змінні

vector <string> ret;

ret.clear();

lastDoKol = 0;

//пошук зорей та додавання  їх до ветора

for (int i = 0; i < kolStar; i++)

if (star[i]->constellation == searchConstellation)

{

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

lastDoKol++;

}

return ret;

}

};

//свторення обьекту керування  довідником

AstronomControl astronom;

void readInfoAboutStar()

{

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

if (read.is_open())

{

bool isEnd = false;

while (!isEnd)

{

string name = "";

string sozvezdiye = "";

float x, y, bright, trek;

read >> name;

read >> x;

read >> y;

read >> sozvezdiye;

read >> bright;

read >> trek;

for (int i = 0; i < kolStar; i++)

if (name == astronom.star[i]->name)

isEnd = true;

if (!isEnd)

astronom.addStar(name, x, y, sozvezdiye, bright, trek);

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

}

}

else

{

//у вигляді [назва][пряме  сходження][схилення][сузірье][яскравість][відстань]

astronom.addStar("Sirius", 6.45, -16.42, "BigDog", -1.46, 8.6);

astronom.addStar("Canopus", 6.23, -52.41, "Keel", -0.72, 310);

astronom.addStar("Toliman", 14.39, -60.50, "Centauri", -0.27, 4.3);

astronom.addStar("Arcturus", 14.15, 19.10, "Bootesа", -0.04, 34);

astronom.addStar("Vega", 18.36, 38.47, "Lira", 0.03, 25);

astronom.addStar("Chapel", 5.16, 45.59, "charioteer",0.08, 41);

astronom.addStar("Rigel", 5.14, -8.12, "Orionа", 0.12, 870);

astronom.addStar("Procyon", 7.39, 5.13, "Malagos", 0.38, 11.4);

astronom.addStar("Achernar", 1.37, -57.14, "Eridan", 0.46, 69);

astronom.addStar("Betelgeuse", 5.55, 7.24, "Orion", 0.5, 530);

astronom.addStar("Hadar", 14.03, -60.22, "Centauri", 0.61, 400);

astronom.addStar("Acrux", 12.26, -63.05, "Southern_Cross", 0.76, 330);

astronom.addStar("Altair", 19.50, 8.52, "Eagle", 0.77, 16);

astronom.addStar("Aldebaran", 4.35, 16.30, "Taurus", 0.85, 60);

astronom.addStar("Antares", 16.29, -26.25, "Scorpio", 0.96, 610);

astronom.addStar("Spica", 13.25, -11.09, "Virgin", 0.98, 250);

astronom.addStar("Pollux", 7.45, 28.01, "Twins", 1.14, 40);

astronom.addStar("Formalhaut", 22.57, -29.37, "Southern_Fish", 1.16, 22);

astronom.addStar("Becrux", 12.47, -59.41, "Southern_Cross", 1.25, 290);

astronom.addStar("Deneb", 20.41, 45.16, "Swan", 1.25, 1500);

astronom.addStar("Regul", 10.08, 11.58, "Lion", 1.35, 69);

astronom.addStar("Adar", 6.58, -28.58, "BigDog", 1.5, 400);

astronom.addStar("Castor", 7.34, 31.53, "Twins", 1.57, 49);

astronom.addStar("Gacrux", 12.31, -57.06, "Southern_Cross", 1.63, 120);

astronom.addStar("Shaul", 17.33, -37.06, "Scorpio", 1.63, 330);

}

read.close();

}

void Menu()

{

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

bool isExit = false;

int chooseNum;

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

do

{

cout<<"\t\t\tДовiдник астронома";

cout << endl<<endl;

cout << "1.Додати зорю" << endl;

cout << "2.Вивести найяскравiшi зорi" << endl;

cout << "3.Вивести зорi у заданому сузiр\"ї" << endl;

cout << "4.Вивести зорi у заданiй точцi свiту i у заданий  час" << endl;

cout << "5.Вихiд" << endl;

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

cin >> chooseNum;

 

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

switch(chooseNum)

{

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

case 1:

{

string name   = "";

string zodiak = "";

float x = 0;

float y = 0;

float velichina = 0;

float bright    = 0;

system("cls");

cout << "Введiть назву  зорi" << endl;

cin >> name;

cout << "Введiть пряме  пiднесення зорi у виглядi години.хвилини" << endl;

cin >> x;

cout << "Введiть схилення  зорi у виглядi градуси.хвилини" << endl;

cin >> y;

cout << "Введiть вiдстань  до зорi" << endl;

cin >> velichina;

cout << "Введiть видиму  зоряну величину" << endl;

cin >> bright;

cout << "Оберiть сузiр\"я  до якого вiдносится зоря" << endl;

cin >> zodiak;

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

_getch();

system("cls");

//додавання нової зірки  до каталогу

astronom.addStar(name, x, y, zodiak, bright, velichina);

Информация о работе Довідник астронома