Об'єктно-орієнтоване програмування. Розробка програмного забезпечення

Особливості об'єктно-орієнтованого програмування. Розробка програми для елементарних математичних розрахунків, виведення результату на екран та запису у файлі. Сортування слів у рядку. Програма, яка реалізовує ходи шахових фігур. Програма-калькулятор.

Рубрика Программирование, компьютеры и кибернетика
Вид отчет по практике
Язык украинский
Дата добавления 19.03.2015
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Міністерство освіти і науки України

Львівський національний університет ім. Івана Франка

Факультет прикладної математики та інформатики

кафедра теорії оптимальних процесів

Звіт з навчальної практики

Об'єктно-орієнтоване програмування. Розробка програмного забезпечення

Виконав: Сомик Григорій Тарасович,

студент ІІ курсу, групи ПМА-21

Перевірив: ас. Ковальчук О.В.,

доц. Мельничин А.В.

Львів - 2014

1. Програма зчитує з файлу дві матриці, додає, множить (якщо це можливо) розв'язок виводить на екран, та записує у файл.

#include <iostream>

#include <fstream>

#include "windows. h"

using namespace std;

void tofile (ofstream& fout, float** A, int n, int m)

{

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

{

for (int j=0; j<m; j++)

{

fout<<A [i] [j] <<" ";

}

fout<<'\n';

}

fout<<'\n';

}

float** fromfile (ifstream& fin, int& n, int& m)

{

int pos=fin. tellg ();

int k;

int c;

n=0;

m=0;

bool p=true;

while (p)

{

fin>>c;

m++;

if (fin. get () =='\n')

{

++n;

if (fin. get () =='\n') p=false;

else{ k=fin. tellg (); k--; fin. seekg (k); }

};

};

m/=n;

float **A=new float * [n];

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

{

A [i] =new float [m];

};

fin. seekg (pos);

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

{

for (int j=0; j<m; j++)

{

fin>>A [i] [j];

fin. get ();

}

}

fin. get ();

return A;

}

void output (float** A, int n, int m)

{if (A! =NULL)

{

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

{

for (int j=0; j<m; j++)

cout<<A [i] [j] <<flush<<" ";

cout<<endl;

}

cout<<endl;

}

}

float** ADD (float** A, float** B, int n1, int n2, int m1, int m2)

{

if ( (n1==n2) && (m1==m2))

{float **C = new float * [n1];

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

C [i] = new float [m1];

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

for (int j=0; j<m1; j++)

C [i] [j] =A [i] [j] +B [i] [j];

return C;

}

else

{

cout<<"ADD is not possible"<<endl;

return NULL;

}

}

float** MUL (float** A, float** B, int n1, int n2, int m1, int m2)

{

if (m1==n2)

{

float **C = new float * [n1];

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

C [i] = new float [m2];

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

{

for (int j=0; j<m2; j++)

{

C [i] [j] = 0;

for (int k=0; k<m1; k++)

{

C [i] [j] += (A [i] [k] *B [k] [j]);

}

}

}

return C;

}

else

{

cout<<"MUL is not possible"<<endl;

return NULL;

}

}

int main ()

{

SetConsoleOutputCP (1251);

ifstream fin ("input. txt");

ofstream fout;

fout. open ("output. txt");

float **A,**B, **C,**D;

int n1,n2,n3,m1,m2,m3,n4,m4;

int n,m,pos;

cout<<"Вхідні дані: \nA: \n";

A=fromfile (fin,n1,m1);

output (A,n1,m1);

B=fromfile (fin,n2,m2);

cout<<"B: \n";

output (B,n2,m2);

C=ADD (A,B,n1,n2,m1,m2);

D=MUL (A,B,n1,n2,m1,m2);

cout<<"Результат: \nA+B: \n";

if (C! =NULL)

{

n3=n1;

m3=m1;

output (C,n3,m3);

tofile (fout,C,n3,m3);

}

cout<<"A*B\n";

if (D! =NULL)

{

n4=n1;

m4=m2;

output (D,n4,m4);

tofile (fout,D,n4,m4);

}

fin. close ();

fout. close ();

cin. get ();

cin. get ();

return 0;

}

2. Програма яка видаляє з рядку всі слова які починаються та закінчуються на одну й ту саму букву, рядок вводимо з клавіатури.

#include <iostream>

#include <string>

#include "windows. h"

using namespace std;

void edit (string& s)

{

string ss="", word="";

int i=0;

while (i<s. length ())

{

if (isalpha ( (unsigned char) s [i]))

{

while (isalpha ( (unsigned char) s [i]) && i<s. length ()) {word+=s [i]; if (i==s. length () - 1) break; else i++; }

if (word [0]! =word [word. length () - 1]) ss+=word;

else i++;

word="";

}

else {ss+=s [i]; i++; }

}

s=ss;

}

int main ()

{

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

string s,a;

cout<<"Введіть рядок: \n";

getline (cin,s);

edit (s);

cout<<"Редагований рядок: "<<endl;

cout<<s;

cin. get ();

cin. get ();

return 0;

}

3. Програма сортує слова у рядку, рядок вводимо з клавіатури.

#include <iostream>

#include <string>

#include "windows. h"

using namespace std;

void sort (string& s)

{

string ss="", word="";

int i=0;

int k=0;

s+=" ";

while (i<s. length ())

{

if (isalpha ( (unsigned char) s [i]))

{

while (isalpha ( (unsigned char) s [i]) && i<s. length ()) {word+=s [i]; if (i==s. length () - 1) break; else i++; }

k++;

word="";

}

else {i++; }

}

string *smas=new string [k];

i=0;

k=0;

while (i<s. length ())

{

if (isalpha ( (unsigned char) s [i]))

{

while (isalpha ( (unsigned char) s [i]) && i<s. length ()) {word+=s [i]; if (i==s. length () - 1) break; else i++; }

smas [k++] =word;

word="";

}

else {i++; }

}

s="";

string s5="";

for (int j=0; j<k-1; j++)

{for (int l=0; l<k-j-1; l++)

{if (smas [l+1] <smas [l]) {s5=smas [l]; smas [l] =smas [l+1]; smas [l+1] =s5; }}}

for (int j=0; j<k; j++)

s+=smas [j] +" ";

}

int main ()

{

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

string s,a;

cout<<"Введіть рядок: \n";

getline (cin,s);

sort (s);

cout<<"Редагований рядок: "<<endl;

cout<<s;

cin. get ();

cin. get ();

return 0;

}

4. Програма, яка у кожному слові рядка переставляє усі цифри в кінець слова, без зміни порядку.

#include <iostream>

#include <string>

#include "windows. h"

using namespace std;

void edit (string& s)

{

string ss="", word="", digit="";

int i=0;

while (i<s. length ())

{

if (isalnum ( (unsigned char) s [i]))

{

if (s [i] ==' ') break;

while (isalnum ( (unsigned char) s [i]) && i<s. length ())

{

if (s [i] ==' ') break;

if (isdigit ( (unsigned char) s [i])) digit+=s [i];

else word+=s [i];

if (i==s. length () - 1) break; else i++;

}

ss=ss+word+digit+" ";

digit="";

word="";

i++;

}

else {ss+=s [i]; i++; }

}

for (int i=0; i<ss. length () - 1; i++)

s [i] =ss [i];

}

int main ()

{

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

string s,a;

cout<<"Введіть рядок: \n";

getline (cin,s);

edit (s);

cout<<"Редагований рядок: "<<endl;

cout<<s;

cin. get ();

cin. get ();

return 0;

}

5. Програма, яка з заданого масиву виводить на екран ті елементи які є степенями двійки. Для введення масиву та перевірки елементу ми використовуємо покажчики на функцію, передаючи їх параметрами функції.

#include <iostream>

#include "windows. h"

using namespace std;

double* input (int n)

{

double *mas=new double [n];

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

{

cout<<"mas ["<<i+1<<"] =";

cin>>mas [i];

}

return mas;

}

bool check (double a)

{

bool p=false;

for (double i=1; i<=1000; i++)

if (a==pow (2, i)) { p=true; break; }

return p;

}

void dosmth (int n, bool (*p1) (double), double* (*p2) (int))

{

double* mas=p2 (n);

cout<<"Результат: "<<endl;

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

if (p1 (mas [i])) cout<<mas [i] <<" ";

}

int main ()

{

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

bool (*f1) (double);

double* (*f2) (int);

f1=check;

f2=input;

int n=0;

while (n<=0)

{

cout<<"Введіть кількість n=";

cin>>n;

}

dosmth (n,f1,f2);

cin. get ();

cin. get ();

return 0;

}

6. Програма, яка зчитує з файлу структури, в яких міститься інформація про об'єкти, записує кожну структуру в окремий файл, сортує їх (подвійне сортування), та від сортовані структури записує у файл.

#include <iostream>

#include <string>

#include <fstream>

#include <sstream>

#include "windows. h"

using namespace std;

typedef struct

{

string name;

string type;

}port;

typedef struct

{

string producer;

string category;

int portcount;

float priority, price;

port* ports;

}product;

void tofile (ofstream& fout,product p)

{

fout<<p. category<<endl;

fout<<p. producer<<endl;

fout<<p. priority<<endl;

fout<<p. price<<endl;

fout<<p. portcount<<endl;

for (int i=0; i<p. portcount; i++)

{

fout<<p. ports [i]. name<<endl;

fout<<p. ports [i]. type<<endl;

}

}

void printout (product& p)

{

cout<<p. category<<endl;

cout<<p. producer<<endl;

cout<<p. priority<<endl;

cout<<p. price<<endl;

cout<<p. portcount<<endl;

for (int i=0; i<p. portcount; i++)

{

cout<<p. ports [i]. name<<endl;

cout<<p. ports [i]. type<<endl;

}

cout<<endl;

}

product* fromfile (ifstream& fin, int& n)

{

int k=0;

product p;

while (! fin. eof ())

{

getline (fin,p. category);

getline (fin,p. producer);

fin>>p. priority;

fin>>p. price;

fin>>p. portcount;

fin. get ();

for (int i=0; i<p. portcount; i++)

{

getline (fin,p. producer);

getline (fin,p. producer);

}

fin. get ();

k++;

}

n=k;

product* A=new product [n];

k=0;

fin. clear ();

fin. seekg (0);

while (! fin. eof ())

{

getline (fin,p. category);

getline (fin,p. producer);

fin>>p. priority;

fin>>p. price;

fin>>p. portcount;

fin. get ();

p. ports = new port [p. portcount];

for (int i=0; i<p. portcount; i++)

{

getline (fin,p. ports [i]. name);

getline (fin,p. ports [i]. type);

}

fin. get ();

A [k] =p;

k++;

}

return A;

}

int main ()

{

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

int n,a,b;

product* A;

ifstream fin ("input. txt");

A=fromfile (fin,n);

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

{

std:: stringstream out;

out << i;

string s= out. str ();

s="product"+s+". txt";

ofstream fout (s);

tofile (fout,A [i]);

fout. close ();

}

cout<<"сортувати за ціною введіть 0, за пріорітитем введіть інше ціле число ";

cin>>a;

if (a! =0)

{for (int j=0; j<n-1; j++)

{

for (int i=0; i<n-1; i++)

if (A [i]. priority>A [i+1]. priority) {product p=A [i]; A [i] =A [i+1]; A [i+1] =p; }

}

}

else

{for (int j=0; j<n-1; j++)

{

for (int i=0; i<n-1; i++)

if (A [i]. price>A [i+1]. price) {product p=A [i]; A [i] =A [i+1]; A [i+1] =p; }

}

};

cout<<"сортувати за категорією введіть 0, за виробником введіть інше ціле число ";

cin>>b;

if (b==0)

{for (int j=0; j<n-1; j++)

{

for (int i=0; i<n-1; i++)

if (A [i]. category>A [i+1]. category) {product p=A [i]; A [i] =A [i+1]; A [i+1] =p; }

}

}

else

{for (int j=0; j<n-1; j++)

{

for (int i=0; i<n-1; i++)

if (A [i]. producer>A [i+1]. producer) {product p=A [i]; A [i] =A [i+1]; A [i+1] =p; }

}

};

ofstream fout ("sorteddata. txt");

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

{

tofile (fout,A [i]);

if (i! =n-1) fout<<endl;

printout (A [i]);

}

fout. close ();

cin. get ();

cin. get ();

fin. close ();

return 0;

}

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

struct list

{

int val;

struct list* next;

};

class Stack

{

private:

struct list* item;

public:

Stack ();

~Stack ();

bool isempty ();

int pop ();

void push (int);

void delall ();

void pushvect (int*, int);

};

#include <iostream>

#include "classheader. h"

Stack:: Stack ()

{

item=new list;

item=NULL;

std:: cout<<"стек створено\n";

}

bool Stack:: isempty ()

{

bool p;

if (item==NULL) {p=true; std:: cout<<"стек пустий\n"; } else p=false;

return p;

}

void Stack:: push (int a)

{

struct list* p = new list;

p->val = a;

if (isempty ()) p->next = NULL;

else p->next = item;

item=p;

std:: cout<<"елемент "<<a<<" додано у стек\n";

}

int Stack:: pop ()

{

int a;

if (isempty ()) {a=0; }

if (! isempty ())

{

a = item->val;

struct list* p =item;

item = item->next;

delete p;

std:: cout<<"елемент "<<a<<" забрано зі стеку\n";

};

return a;

}

void Stack:: delall ()

{

std:: cout<<"видалено усі елементи зі стеку, ";

struct list*p;

while (! isempty ())

{

p=item;

item=item->next;

delete p;

}

}

void Stack:: pushvect (int* a, int n)

{

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

push (a [i]);

std:: cout<<"вектор з "<<n<<" елементів відправлено у стек\n";

}

Stack:: ~Stack ()

{

std:: cout<<"пам'ять звільнено, ";

delall ();

delete item;

}

#include <iostream>

#include "classheader. h"

#include "windows. h"

int main ()

{

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

int* b=new int [10];

Stack a;

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

b [i] =i;

a. pushvect (b,10);

int c;

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

c=a. pop ();

a. push (10);

a. ~Stack ();

std:: cin. get ();

return 0;

}

8. Програма, у якій зчитуємо дані про n двигунів (назву, потужність, кількість), записуємо ці дані у бінарний файл, зчитуємо їх з нього та виводимо сумарну потужність (потужність*кількість) на екран.

#include <iostream>

#include <fstream>

#include <string>

#include "windows. h"

class Engine

{

public:

std:: string name;

int count, power;

Engine ()

{

power=0;

count=0;

name="";

}

int GetSumPower () {return power*count; }

};

int main ()

{

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

Engine *A=new Engine [4];

Engine *B=new Engine [4];

std:: ofstream fout ("data. txt");

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

{

do

{

std:: cout<<"Введіть назву "<<i+1<<" двигуна: ";

std:: cin>>A [i]. name;

}while (A [i]. name=="");

do

{

std:: cout<<"Введіть потужність "<<i+1<<" двигуна: ";

std:: cin>>A [i]. power;

}while (A [i]. power<=0);

do

{

std:: cout<<"Введіть кількість кінських сил "<<i+1<<" двигуна: ";

std:: cin>>A [i]. count;

}while (A [i]. count<=0);

fout. write ( (char*) & (A [i]),sizeof (A [i]));

std:: cout<<std:: endl;

}

fout. close ();

std:: ifstream fin ("data. txt");

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

{

fin. read ( (char*) & (B [i]),sizeof (B [i]));

std:: cout<<B [i]. name<<" кількість*потужність: "<<B [i]. GetSumPower () <<std:: endl;

}

fin. close ();

std:: cin. get ();

std:: cin. get ();

return 0;

}

9. Програма, в який є базовий абстрактний клас фігура та два похідні класи: трикутник та чотирикутник. Зчитуємо з клавіатури n фігур (прямокутників, трикутників) та рахуємо їхню площу.

#include <iostream>

#include <string>

#include "windows. h"

class Figure

{

public:

std:: string name;

public:

virtual float Square () =0;

virtual void Show () =0;

};

class Triangle: public Figure

{

private:

int a,b,c;

public:

Triangle (int a1=1, int b1=1, int c1=1)

{

name="Трикутник";

(a1<=0)? a=1: a=a1;

(b1<=0)? b=1: b=b1;

(c1<=0)? c=1: c=c1;

}

~Triangle ()

{

std:: cout<<name<<" "<<a<<" "<<b<<" "<<c<<" said bye\n";

}

float Square ()

{

float p= (a+b+c) /2;

return std:: sqrt (p* (p-a) * (p-b) * (p-c));

}

void Show ()

{

std:: cout<<name<<" "<<a<<" "<<b<<" "<<c;

}

};

class Rect: public Figure

{

private:

int a,b;

public:

Rect (int a1=1, int b1=1)

{

name="Прямокутник";

(a1<=0)? a=1: a=a1;

(b1<=0)? b=1: b=b1;

}

~Rect ()

{

std:: cout<<name<<" "<<a<<" "<<b<<" said bye\n";

}

float Square ()

{

return a*b;

}

void Show ()

{

std:: cout<<name<<" "<<a<<" "<<b;;

}

};

int main ()

{

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

int n;

do

{

std:: cout<<"Введіть кількість фігур n=";

std:: cin>>n;

}

while (n<=0);

Figure** B= new Figure* [n];

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

{

int p;

std:: cout<<i+1<<": Введіть 0, щоб створити трикутник, або інше ціле число, щоб створити прямокутник ";

std:: cin>>p;

if (p)

{

int a,b;

std:: cout<<"Введіть сторону прямокутника a: ";

std:: cin>>a;

std:: cout<<"Введіть сторону прямокутника b: ";

std:: cin>>b;

B [i] =new Rect (a,b);

}

else

{

int a,b,c;

std:: cout<<"Введіть сторону трикутника a: ";

std:: cin>>a;

std:: cout<<"Введіть сторону трикутника b: ";

std:: cin>>b;

std:: cout<<"Введіть сторону трикутника c: ";

std:: cin>>c;

B [i] =new Triangle (a,b,c);

}

}

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

{

std:: cout<<i+1<<" "; B [i] - >Show (); std:: cout<<" площа: "<<B [i] - >Square () <<"см кв. \n";

}

std:: cin. get ();

std:: cin. get ();

return 0;

}

10. Програма, яка демонструє реалізацію множинного наслідування, є два батьківських класи (чоловік, жінка) та похідний від них (дитина), створюємо екземпляр похідного класу.

#include <iostream>

#include <ostream>

#include <string>

#include "windows. h"

class Man

{

public:

int tall, age;

std:: string name;

Man (int t=170, int a=18,std:: string n="Tasik")

{

(t<10)? tall=170: tall=t;

(a<0)? age=18: age=a;

(n=="")? name="Tasik": name=n;

}

virtual void Show ()

{

std:: cout<<name<<" "<<age<<" "<<age<<'\n';

}

};

class Woman

{

public:

int width, size;

std:: string name;

Woman (int w=90, int s=40,std:: string n="Babinka")

{

(w<10)? width=90: width=w;

(s<0)? s=40: size=s;

(n=="")? name="Babinka": name=n;

}

virtual void Show ()

{

std:: cout<<name<<" "<<width<<" "<<size<<'\n';

}

};

class Child: public Man, public Woman

{

private:

public:

void Show ()

{

std:: cout<<Man:: name<<" "<<Man:: age<<" "<<Man:: tall<<" "<<Woman:: size<<" "<<Woman:: width<<'\n';

}

Child (int t=170, int a=18,std:: string n="Tasik", int w=90, int s=40): Man (t,a,n),Woman (w,s,n) {}

};

int main ()

{

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

int tall,age,size,width;

std:: string name;

do

{

std:: cout<<"Введіть ім'я дитини =";

std:: cin>>name;

}while (name=="" || name==" ");

do

{

std:: cout<<"Введіть вік дитини =";

std:: cin>>age;

}while (age<=0);

do

{

std:: cout<<"Введіть висоту дитини =";

std:: cin>>tall;

}while (tall<=0);

do

{

std:: cout<<"Введіть розмір стопи дитини =";

std:: cin>>size;

}while (size<=0);

do

{

std:: cout<<"Введіть ширину дитини =";

std:: cin>>width;

}while (width<=0);

Child a (tall,age,name,width,size);

std:: cout<<std:: endl;

a. Show ();

std:: cin. get ();

std:: cin. get ();

return 0;

}

11. Програма яка зчитує дані з файлу, та створює прогресії та виводить їх суму.

#include <iostream>

#include <fstream>

#include "windows. h"

class base

{

protected:

double q,a0;

public:

virtual double sumup (int) =0;

base (double a01=1, double q1=0.5)

{

(a01==0)? a0=1: a0=a01;

(q1==0 || q1==1)? q=0.5: q=q1;

}

~base ()

{

};

virtual void show (std:: ostream& os)

{

os<<a0<<" "<<q;

}

virtual void fromfile (std:: ifstream& os)

{

double a01,q1;

os>>a01;

os>>q1;

(a01==0)? a0=1: a0=a01;

(q1==0 || q1==1)? q=0.5: q=q1;

}

friend std:: ostream& operator<< (std:: ostream& os, base& a)

{

a. show (os);

return os;

}

friend std:: ifstream& operator>> (std:: ifstream& os, base& a)

{

a. fromfile (os);

return os;

}

};

class progression: public base

{

public:

progression (double a01=1, double q1=0.5): base (a01,q1)

{

};

virtual double sumup (int n)

{

if (n<0) n=1;

return (a0-a0*pow (q,n) *q) / (1-q);

}

double getN (int n)

{

return pow (q,n) *a0;

}

~progression () {};

void show (std:: ostream& os)

{

os<<"геометрична прогресія ";

base:: show (os);

}

void fromfile (std:: ifstream& os)

{

base:: fromfile (os);

}

friend std:: ostream& operator<< (std:: ostream& os, progression& a)

{

a. show (os);

return os;

}

friend std:: ifstream& operator>> (std:: ifstream& os, progression& a)

{

a. fromfile (os);

return os;

}

};

class infinity_progression: public base

{

private:

public:

infinity_progression (double a01=1,double q1=0.5): base (a01,q1)

{

}

double sumup (int n=0)

{

return a0/ (1-q);

}

void show (std:: ostream& os)

{

os<<"нескінченна геометрична прогресія ";

base:: show (os);

}

void fromfile (std:: ifstream& os)

{

base:: fromfile (os);

}

friend std:: ostream& operator<< (std:: ostream& os, infinity_progression& a)

{

a. show (os);

return os;

}

friend std:: ifstream& operator>> (std:: ifstream& os, infinity_progression& a)

{

a. fromfile (os);

return os;

}

~infinity_progression () {}

};

int main ()

{

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

infinity_progression a;

progression b;

std:: ifstream fin ("input. txt");

int n,k=0;

do

{

std:: cout<<"Введіть n для сум скінченних геометричних прогресій n=";

std:: cin>>n;

}

while (n<=0);

while (! fin. eof ())

{

fin>>a;

k++;

}

fin. clear ();

fin. seekg (0);

base **mas=new base* [k];

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

{

if (i % 2==0)

{fin>>a; mas [i] =&a; }

else

{fin>>b; mas [i] =&b; }

std:: cout<<*mas [i] <<" "<<mas [i] - >sumup (n) <<"\n";

}

std:: cin. get ();

std:: cin. get ();

return 0;

}

об'єктне орієнтоване програмування програма

12. Програма, яка демонструє переваження операторів для класу дробів.

#include <iostream>

class fraction

{

private:

int num;

int den;

fraction& simplify ();

public:

fraction ();

fraction (int a, unsigned b = 1);

fraction (const fraction& f);

~fraction ();

void show (std:: ostream& os) const;

fraction add (const fraction& f) const;

fraction operator+ (const fraction& f) const;

fraction operator- (const fraction& f) const;

fraction operator/ (const fraction& f) const;

fraction operator* (const fraction& f) const;

fraction operator= (const fraction& f) const;

friend bool operator== (const fraction& a, const fraction& b);

friend bool operator! = (const fraction& a, const fraction& b);

friend bool operator<= (const fraction& a, const fraction& b);

friend bool operator>= (const fraction& a, const fraction& b);

friend bool operator< (const fraction& a, const fraction& b);

friend bool operator> (const fraction& a, const fraction& b);

};

std:: ostream& operator<< (std:: ostream& os, const fraction& f);

#include "fraction. h"

#include <iostream>

fraction:: fraction (): num (0), den (1)

{

num = 0; den = 1;

}

fraction:: fraction (int a, unsigned b): num (a)

{

if (b > 0) den = b;

else

{

den = 1;

std:: cerr << "error: wrong denominator\n";

}

simplify ();

}

fraction:: fraction (const fraction& f)

{

num = f. num; den = f. den;

}

fraction:: ~fraction ()

{

}

void fraction:: show (std:: ostream& os) const

{

os << num << '/' << den;

}

fraction fraction:: add (const fraction& f) const

{

int a = this->num*f. den + this->den*f. num;

int b = this->den * f. den;

return fraction (a,b). simplify ();

}

fraction fraction:: operator+ (const fraction& f) const

{

int a = this->num*f. den + this->den*f. num;

int b = this->den * f. den;

return fraction (a,b). simplify ();

}

fraction fraction:: operator= (const fraction& f) const

{

return fraction (f);

}

fraction fraction:: operator/ (const fraction& f) const

{

int a = this->num * f. den;

int b = this->den * f. num;

return fraction (a,b). simplify ();

}

fraction fraction:: operator- (const fraction& f) const

{

int a = this->num * f. den - this->den * f. num;

int b = this->den * f. den;

return fraction (a,b). simplify ();

}

fraction fraction:: operator* (const fraction& f) const

{

int a = this->num * f. num;

int b = this->den * f. den;

return fraction (a,b). simplify ();

}

fraction& fraction:: simplify ()

{

int a = this->num;

int b = this->den;

while (a! = b)

{

if (a > b) a - = b;

else b - = a;

}

if (a > 1)

{

num /= a;

den /= a;

}

return *this;

}

std:: ostream& operator<< (std:: ostream& os, const fraction& f)

{

f. show (os);

return os;

}

bool operator== (const fraction& a, const fraction& b)

{

if (a. num==b. num && a. den==b. den) return true;

else return false;

}

bool operator! = (const fraction& a, const fraction& b)

{

return! (a==b);

}

bool operator< (const fraction& a, const fraction& b)

{

float a1=float (a. num) /a. den, b1=float (b. num) /b. den;

return (a1<b1);

}

bool operator> (const fraction& a, const fraction& b)

{

float a1=float (a. num) /a. den, b1=float (b. num) /b. den;

return (a1>b1);

}

bool operator>= (const fraction& a, const fraction& b)

{

return! (a<b);

}

bool operator<= (const fraction& a, const fraction& b)

{

return! (a>b);

}

#include "fraction. h"

#include <iostream>

fraction makeDefaultFraction ()

{

return fraction ();

}

fraction retCopyFraction (fraction& t)

{

return t;

}

int main ()

{

fraction b (8,24);

fraction c (1,2);

fraction d=c;

std:: cout<<"b: "<<b<<"\n";

std:: cout<<"d: "<<d<<"\n";

std:: cout<<"d<b: "<< (d<b) <<"\n";

std:: cout<<"d>b: "<< (d>b) <<"\n";

std:: cout<<"d==b: "<< (d==b) <<"\n";

std:: cout<<"d! =b: "<< (d! =b) <<"\n";

std:: cout<<"d<=b: "<< (d<=b) <<"\n";

std:: cout<<"d>=b: "<< (d>=b) <<"\n";

std:: cout<<"d+b: "<< (d+b) <<"\n";

std:: cout<<"d-b: "<< (d-b) <<"\n";

std:: cout<<"d*b: "<< (d*b) <<"\n";

std:: cout<<"d/b: "<< (d/b) <<"\n";

std:: cin. get ();

std:: cin. get ();

return 0;

}

13. Програма, яка за допомогою канви малює чотирикутник та визначає його тип, площу, периметр.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, Math, ComCtrls;

type

TForm1 = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

StatusBar1: TStatusBar;

N2: TMenuItem;

N3: TMenuItem;

procedure FormCreate (Sender: TObject);

procedure FormMouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure N1Click (Sender: TObject);

procedure FormMouseMove (Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure N2Click (Sender: TObject);

procedure N3Click (Sender: TObject);

private

info: string;

k: integer;

square: real;

a,b,c,d: real;

xr,yr,zr,gr: real;

pol: array [1.4] of Tpoint;

function check (a,b,c,d: Tpoint): boolean;

function length (a,b: Tpoint): real;

function corner (aa,bb,cc: Tpoint): real;

function checksquare: boolean;

function checkrect: boolean;

function checkromb: boolean;

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *. dfm}

function tform1. checkromb: boolean;

begin

if (a=b) and (b=c) and (c=d) and (d=a) then begin square: =1/2*length (pol [1],pol [3]) *length (pol [2],pol [4]); result: =true end else result: =false;

end;

function Tform1. corner (aa,bb,cc: Tpoint): real;

var a1,a2: tpoint; cos: real;

begin

a1. X: =aa. X-cc. X;

a1. Y: =aa. Y-cc. Y;

a2. X: =bb. X-cc. X;

a2. Y: =bb. Y-cc. Y;

cos: = (a1. X*a2. X+a1. Y*a2. Y) / (sqrt (sqr (a1. X) +sqr (a1. y)) *sqrt (sqr (a2. X) +sqr (a2. Y)));

result: =round (arccos (cos) *180/pi);

end;

function tform1. checkrect: boolean;

begin

if ( (a=c) and (b=d)) and ( (xr=yr) and (yr=zr) and (zr=gr) and (gr=xr)) then begin result: =true; square: =a*c; end else result: =false;

end;

function Tform1. checksquare: boolean;

begin

if ( (a=d) and (d=b) and (b=c) and (c=a)) and ( (xr=yr) and (yr=zr) and (zr=gr) and (gr=xr)) then begin result: =true; square: =a*a; end else result: =false;

end;

function Tform1. length (a,b: Tpoint): real;

begin

result: =sqrt (sqr (a. X-b. X) +sqr (a. Y-b. Y));

end;

function Tform1. check (a: TPoint; b: TPoint; c: TPoint; d: TPoint): boolean;

var A1,B1,C1,A2,B2,C2: integer;

begin

A1: = (d. x-c. x) * (a. y-c. y) - (d. y-c. y) * (a. x-c. x);

B1: = (d. x-c. x) * (b. y-c. y) - (d. y-c. y) * (b. x-c. x);

A2: = (b. x-a. x) * (c. y-a. y) - (b. y-a. y) * (c. x-a. x);

B2: = (b. x-a. x) * (d. y-a. y) - (b. y-a. y) * (d. x-a. x);

Result: = (A1 * B1 < 0) and (A2 * B2 < 0);

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

k: =1;

end;

procedure TForm1. FormMouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var p: tpoint; i,j: integer; sort: array [1.4] of tpoint; l: real;

begin

if k<=4 then begin

form1. Canvas. Pixels [x,y]: =clblack;

pol [k]. x: =x; pol [k]. y: =y;

k: =k+1;

end

else begin

for j: = 1 to 4 do

for i: = 1 to 3 do if (pol [i]. X>pol [i+1]. x) then begin p: =pol [i+1]; pol [i+1]: =pol [i]; pol [i]: =p; end;

if (not (check (pol [1],pol [2],pol [3],pol [4]))) and (not (check (pol [1],pol [4],pol [2],pol [3]))) then form1. Canvas. Polygon (pol)

else begin p: =pol [1]; pol [1]: =pol [4]; pol [4]: =p;

if (not (check (pol [1],pol [2],pol [3],pol [4]))) and (not (check (pol [1],pol [4],pol [2],pol [3]))) then form1. Canvas. Polygon (pol)

else begin p: =pol [1]; pol [1]: =pol [2]; pol [2]: =p;

if (not (check (pol [1],pol [2],pol [3],pol [4]))) and (not (check (pol [1],pol [4],pol [2],pol [3]))) then form1. Canvas. Polygon (pol) end

end;

a: =length (pol [1],pol [2]) /37.79527559055;

b: =length (pol [2],pol [3]) /37.79527559055;

c: =length (pol [3],pol [4]) /37.79527559055;

d: =length (pol [4],pol [1]) /37.79527559055;

xr: =corner (pol [2],pol [4],pol [1]);

yr: =corner (pol [1],pol [3],pol [4]);

zr: =corner (pol [4],pol [2],pol [3]);

gr: =corner (pol [3],pol [1],pol [2]);

if checksquare then info: ='квадрат' else

if checkromb then info: ='ромб' else

if checkrect then info: ='прямокутник' else begin l: = (a+b+c+d) /2; square: =sqrt ( (l-a) * (l-b) * (l-c) * (l-d) - a*b*c*d*cos ( (xr+zr) /2)); info: ='чотирикутник'; end;

end;

end;

procedure TForm1. N1Click (Sender: TObject);

begin

PatBlt (Form1. Canvas. Handle, 0, 0, Form1. ClientWidth, Form1. ClientHeight, WHITENESS);

k: =1;

end;

procedure TForm1. FormMouseMove (Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

statusbar1. SimpleText: ='x: '+inttostr (x) + ' y: '+inttostr (y);

end;

procedure TForm1. N2Click (Sender: TObject);

var p: real;

begin

if k=5 then begin p: =a+b+c+d; showmessage (info+' площа: '+floattostr ( (square)) +'см периметр: '+floattostr ( (p)) +'см'); end else showmessage ('спочатку намалюйте обєкт');

end;

procedure TForm1. N3Click (Sender: TObject);

begin

close;

end;

end.

14 Програма, яка при натиску мишки на вікно переставляє дві кульки, так, щоб вони не перетиналися

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls;

type

TForm1 = class (TForm)

Shape1: TShape;

Shape2: TShape;

procedure Shape2MouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Shape1MouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormMouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *. dfm}

procedure TForm1. FormMouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var x0,y0: integer;

begin randomize;

Shape1. Top: =random (Form1. clientheight-Shape1. height);

Shape1. Left: =random (Form1. clientwidth-Shape1. width);

y0: =random (Form1. clientheight-Shape2. height);

x0: =random (Form1. clientwidth-Shape2. width);

while not ( ( (Shape1. left+Shape1. Width<x0) or (Shape1. left-Shape2. Width>x0)) and ( (Shape1. Top+Shape1. Height<y0) or (Shape1. Top-Shape2. Height>y0))) do

begin y0: =random (Form1. clientheight-Shape2. height);

x0: =random (Form1. clientwidth-Shape2. width); end;

Shape2. Top: =y0;

Shape2. Left: =x0;

end;

procedure TForm1. Shape1MouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var x0,y0: integer;

begin randomize;

Shape1. Top: =random (Form1. clientheight-Shape1. height);

Shape1. Left: =random (Form1. clientwidth-Shape1. width);

y0: =random (Form1. clientheight-Shape2. height);

x0: =random (Form1. clientwidth-Shape2. width);

while not ( ( (Shape1. left+Shape1. Width<x0) or (Shape1. left-Shape2. Width>x0)) and ( (Shape1. Top+Shape1. Height<y0) or (Shape1. Top-Shape2. Height>y0))) do

begin y0: =random (Form1. clientheight-Shape2. height);

x0: =random (Form1. clientwidth-Shape2. width); end;

Shape2. Top: =y0;

Shape2. Left: =x0;

end;

procedure TForm1. Shape2MouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var x0,y0: integer;

begin randomize;

Shape1. Top: =random (Form1. clientheight-Shape1. height);

Shape1. Left: =random (Form1. clientwidth-Shape1. width);

y0: =random (Form1. clientheight-Shape2. height);

x0: =random (Form1. clientwidth-Shape2. width);

while not ( ( (Shape1. left+Shape1. Width<x0) or (Shape1. left-Shape2. Width>x0)) and ( (Shape1. Top+Shape1. Height<y0) or (Shape1. Top-Shape2. Height>y0))) do

begin y0: =random (Form1. clientheight-Shape2. height);

x0: =random (Form1. clientwidth-Shape2. width); end;

Shape2. Top: =y0;

Shape2. Left: =x0;

end;

end.

15. Програма, яка реалізовує ходи шахових фігур.

program Project1;

{$APPTYPE CONSOLE}

uses

SysUtils,

unit1 in 'unit1. pas';

var figures: array [1.4] of Tfigure;

x,y, i: integer; desk: d; s: string; p: boolean;

begin

writeoutdesk (desk);

s: ='';

write ('enter x=');

readln (x);

write ('enter y=');

readln (y);

while (s<>'white') and (s<>'black') do begin writeln ('enter color '); readln (s); end;

if s='white' then p: =true else p: =false;

figures [1]: =Tknight. create (x,y,p,desk);

// figures [1]. writeout (desk);

s: ='';

write ('enter x=');

readln (x);

write ('enter y=');

readln (y);

while (s<>'white') and (s<>'black') do begin write ('enter color '); readln (s); end;

if s='white' then p: =true else p: =false;

figures [2]: =Tbishop. create (x,y,p,desk);

// figures [2]. writeout (desk);

s: ='';

write ('enter x=');

readln (x);

write ('enter y=');

readln (y);

while (s<>'white') and (s<>'black') do begin write ('enter color '); readln (s); end;

if s='white' then p: =true else p: =false;

figures [3]: =Trook. create (x,y,p,desk);

// figures [3]. writeout (desk);

s: ='';

write ('enter x=');

readln (x);

write ('enter y=');

readln (y);

while (s<>'white') and (s<>'black') do begin write ('enter color '); readln (s); end;

if s='white' then p: =true else p: =false;

figures [4]: =Tpawn. create (x,y,p,desk);

// figures [4]. writeout (desk);

writeoutdesk (desk);

for I: = 1 to 4 do

if figures [i]. live then

begin

writeln ('move ',figures [i]. name,' to x,y');

write ('x='); readln (x);

write ('y='); readln (y);

figures [i]. movetoplace (x,y,desk);

end;

// figures [1]. writeout (desk);

writeoutdesk (desk);

readln;

end.

16. Калькулятор

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type symbol=set of '0'. '9';

TForm1 = class (TForm)

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Button8: TButton;

Button9: TButton;

Button10: TButton;

Button11: TButton;

Button12: TButton;

Button13: TButton;

Button14: TButton;

Button15: TButton;

Button16: TButton;

Button17: TButton;

Button18: TButton;

Button19: TButton;

Button20: TButton;

Button21: TButton;

procedure Button17Click (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure FormActivate (Sender: TObject);

procedure Button21Click (Sender: TObject);

procedure Button15Click (Sender: TObject);

procedure Button19Click (Sender: TObject);

procedure Button18Click (Sender: TObject);

procedure Button20Click (Sender: TObject);

procedure Button16Click (Sender: TObject);

procedure Button14Click (Sender: TObject);

procedure Button13Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure Button12Click (Sender: TObject);

procedure Button11Click (Sender: TObject);

procedure Button10Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button6Click (Sender: TObject);

procedure Button5Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure Button7Click (Sender: TObject);

procedure Button8Click (Sender: TObject);

procedure Button9Click (Sender: TObject);

private

a: string;

x,y: real;

l: integer;

k: boolean;

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *. dfm}

procedure TForm1. FormActivate (Sender: TObject);

begin

Edit1. SetFocus;

end;

procedure TForm1. FormClose (Sender: TObject; var Action: TCloseAction);

begin

showmessage ('Goodbye');

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

x: =0; y: =0; l: =-1; k: =false;

end;

procedure TForm1. Button10Click (Sender: TObject);

begin

if Edit1. text<>'0' then Edit1. text: =Edit1. text+'0';

end;

procedure TForm1. Button11Click (Sender: TObject);

begin

if pos (',',Edit1. Text) =0 then Edit1. text: =Edit1. Text+',';

end;

procedure TForm1. Button12Click (Sender: TObject);

begin if (x=0) and (y=0) then begin x: =strtofloat (edit1. Text); Edit1. Text: =''; end else begin

y: =strtofloat (edit1. text);

x: =x+y; Edit1. Text: ='';

end;

if k then begin x: =x-y; end;

a: =floattostr (x);

l: =1;

end;

procedure TForm1. Button13Click (Sender: TObject);

begin

case l of

1: begin y: =strtofloat (edit1. text); x: =x+y; a: =floattostr (x); k: =true; end;

2: begin y: =strtofloat (edit1. text); x: =x*y; a: =floattostr (x); k: =true; end;

3: begin y: =strtofloat (edit1. text); if y<>0 then begin x: =x/y; a: =floattostr (x); k: =true; end else begin showmessage ('error input'); k: =false; x: =0; y: =0; end; end;

4: begin y: =strtofloat (edit1. text); x: =x-y; a: =floattostr (x); k: =true; end;

end;

Edit1. Text: =a; y: =0;

end;

procedure TForm1. Button14Click (Sender: TObject);

begin if (x=0) and (y=0) and (not (k)) then begin x: =strtofloat (edit1. Text); Edit1. Text: =''; end else begin

y: =strtofloat (edit1. text);

if not ( (k) and (x=0)) then x: =x*y; Edit1. Text: ='';

end;

if (k) and (x<>0) then begin x: =x/y; end;

a: =floattostr (x);

l: =2;

end;

procedure TForm1. Button15Click (Sender: TObject);

var q: real;

begin q: =strtofloat (edit1. Text);

if q>0 then q: =ln (q);

edit1. Text: =floattostr (q);

end;

procedure TForm1. Button16Click (Sender: TObject);

begin

if (x=0) and (y=0) and (not (k)) then begin x: =strtofloat (edit1. Text); Edit1. Text: =''; end else begin

y: =strtofloat (edit1. text);

if not ( (k) and (x=0)) then if y<>0 then begin x: =x/y; Edit1. Text: =''; end else begin showmessage ('error input'); edit1. Text: =''; x: =0; y: =0; k: =false; end;

end;

if (k) and (x<>0) and (y<>0) then x: =x*y;

a: =floattostr (x);

l: =3;

end;

procedure TForm1. Button17Click (Sender: TObject);

var q: real;

begin q: =strtofloat (edit1. Text);

q: =sqr (q);

edit1. Text: =floattostr (q);

end;

procedure TForm1. Button18Click (Sender: TObject);

begin

edit1. Text: ='0';

x: =0; y: =0; l: =0; k: =false;

end;

procedure TForm1. Button19Click (Sender: TObject);

var q: string;

begin q: =edit1. Text;

if (length (q) >1) then delete (q,length (q),1) else q: ='0'; x: =strtofloat (q);

edit1. Text: =q;

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

if Edit1. text='0' then Edit1. text: ='7' else Edit1. text: =Edit1. text+'7';

end;

procedure TForm1. Button20Click (Sender: TObject);

begin

if (x=0) and (y=0) then begin x: =strtofloat (edit1. Text); Edit1. Text: =''; end else begin

y: =strtofloat (edit1. text);

x: =x-y; Edit1. Text: ='';

end;

if k then x: =x+y;

a: =floattostr (x);

l: =4;

end;

procedure TForm1. Button21Click (Sender: TObject);

var q: real;

begin q: =strtofloat (edit1. Text);

q: =sqrt (q);

edit1. Text: =floattostr (q);

end;

procedure TForm1. Button2Click (Sender: TObject);

begin

if Edit1. text='0' then Edit1. text: ='8' else Edit1. text: =Edit1. text+'8';

end;

procedure TForm1. Button3Click (Sender: TObject);

begin

if Edit1. text='0' then Edit1. text: ='9' else Edit1. text: =Edit1. text+'9';

end;

procedure TForm1. Button4Click (Sender: TObject);

begin

if Edit1. text='0' then Edit1. text: ='4' else Edit1. text: =Edit1. text+'4';

end;

procedure TForm1. Button5Click (Sender: TObject);

begin

if Edit1. text='0' then Edit1. text: ='5' else Edit1. text: =Edit1. text+'5';

end;

procedure TForm1. Button6Click (Sender: TObject);

begin

if Edit1. text='0' then Edit1. text: ='6' else Edit1. text: =Edit1. text+'6';

end;

procedure TForm1. Button7Click (Sender: TObject);

begin

if Edit1. text='0' then Edit1. text: ='3' else Edit1. text: =Edit1. text+'3';

end;

procedure TForm1. Button8Click (Sender: TObject);

begin

if Edit1. text='0' then Edit1. text: ='2' else Edit1. text: =Edit1. text+'2';

end;

procedure TForm1. Button9Click (Sender: TObject);

begin

if Edit1. text='0' then Edit1. text: ='1' else Edit1. text: =Edit1. text+'1';

end;

end.

17. Анкета

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class (TForm)

Button1: TButton;

Edit1: TEdit;

ComboBox1: TComboBox;

GroupBox1: TGroupBox;

RadioGroup1: TRadioGroup;

RadioGroup2: TRadioGroup;

RadioGroup3: TRadioGroup;

RadioGroup4: TRadioGroup;

RadioGroup5: TRadioGroup;

RadioGroup6: TRadioGroup;

Button2: TButton;

GroupBox2: TGroupBox;

RadioGroup7: TRadioGroup;

RadioGroup8: TRadioGroup;

RadioGroup9: TRadioGroup;

RadioGroup10: TRadioGroup;

RadioGroup11: TRadioGroup;

RadioGroup12: TRadioGroup;

memo1: TMemo;

procedure ComboBox1Change (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Edit1Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

private

score: integer;

start: boolean;

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *. dfm}

procedure TForm1. Button1Click (Sender: TObject);

var s: string;

begin

s: =Edit1. Text;

if (s='') or (s='Ваше Ім*я') then showmessage ('Введіть своє ім*я') else

if combobox1. ItemIndex=-1 then showmessage ('Виберіть тест') else

case combobox1. ItemIndex of

0: begin groupbox1. Enabled: =true; groupbox1. Enabled: =true; start: =true; end;

1: begin groupbox1. Visible: =true; groupbox2. Enabled: =true; groupbox2. Visible: =true; start: =true; groupbox1. Enabled: =true; end;

end;

score: =0;

end;

procedure TForm1. Button2Click (Sender: TObject);

var s: string;

begin

if start then begin

case combobox1. ItemIndex of

0: begin s: ='Тест з знання столиць Європи';

if radiogroup1. ItemIndex=2 then score: =score+5;

if radiogroup2. ItemIndex=0 then score: =score+5;

if radiogroup3. ItemIndex=2 then score: =score+5;

if radiogroup4. ItemIndex=1 then score: =score+5;

if radiogroup5. ItemIndex=0 then score: =score+5;

if radiogroup6. ItemIndex=0 then score: =score+5;

end;

1: begin s: ='Тест з знання столиць Азії';

if radiogroup7. ItemIndex=1 then score: =score+5;

if radiogroup8. ItemIndex=0 then score: =score+5;

if radiogroup9. ItemIndex=3 then score: =score+5;

if radiogroup10. ItemIndex=2 then score: =score+5;

if radiogroup11. ItemIndex=0 then score: =score+5;

if radiogroup12. ItemIndex=2 then score: =score+5;

end;

end;

start: =false;

memo1. Lines. add (s);

s: ='Ім*я: '+edit1. Text;

memo1. lines. add (s);

s: ='очки: '+inttostr (score) +' з 30';

memo1. lines. add (s);

score: =0;

groupbox1. Enabled: =false;

edit1. Text: ='Ваше Ім*я';

combobox1. ItemIndex: =-1;

combobox1. Text: ='Виберіть тест';

radiogroup1. ItemIndex: =0;

radiogroup2. ItemIndex: =0;

radiogroup3. ItemIndex: =0;

radiogroup4. ItemIndex: =0;

radiogroup5. ItemIndex: =0;

radiogroup6. ItemIndex: =0;

radiogroup7. ItemIndex: =0;

radiogroup8. ItemIndex: =0;

radiogroup9. ItemIndex: =0;

radiogroup10. ItemIndex: =0;

radiogroup11. ItemIndex: =0;

radiogroup12. ItemIndex: =0;

end else showmessage ('Спочтаку розпочніть тестування (нажміть кнопку "Cтарт") ');

end;

procedure TForm1.comboBox1Change (Sender: TObject);

begin

case combobox1. ItemIndex of

0: begin groupbox1. Enabled: =false; groupbox1. Visible: =true; groupbox2. Enabled: =false; groupbox2. Visible: =false; end;

1: begin groupbox2. Enabled: =false; groupbox2. Visible: =true; groupbox1. Enabled: =false; groupbox1. Visible: =true; end;

end;

radiogroup1. ItemIndex: =0;

radiogroup2. ItemIndex: =0;

radiogroup3. ItemIndex: =0;

radiogroup4. ItemIndex: =0;

radiogroup5. ItemIndex: =0;

radiogroup6. ItemIndex: =0;

radiogroup7. ItemIndex: =0;

radiogroup8. ItemIndex: =0;

radiogroup9. ItemIndex: =0;

radiogroup10. ItemIndex: =0;

radiogroup11. ItemIndex: =0;

radiogroup12. ItemIndex: =0;

end;

procedure TForm1. Edit1Click (Sender: TObject);

begin

if edit1. Text='Ваше Ім*я' then edit1. Text: ='';

end;

procedure TForm1. FormCreate (Sender: TObject);

begin memo1. Text: ='';

radiogroup1. ItemIndex: =0;

radiogroup2. ItemIndex: =0;

radiogroup3. ItemIndex: =0;

radiogroup4. ItemIndex: =0;

radiogroup5. ItemIndex: =0;

radiogroup6. ItemIndex: =0;

radiogroup7. ItemIndex: =0;

radiogroup8. ItemIndex: =0;

radiogroup9. ItemIndex: =0;

radiogroup10. ItemIndex: =0;

radiogroup11. ItemIndex: =0;

radiogroup12. ItemIndex: =0;

groupbox1. Enabled: =false;

groupbox2. Enabled: =false;

form1. Top: =0;

form1. left: =0;

form1. ClientWidth: =screen. Width-18;

form1. clientheight: =screen. Height-85;

start: =false;

end;

end.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.