DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Створення списків сталих об’єктів

Інформація про навчальний заклад

ВУЗ:
Київський Національний університет будівництва і архітектури
Інститут:
Не вказано
Факультет:
ЗІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2014
Тип роботи:
Курсова робота
Предмет:
Об’єктно-орієнтоване програмування

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ БУДІВНИЦТВА І АРХІТЕКТУРИ Кафедра інформаційних технологій КУРСОВА РОБОТА З ДИСЦИПЛІНИ “Об’єктно-орієнтоване програмування” за темою: «Створення списків сталих об’єктів» Виконали студенти ІІ курсу факультету АІТ спеціальності ІУСТ _ Самойленко Вікторія Миколаївна _ (прізвище, ім’я, по батькові) Керівник роботи: Красовська Ганна Валеріївна Київ – 2013 ЗМІСТ Теоретична частина……………………………………………………................4 Завдання до курсової роботи……………………………………………………17 UML - діаграма прецедентів…………………………………………………….18 UML – Діаграма класів ………………………………………………………….19 UML - Діаграма компонентів…………………………………………………..20 Дерево функції…………………...………………………………………………21 Опис класів……………………………………………………………………….22 Опис прецедентів……………………………………………………………………….23 Опис програмного інтерфейсу користувача…………………………………..24 Тестовий приклад…………………………………………………………………………..25 Текст програми Unit1.cpp………………………………………………………………………….26 Unit1.h……………………………………………………………………………28 Список використаної літератури……………………………………………......32 Теоретична частина Перевантаження операцій потокового уведення/виведення. Файлове уведення/виведення. Управління потоковим уведенням/виведенням. Частиною стандартної бібліотеки C + + є бібліотека iostream - об'єктно -орієнтована ієрархія класів , де використовується і множинне , і віртуальне успадкування . У ній реалізована підтримка для файлового введення / виведення даних вбудованих типів . Крім того , розробники класів можуть розширювати цю бібліотеку для зчитування і запису нових типів даних. Для використання бібліотеки iostream в програмі необхідно включити заголовний файл # include <iostream> Операції введення / виводу виконуються за допомогою класів istream ( потоковий введення) і ostream ( потоковий виведення ) . Третій клас , iostream , є похідним від них і підтримує двонаправлене введення / виведення . Для зручності в бібліотеці визначено три стандартних об'єкта - потоку : cin - об'єкт класу istream , який відповідає стандартному вводу . У загальному випадку він дозволяє читати дані з терміналу користувача; cout - об'єкт класу ostream , який відповідає стандартному виведенню . У загальному випадку він дозволяє виводити дані на термінал користувача; cerr - об'єкт класу ostream , який відповідає стандартному виведенню помилок. У цей потік ми направляємо повідомлення про помилки програми . Висновок здійснюється , як правило , за допомогою перевизначенного оператора зсуву вліво ( << ) , а введення - за допомогою оператора зсуву вправо ( >> ) : Крім читання з терміналу і запису на нього , бібліотека iostream підтримує читання і запис у файл . Для цього призначені наступні класи: ifstream , похідний від istream , пов'язує введення програми з файлом ; ofstream , похідний від ostream , пов'язує виведення програми з файлом ; fstream , похідний від iostream , пов'язує як введення , так і виведення програми з файлом. Щоб використати частину бібліотеки iostream , пов'язану з файловим введенням / виведенням , необхідно включити в програму заголовний файл # include <fstream> (Файл fstream вже включає iostream , так що включати обидва файли необов'язково. ) Файловий ввід / вивід підтримується тими ж операторами : # include <fstream> # include <string> # include <vector> # include <algorithm> int main ( ) {    string ifile ;    cout < " Введіть ім'я файлу для сортування :";    cin >> ifile ;    / / Сконструювати об'єкт класу ifstream для введення з файлу    ifstream infile ( ifile.c_str ( )) ;    if (! infile ) {       cerr < " помилка: не можу відкрити вхідний файл : "            < Ifile < endl ;       return -1 ;    }    string ofile = ifile + ". sort " ;    / / Сконструювати об'єкт класу ofstream для виводу у файл    ofstream outfile ( ofile.c_str ( )) ;    if (! outfile ) {       cerr << " помилка: не можу відкрити вихідний файл : "            << Ofile << endl ;       return -2 ;    }    string buffer ;    vector < string , allocator > text ;    int cnt = 1 ;    while ( infile >> buffer ) {          text.push_back ( buffer ) ;          cout << buffer << ( cnt + + % 8 ? "" : "\ n " ) ;    }    sort ( text.begin ( ) , text.end ( )) ;    / / Виводимо безліч відсортованих слів в файл    vector <string > :: iterator iter = text.begin ();    for ( cnt = 1 ; iter ! = text.end (); + + iter , + + cnt )        outfile << * iter                << ( Cnt % 8 ? "" : "\ N " ) ;    return 0 ; } Бібліотека iostream підтримує також введення / виведення в область пам'яті , при цьому потік зв'язується з рядком в пам'яті програми . За допомогою потокових операторів введення / виведення ми можемо записувати дані в цей рядок і зчитувати їх з нього. Об'єкт для строкового введення / виводу визначається як екземпляр одного з наступних класів : istringstream , похідний від istream , читає з рядка ; ostringstream , похідний від ostream , пише в рядок ; stringstream , похідний від iostream , виконує як читання , так і запис . Для використання будь-якого з цих класів у програму потрібно включити заголовний файл # include <sstream> (Файл sstream вже включає iostream , так що включати обидва файли необов'язково. ) У наступному фрагменті об'єкт класу ostringstream використовується для форматування повідомлення про помилку , яке повертається викликає програмі . Потоки введення / виведення підтримують два зумовлені типи: char і wchar_t. У цьому розділі ми розповімо тільки про читання і запису в потоки даних типу char . Крім них , у бібліотеці iostream є набір класів і об'єктів для роботи з типом wchar_t . Вони відрізняються від відповідних класів , що використовують тип char , наявністю префікса ' w ' . Так , об'єкт стандартного введення називається wcin , стандартного виводу - wcout , стандартного виводу для помилок - wcerr . Але набір заголовків файлів для char і wchar_t один і той же. Класи для введення / виведення даних типу wchar_t називаються wostream , wistream , wiostream , для файлового введення / виводу - wofstream , wifstream , wfstream , а для строкового - wostringstream , wistringstream , wstringstream . Безформатне уведення-виведення Коли файл відкривається в текстовому режимі, відбувається наступне: при введенні кожна пара символів '\r' +' \n' (повернення каретки + переклад рядка) перетвориться в символ перекладу рядка ('\n'); при виводі кожен символ перекладу рядка ('\n') перетвориться в пару '\r' +'\n' (повернення каретки + переклад рядка). Це не завжди зручно. Якщо необхідно використовувати файл виводу для подальшого введення в програму (можливо, іншу), зайві байти інформації ні до чого. З цією метою система введення-виводу надає можливість здійснення безформатного введення-виводу, тобто записи і читання двійкової інформації (інколи говорять - сирих даних). Для здійснення введення-виводу в двійковому режимі потрібно включити прапор ios::binary в параметр open_mode, передаваний конструктору потоку або функції open(). Читання двійкової інформації з файлу здійснюється функцією read(), яка має наступні прототипи: istream & read(char* s, int n); istream & read(unsigned char* s, int n); Тут параметр s задає буфер для прочитування даних, а параметр n - число читаних символів. Запис двійкових даних здійснює функція-член write(): оstream& write(const char * s, int n); оstream& write(const unsigned char * s, int n); Ця функція отримує n символів з буфера, адреса якого задана параметром s, і вставляє їх в потік виводу. Розглянемо приклад. #include< iоstream.h > #include< fstream.h > void main() {      int x = 255;      char str[80]= "Тестування двійкового введення-виводу.";      // Відкриваємо файл для виводу в двійковому режимі      ofstream ofs("Test.dat");      if (!ofs) { cout << "Файл не відкритий.\n"; return; }      ofs.write((char*)&x, sizeof(int));      ofs.write((char*)&str, sizeof(str));      ofs.close();      // Відкриваємо файл для виводу в двійковому режимі      ifstream ifs("Test.dat");      if (!ifs) { cout << "Файл не відкритий.\n"; return; }      ifs.read((char*)&x, sizeof(int));      ifs.read((char*) str, sizeof(str));      cout << x << '\n' << str << '\n'; } Часто вживані функції бібліотеки введення / виводу Окрім вже описаних функцій, бібліотека введення-виведення C++ містить широкий набір різних функцій. Тут ми приведемо лише деякі, що найчастіше вживаються з них. Більшість цих функцій використовуються для безформатного введення-виводу. Для витягання символу з потоку можна використовувати функцію-член get() потоку istream . Вона має наступні прототипи: int get(); istream & get(signed char*, int len, char delim= '\n'); istream & get(unsigned char*, int len, char delim= '\n'); istream & get(unsigned char &); istream & get(signed char &); istream & get(streambuf &, char delim= '\n'); Функція get() у першій формі повертає код прочитаного символу або -1, якщо зустрівся кінець файлу введення (ctrl/z). Наведемо приклад використання функції get (): #include < iоstream.h > void main(){ char ch; cout << "Введіть число. " << "Для завершення введення натискуйте < ENTER >:"; while (cin.get(ch)){ // Перевірка на код клавіші < ENTER > if (ch = = '\n') break; } return; } Для вставки символу в потік виводу використовується функція put() з прототипом ostreaiu& put(char ch). Функція get () може також використовуватися для читання рядка символів. В цьому випадку використовуються її варіанти, в яких ця функція витягує з вхідного потоку символи в буфер str, поки не зустрінеться символ-обмежувач delim (за умовчанням - переклад рядка) або не буде прочитано (len-1) символів, або не буде прочитана ознака кінця файлу. Сам символ-обмежувач не витягується з вхідного потоку. З огляду на те, що функція get() не витягує з вхідного потоку символ-обмежувач, вона використовується рідко. Набагато частіше використовується функція getline(), яка витягує з вхідного потоку символ-обмежувач, але не поміщає його в буфер. Вона має наступні прототипи: istream & getline (char* str, int len, char delim); istream & getline(char * str, int len); Тут параметри мають ті ж призначення, що і у функції get(). Функція gcount() (з прототипом int gcount()const;) повертає число символів, що витягують з потоку останньою операцією безформатного введення (тобто функцією get(), getline() або read()). Розглянемо приклад, в якому використовуються дві останні функції: #include < iоstream.h > void main(){ char *name; int len = 100; int count = 0; name = new char[len]; cout << "Введіть своє ім'я:"; cin.getline(name, len); count = cin.gcount(); // Зменшуємо значення лічильника на 1, оскільки // getline() не поміщає обмежувач в буфер cout << "\nЧисло прочитаних символів: " << count - 1; } Для того, щоб пропустити при введенні декілька символів, використовується функція ignore(): istream & ignore(int n = l, int delim = EOF); Ця функція ігнорує аж до n символів у вхідному потоці. Пропуск символів припиняється, якщо вона зустрічає символ-обмежувач, яким за умовчанням є символ кінця файлу. Символ-обмежувач витягується з вхідного потоку. Функція рейок(), що має прототип int рейок(), дозволяє "заглянути" у вхідний потік і взнати наступний символ, що вводиться. При цьому сам символ з потоку не витягується. За допомогою функції putback() (з прототипом istream &putback(char ch);) можна повернути символ ch в потік введення. При виконанні виводу дані не відразу записуються у файл, а тимчасово зберігаються в пов'язаному з потоком буфері, поки він не заповниться. Функція flush() дозволяє викликати примусовий запис у файл до заповнення буфера. Вона неявно використовується маніпулятором endl. Цей маніпулятор вставляє в потік символ перекладу рядка і очищає буфер. Таким чином, оператор cout << endl; эквивалентен наступним: cout << '\n'; cout.flush(); Функція rdbuf() дозволяє отримати покажчик на пов'язаний з потоком буфер. Ця функція має прототип streambuf * rdbuf() const; Нарешті, функція setbuf() з прототипом void setbuf(char*buf, int n) дозволяє пов'язати з потоком інший буфер. Тут buf - покажчик на інший буфер довжини n. Файлове уведення-виведення з використанням потоків Для здійснення операцій з файлами передбачено три класи: ifstream, ofstream і fstream. Ці класи є похідними, відповідно, від класів istream, оstream і iоstream. Оскільки ці останні класи, у свою чергу, є похідними від класу ios, класи файлових потоків успадковують всі функціональні можливості своїх батьків (переобтяжені операції << і >> для вбудованих типів, функції і прапори форматування, маніпулятори і ін.). Для реалізації файлового введення-виводу потрібно включити в програму заголовний файл fstream.h. Існує невелика відмінність між використанням зумовлених і файлових потоків. Файловий потік має бути пов'язаний з файлом перш, ніж його можна буде використовувати. З іншого боку, зумовлені потоки можуть використовуватися відразу після запуску програми, навіть в конструкторах статичних класів, які виконуються навіть раніше виклику функції main(). Можна позиціювати файловий потік в довільну позицію у файлі, тоді як для зумовлених потоків це зазвичай не має сенсу. Для створення файлового потоку ці класи передбачають наступні форми конструктора: створити потік, не пов'язуючи його з файлом: ifstream(); ofstream(); fstream(); створити потік, відкрити файл і пов'язати потік з файлом: ifstream(const char *name, ios::openmode mode = ios::in); ofstream(const char* name, ios::openmode mode=ios::out | ios::trunc); fstream(const char * name, ios::openmode mode = ios::in | ios::out); Аби відкрити файл для введення або виводу, можна використовувати другу форму потрібного конструктора, наприклад: fstream fs("FileName.dat"); або спочатку створити потік за допомогою першої форми конструктора, а потім відкрити файл і пов'язати потік з відкритим файлом, викликавши функцію-член open(). Ця функція визначена в кожному з класів потокового введення-виводу і має наступні прототипи: void ifstream::open(const char *name, ios::openmode mode = ios::in); void ofstream::open (const char * name, ios::openmode mode = ios::out | ios::trunc); void fstream::open (const char * name, ios::openmode mode = ios::in | ios::out); Тут name - ім'я файлу, mode - режим відкриття файлу. Параметр mode є перерахуванням і може набувати значень, вказаних в таблиці. 11.5. Таблиця 1. Режими відкриття і їх призначення Режим відкриття Призначення  ios::in Відкрити файл для читання  ios::out Відкрити файл для запису  ios::ate Початок виводу встановлюється в кінець файлу  ios::app Відкрити файл для додавання в кінець  ios::trunc Усікти файл, тобто видалити його вміст  ios::binary Двійковий режим операцій   Режими відкриття файлу є бітовими масками, тому можна задавати два або більш за режим, об'єднуючи їх побітовою операцією АБО. У наступному фрагменті коди файл відкривається для виводу за допомогою функції open(): ofstream ofs; ofs.open("FileName.dat"); Звернемо увагу, що за умовчанням режим відкриття файлу відповідає типові файлового потоку. В потоку введення або виводу прапор режиму завжди встановлений неявно. Наприклад, для потоку виводу в режимі додавання файлу можна замість оператора ofstream ofs("FName.txt", ios::out | ios::app); написать ofstream ofs("FName.txt", ios::app); Між режимами відкриття файлу ios::ate і ios::app є невелика різниця. Якщо файл відкривається в режимі додавання, весь вивід у файл здійснюватиметься в позицію, що починається з поточного кінця файлу, безвідносно до операцій позиціювання у файлі. У режимі відкриття ios::ate (від англійського "at end") можна змінити позицію виводу у файл і здійснювати запис, починаючи з її. Для потоків виводу режим відкриття еквівалентний ios::out | ios::trunc, тобто можна опустити режим усікання файлу. Проте для потоків введення-виведення його потрібно вказувати явно. Файли, які відкриваються для виводу, створюються, якщо вони ще не існують. Якщо відкриття файлу завершилося невдачею, об'єкт, відповідний потоку, повертатиме 0: if (!ofs){ cout << "Файл не відкрит\n";} Перевірити успішність відкриття файлу можна також за допомогою функції-члена is_open(), що має наступний прототип: int is_open() const; Функція повертає 1, якщо потік удалося пов'язати з відкритим файлом. Наприклад if (!ofs.is_open()){ cout << "Файл не відкрит\n"; return; } Якщо при відкритті файлу не вказаний режим ios::binary, файл відкривається в текстовому режимі і після того, як файл успішно відкритий, для виконання операцій введення-виводу можна використовувати операторів витягання і вставки в потік. Для перевірки, чи досягнутий кінець файлу, можна використовувати функцію ios::eof(), що має прототип int eof(); Завершивши операції введення-виводу, необхідно закрити файл, викликавши функцію-член close() з прототипом void close(): ofs.close(); Закриття файлу відбувається автоматично при виході потокового об'єкту з області існування, коли викликається деструкція потоку. Розглянемо приклад, що демонструє файлове уведення-виведення з використанням потоків: #include < iоstream.h > #include < fstream.h > void main(){ int n = 50; // Відкриваємо файл для виводу ofstream ofs("Test.txt"); if (!ofs) {cout << "Файл не відкритий.\n"; return;} ofs << "Hello!\n" << n; // Закриваємо файл ofs.close(); // відкриваємо той же файл для введення ifstream file("Test.txt"); if (!file) {cout << "Файл не відкритий.\n"; return;} char str[80]; file >> str >> n; cout << str << " " << n << endl; // Закриваємо файл file.close(); } Завдання до курсової роботи Визначити клас для шахової фігури- ферзь. Основні класи: 1) шахова фігура ферзь (колір, координата по вертикалі, координата по горизонталі) 2) шахова фігура ферзь зі зміненими координатами. Основні функції: 1) Додавання фігури 2) Переміщення фігури UML - діаграма прецедентів користувач UML – Діаграма класів Figure  int x,color; AnsiString nameF, y;   Figure() void set_x(int x_n) int get_x() void set_y(AnsiString y_n) AnsiString get_y() void set_color_nameF(int color_n) i nt get_color() virtual bool move()=0   Ferz  int x1; AnsiString y1 ;  void set_x1(int x1_n) int get_x1() void set_y1(AnsiString y1_n) AnsiString get_y1() bool move() void view(TImage *image) void image(TImage *Image)  TList    Capacity() Count() Items[] Add() Delete() Pack() Move() Exchange()   TList    __fastcall ~FerzList() void DelFerz(int i) void AddFerz(int s_x, AnsiString s_y, int s_x1, AnsiString s_y1, int s_color) Ferz* GetFerz(int i) void FindFerz(AnsiString s_nameF, int s_color) static int __fastcall SortListByInt(void * Item1, void * Item2) void SortByInt()   UML - Діаграма компонентів Дерево функцій Створюється класс Ферзь Обирається колір Встановлюється початкова координата х Встановлюється початкова координата у Встановлюється координата переміщення х1 Встановлюється координата переміщення у1 Переміщення Опис класів class TList – призначений для створення класу – контейнеру class Figure: поля: x – координата х color – колір nameF – назва y – координата у методи: Figure() – конструктор void set_x(int x_n) – метод для зміни координати х int get_x() – метод для отримання координати х void set_y(AnsiString y_n)– метод для зміни координати у AnsiString get_y()–метод для отримання координати у void set_color_nameF(int color_n) – метод для встановлення коліру int get_color() – метод для отримання коліру class Ferz: поля: x1 – координата х y1 – координата у методи: Figure() – конструктор void set_x1(int x1_n)– метод для зміни координати х int get_x1()– метод для отримання координати х void set_y1(AnsiString y1_n) – метод для зміни координати у AnsiString get_y1() –метод для отримання координати у bool move() – метод, що опрацьовує рух фігури void view(TImage *image) – метод для загрузки картинки void image(TImage *Image) – метод для відображення фігури на сітці class FerzList : public TList методи: __fastcall ~FerzList() – деструктор void AddFerz(int s_x, AnsiString s_y, int s_x1, AnsiString s_y1, int s_color) – метод для внесення ферзя до списку void DelFerz(int i) – метод для видалення ферзя Ferz* GetFerz(int i) – метод для отримання даних про ферзя void FindFerz(AnsiString s_nameF, int s_color) – метод для пошуку ферзя static int __fastcall SortListByInt(void * Item1, void * Item2) – метод-правило сортування списку void SortByInt() – метод, що сортує список Опис прецедентів Прецедент «Запуск програми» Типовий хід подій  Дії користувача Відгук програми  Запуск Шахова дошка, координати фігур, кольори, координати їх переміщення.   Прецедент «Додавання фігури 1 і фігури 2» Типовий хід подій  Дії користувача Відгук програми  Натиснули «Фігура 1» Відкрилося вікно, що фігура може знаходитися у данних кординатах.  Ввели координати для другої фігури, натиснули «Фігура 2» Відкрилося вікно, що фігура може знаходитися у данних координатах.   Прецедент «Додавання фігури 1 і фігури 2» Альтернативний хід подій  Дії користувача Відгук програми  Ввели не правильні координати Виведено повідомлення про неправильність координат   Прецедент «Видалення фігури» Типовий хід подій  Дії користувача Відгук програми  Ввели дані в поле «координати», натиснули «видалити» Фігуру видалено.   Прецедент «Переміщення фігури» Типовий хід подій  Дії користувача Відгук програми  Натиснули «Перемісти ф1» Відкрилося вікно, що фігура може знаходитися у данних кординатах  Натиснули «Перемісти ф2» Відкрилося вікно, що фігура може знаходитися у данних кординатах   Прецедент «Переміщення фігури» Альтернативний хід подій  Дії користувача Відгук програми   3. Ввели не правильні дані  4. Виведено повідомлення про неправильність координат.  Прецедент «Вихід з програми» Типовий хід подій  Дії користувача Відгук програми  Натиснули «закрити програму» Програма закрилась  Опис програмного інтерфейсу користувача / TImage TButton TTextBox TLabel TComboBox Тестовий приклад/ Рис. 4. Тестовий приклад Текст програми Unit1.cpp //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- //Ferz F; //Ferz F2; FerzList *F = new FerzList(); void __fastcall TForm1::Button2Click(TObject *Sender) { exit(1); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // F.AddFerz( F->AddFerz(StrToInt(Edit1->Text), Edit2->Text, StrToInt(Edit4->Text), Edit5->Text,ComboBox1->ItemIndex); // F.set_color_nameF(ComboBox1->ItemIndex); // F.set_x(StrToInt(Edit1->Text)); // F.set_y(Edit2->Text); // F.set_x1(StrToInt(Edit4->Text)); // F.set_y1(Edit5->Text); if(F->GetFerz(0)->move()){ F->GetFerz(0)->set_x1(StrToInt(Edit1->Text)); F->GetFerz(0)->set_y1(Edit2->Text); F->GetFerz(0)->image(Image1); Image1->Visible=true; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { if(F->GetFerz(0)->get_x()==0) ShowMessage("Задайте спочатку координати фігури"); else { F->GetFerz(0)->set_x1(StrToInt(Edit4->Text)); F->GetFerz(0)->set_y1(Edit5->Text); if(F->GetFerz(0)->move()) { F->GetFerz(0)->image(Image1); F->GetFerz(0)->set_x(StrToInt(Edit4->Text)); F->GetFerz(0)->set_y(Edit5->Text); Image1->Visible=true; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { /* F2.set_color_nameF(ComboBox1->ItemIndex); F2.set_x(StrToInt(Edit1->Text)); F2.set_y(Edit2->Text); F2.set_x1(StrToInt(Edit4->Text)); F2.set_y1(Edit5->Text); */ F->AddFerz(StrToInt(Edit1->Text), Edit2->Text, StrToInt(Edit4->Text), Edit5->Text,ComboBox1->ItemIndex); if(F->GetFerz(1)->move()){ F->GetFerz(1)->set_x1(StrToInt(Edit1->Text)); F->GetFerz(1)->set_y1(Edit2->Text); F->GetFerz(1)->image(Image3); Image3->Visible=true; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { if(F->GetFerz(1)->get_x()==0) ShowMessage("Задайте спочатку координати фігури"); else { F->GetFerz(1)->set_x1(StrToInt(Edit4->Text)); F->GetFerz(1)->set_y1(Edit5->Text); if(F->GetFerz(1)->move()) { F->GetFerz(1)->image(Image3); F->GetFerz(1)->set_x(StrToInt(Edit4->Text)); F->GetFerz(1)->set_y(Edit5->Text); Image3->Visible=true; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button6Click(TObject *Sender) { if(F->Count>=1) { F->DelFerz(0); Image1->Visible=false; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button7Click(TObject *Sender) { if(F->Count>=2) { F->DelFerz(1); Image3->Visible=false; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Image2Click(TObject *Sender) { } //--------------------------------------------------------------------------- Unit1.h //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <jpeg.hpp> #include <Dialogs.hpp> //#include <list.h> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TImage *Image1; TButton *Button1; TButton *Button2; TEdit *Edit1; TEdit *Edit2; TLabel *Label1; TLabel *Label2; TLabel *Label3; TLabel *Label4; TEdit *Edit4; TLabel *Label5; TEdit *Edit5; TLabel *Label6; TLabel *Label7; TImage *Image2; TComboBox *ComboBox1; TButton *Button3; TButton *Button4; TButton *Button5; TImage *Image3; TButton *Button6; TButton *Button7; void __fastcall Button2Click(TObject *Sender); void __fastcall Button1Click(TObject *Sender); void __fastcall Button3Click(TObject *Sender); void __fastcall Button4Click(TObject *Sender); void __fastcall Button5Click(TObject *Sender); void __fastcall Button6Click(TObject *Sender); void __fastcall Button7Click(TObject *Sender); void __fastcall Image2Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- class Figure { protected: int x,color; public: AnsiString nameF, y; Figure(){ x=0; nameF='?'; y='?'; color=
Антиботан аватар за замовчуванням

06.02.2014 00:24

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!