Об'єктно-орієнтоване програмування. Розробка програмного забезпечення
Особливості об'єктно-орієнтованого програмування. Розробка програми для елементарних математичних розрахунків, виведення результату на екран та запису у файлі. Сортування слів у рядку. Програма, яка реалізовує ходи шахових фігур. Програма-калькулятор.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | отчет по практике |
Язык | украинский |
Дата добавления | 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
Подобные документы
Об’єктно-орієнтоване програмування мовою С++. Основні принципи об’єктно-орієнтованого програмування. Розробка класів з використанням технології візуального програмування. Розробка класу classProgressBar. Базовий клас font. Методи тестування програми.
курсовая работа [211,3 K], добавлен 19.08.2010Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.
курсовая работа [502,5 K], добавлен 01.04.2016Програма на мові програмування С++. Аналіз стану технологій програмування та обґрунтування теми. Розробка програми виконання завдання, методу вирішення задачі. Робота з файлами, обробка числової інформації і робота з графікою. Розробка програми меню.
курсовая работа [41,0 K], добавлен 17.02.2009Об'єктно-орієнтоване, або об'єктне, програмування. Поняття об'єктів і класів. Розробка програмного забезпечення. Створення операційних систем, прикладних програм, драйверів пристроїв, додатків для вбудованих систем, високопродуктивних серверів.
контрольная работа [135,2 K], добавлен 25.10.2013Розробка програми на мові програмування С++ з використанням об’єктно-орієнтованого програмування, яка включає в себе роботу з файлами, класами, обробку числової інформації і роботу з графікою. Структура класів і об’єктів. Лістинг та алгоритм програми.
курсовая работа [104,4 K], добавлен 14.03.2013Розробка програми імітації схеми життя лісового біому. Алгоритм пересування по головному полю. Основні глобальні функції програми. Динамічна ідентифікація типу даних. Вирішення завдань в області об’єктно-орієнтованого програмування засобами C++.
курсовая работа [423,1 K], добавлен 26.11.2014Принципи об'єктно-орієнтованого підходу. Розробка програмного комплексу з використанням цього алгоритму і користувальницьких класів на мові програмування С++. Реалізація простого відкритого успадкування. Тестування працездатності системи класів.
курсовая работа [98,0 K], добавлен 06.05.2014Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.
курсовая работа [69,4 K], добавлен 14.03.2013Особливості редагування за допомогою текстового редактора NotePad вхідного файлу. C++ як універсальна мова програмування, знайомство с функціями. Характеристика графічних засобів мови С. Аналіз основних понять об’єктно-орієнтованого програмування.
курсовая работа [123,3 K], добавлен 14.03.2013Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.
курсовая работа [991,4 K], добавлен 06.08.2013