комп'ютерний програмування файл навчальний
Список джерел
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