Зміст
Введення
Індивідуально завдання
Блок-схема
Листинги програм
Керівництво користувача
Список використаної літератури
Введення
Мова C + + виник на початку 1980-х років, коли співробітник фірми Bell Laboratories Бьерн Страуструп придумав ряд удосконалень до мови Сі під власні потреби. До початку офіційної стандартизації мова розвивалася в основному силами Страуструпа у відповідь на запити співтовариства. У 1998 був ратифікований міжнародний стандарт мови C + +: ISO / IEC 14882:1998 «Standard for the C + + Programming Language»; після прийняття технічних виправлень до стандарту в 2003 році - нинішня версія цього стандарту - ISO / IEC 14882:2003.
Ранні версії мови, відомі під ім'ям «C з класами», почали з'являтися з 1980 року. Ідея створення нової мови бере початок від досвіду програмування Страуструпа для дисертації. Він виявив, що мова моделювання Симула (Simula) має такі можливості, які були б дуже корисними для розробки великого програмного забезпечення, але працює дуже повільно. У той же час мова BCPLдостаточно швидкий, але дуже близький до мов низького рівня і не підходить для розробки великого програмного забезпечення. Страуструп почав працювати в Bell Labs над завданнями теорії черг (у додатку до моделювання телефонних дзвінків). Спроби застосування існуючих у той час мов моделювання виявилися неефективними. Згадуючи досвід своєї дисертації, Страуструп вирішив доповнити мова Сі (наступник BCPL) можливостями, наявними в мові Симула. Мова Сі, будучи базовою мовою системи UNIX, на якій працювали комп'ютери Bell, є швидким, багатофункціональним і стерпним. Страуструп додав до нього можливість роботи з класами та об'єктами. У результаті, практичні завдання моделювання виявилися доступними для вирішення як з точки зору часу розробки (завдяки використанню Симула-подібних класів) так і з точки зору часу обчислень (завдяки швидкодією Сі). На початку в Сі були додані класи (з інкапсуляцією), похідні класи, сувора перевірка типів, inline-функції і аргументи за умовчанням.
Розробляючи Сі з класами (Пізніше C + +), Страуструп також написав програму cfront - транслятор, що переробляє вихідний код Сі з класами у вихідний код простого Сі. Нова мова, несподівано для автора, придбав велику популярність серед колег і незабаром Страуструп вже не міг особисто підтримувати його, відповідаючи на тисячі питань.
У 1983 відбулося перейменування мови з Сі з класами в C + +. Крім того, в нього були додані нові можливості, такі як віртуальні функції, перевантаження функцій і операторів, посилання, константи, користувальницький контроль над управлінням вільною пам'яттю, поліпшена перевірка типів і новий стиль коментарів (/ /). Його перший комерційний випуск відбувся в жовтні 1985 року. У 1985 році вийшло також перше видання «Мови програмування C + +», що забезпечує перший опис цієї мови, що було надзвичайно важливо через відсутність офіційного стандарту. У 1989 відбувся вихід C + + версії 2.0. Його нові можливості включали множинне спадкування, абстрактні класи, статичні функції-члени, функції-константи і захищені члени.
У 1990 вийшло «Коментувати довідкове керівництво по C + +», покладене згодом в основу стандарту. Останні оновлення включали шаблони, виключення, простору імен, нові способи приведення типів і булевський тип.
Стандартна бібліотека C + + також розвивалася разом з ним. Першим додаванням до стандартної бібліотеці C + + стали потоки введення / виводу, що забезпечують кошти для заміни традиційних функцій Сі printf і scanf. Пізніше самим значним розвитком стандартної бібліотеки стало включення до неї Стандартної бібліотеки шаблонів.
Після багатьох років роботи спільний комітет ANSI-ISO стандартизував C + + в 1998 (ISO / IEC 14882:1998 - Мова програмування C + +). Протягом декількох років після офіційного виходу стандарту комітет обробляв повідомлення про помилки і в результаті випустив виправлену версію стандарту C + + в 2003 році. В даний час робоча група МОС (ISO) працює над новою версією стандарту під кодовою названіемC + +0 x (Раніше відомий як C + +09).
Індивідуальне завдання
Кола задаються координатами X, Y їх центрів і радіусами R. Датчик випадкових чисел виробляє характеристики N кіл. Визначити, чи є серед цих кіл три попарно перетинаються. Знайти серед цих окружностей всі відокремлені.
Блок-схема
Листинги програм
KOMP. CPP
# Include <graphics.h>
# Include <iostream.h>
# Include <stdio.h>
# Include <stdlib.h>
# Include <conio.h>
# Include <dos.h>
# Include <bios.h>
# Include <process.h>
void pomehi (int x, int y, int i)
{
setcolor (i);
line (x-100, y-60, x-80, y-60);
line (x-60, y-50, x-40, y-50);
line (x-20, y-60, x, y-60);
line (x +20, y-50, x +40, y-50);
line (x +60, y-60, x +80, y-60);
line (x-100, y-20, x-80, y-20);
line (x-60, y-10, x-40, y-10);
line (x-20, y-20, x, y-20);
line (x +20, y-10, x +40, y-10);
line (x +60, y-20, x +80, y-20);
line (x-100, y +20, x-80, y +20);
line (x-60, y +30, x-40, y +30);
line (x-20, y +20, x, y +20);
line (x +20, y +30, x +40, y +30);
line (x +60, y +20, x +80, y +20);
line (x-100, y +60, x-80, y +60);
line (x-60, y +70, x-40, y +70);
line (x-20, y +60, x, y +60);
line (x +20, y +70, x +40, y +70);
line (x +60, y +60, x +80, y +60);
}
void komp (int x, int y)
{
int i;
/////////////// Monitor ////////////////
i = 8;
setcolor (i);
rectangle (x-120, y-100, x +120, y +100);
setfillstyle (SOLID_FILL, i);
floodfill (x-115, y-95, i);
i = 0;
setcolor (i);
rectangle (x-110, y-90, x +110, y +90);
setfillstyle (SOLID_FILL, i);
floodfill (x, y, i);
i = 0;
setcolor (i);
line (x-120, y-100, x-110, y-110);
line (x +120, y +100, x +130, y +90);
line (x +120, y-100, x +130, y-110);
line (x-110, y-110, x +130, y-110);
line (x +130, y-110, x +130, y +90);
line (x +20, y +110, x +20, y +100);
line (x-20, y +110, x-20, y +100);
rectangle (x +60, y +110, x-60, y +120);
line (x +60, y +110, x +70, y +100);
line (x +60, y +120, x +80, y +100);
line (x-60, y +110, x-50, y +100);
line (x +20, y +110, x +30, y +100);
circle (x +110, y +95,3);
circle (x +100, y +95,2);
circle (x +90, y +95,2);
/////////////// Sistemnik //////////////
i = 0;
setcolor (i);
rectangle (x-130, y +120, x-200, y-100);
line (x-200, y-100, x-110, y-190);
line (x-130, y-100, x-40, y-190);
line (x-110, y-190, x-40, y-190);
line (x-130, y +120, x-110, y +100);
line (x-40, y-190, x-40, y-110);
rectangle (x-190, y-90, x-140, y-80);
rectangle (x-190, y-70, x-140, y-60);
rectangle (x-190, y-50, x-140, y-40);
rectangle (x-190, y-30, x-140, y-20);
rectangle (x-180, y-10, x-150, y);
rectangle (x-180, y +10, x-150, y +20);
rectangle (x-190, y +100, x-140, y +110);
circle (x-165, y +80,5);
circle (x-165, y +60,4);
line (x-165, y +80, x-165, y +84);
circle (x-165, y +80,2);
}
void kolonki (int x, int y, int i)
{
int k;
////////////// Left //////////////////
k = i;
i = 15;
setfillstyle (INTERLEAVE_FILL, i);
i = k;
setcolor (i);
rectangle (x-210, y +120, x-260, y +60);
line (x-210, y +120, x-200, y +110);
line (x-210, y +60, x-200, y +50);
line (x-260, y +60, x-240, y +40);
line (x-240, y +40, x-200, y +40);
i = k;
setcolor (i);
pieslice (x-235, y +90, 0, 180, 20);
rectangle (x-255, y +90, x-215, y +110);
floodfill (x-245, y +95, i);
////////////// Right /////////////////
rectangle (x +140, y +120, x +190, y +60);
line (x +190, y +120, x +210, y +100);
line (x +190, y +60, x +210, y +40);
line (x +140, y +60, x +160, y +40);
line (x +160, y +40, x +210, y +40);
line (x +210, y +100, x +210, y +40);
i = k;
setcolor (i);
pieslice (x +165, y +90, 0, 180, 20);
rectangle (x +145, y +90, x +185, y +110);
floodfill (x +155, y +95, i);
circle (x +165, y +115,4);
circle (x +155, y +115,3);
circle (x +175, y +115,3);
arc (x +165, y +40,0,150,40);
}
void main ()
{Int dr = DETECT, mod;
float snd [] = {659.26, 880.00, 1046.50, 987.77, 880.00, 1046.50, 880.00, 987.77, 880.00,
698.46, 783.99, 659.26, 659.26, 880.00, 1046.50, 987.77, 880.00, 1046.50, 880.00, 987.77, 880.00,
659.26, 622.25, 587.33, 587.33, 698.46, 880.00, 987.77, 587.33, 698.46,
830.61, 880.00, 440.00, 523.25, 698.46, 698.46, 659.26, 783.95, 698.46, 698.46,
659.26, 493.88, 523.25, 440.00, 987.77, 987.77, 932.33, 880.00, 987.77, 987.77,
880.00, 783.99, 698.46, 659.26, 659.26, 783.99, 659.26, 587.33, 587.33,
698.46, 587.33, 493.88};
int x, y, err, i, ki, key, r, h, c, x1, x2, y1, y2;
char s, str [80] = {'K', 'U', 'R', 'S', 'O', 'V', 'A', 'Y', 'A', '', 'R ',' A ',' B ',' O ',' T ',' A '};
initgraph (& dr, & mod, "");
err = graphresult ();
if (err) {
cout <<"error initgraph" <<grapherrormsg (err);
exit (1);
}
snachala:
cleardevice ();
i = 7;
x = getmaxx () / 2;
y = getmaxy () / 2;
setfillstyle (SOLID_FILL, i);
floodfill (x, y, i);
setcolor (4);
outtextxy (400,70, "Press any key for STOP Music");
outtextxy (400,80, "Press 'P' for PLAY Music");
outtextxy (400,90, "Press 'M' for GOTO MENU");
outtextxy (400,100, "Press 'Esc' for exit");
settextstyle (0,0,3);
setcolor (2);
outtextxy (150,15, str);
settextstyle (0,0,2);
setcolor (6);
outtextxy (330,380, "KAFEDRA: EVM");
setcolor (5);
outtextxy (330,420, "SPECIALNOST: VMKSiS");
setcolor (4);
outtextxy (30,380, "VIPOLNIL:");
settextstyle (0,0,1);
setcolor (1);
outtextxy (180,380, "STUDENT FITU 1-2a");
settextstyle (0,0,1);
setcolor (0);
outtextxy (180,390, "XLINTCEV AG");
settextstyle (0,0,2);
setcolor (4);
outtextxy (30,420, "PROVERIL:");
settextstyle (0,0,1);
setcolor (1);
outtextxy (180,420, "KOLOMEICEVA TG");
settextstyle (0,0,1);
setcolor (0);
outtextxy (180,430, "BELIKOV I.Yu.");
komp (x, y); m1:
for (r = 0; r <62; r + +)
{
if (kbhit ()) break;
i = 15;
pomehi (x, y, i);
delay (100);
i = 7;
kolonki (x, y, i);
i = 0;
kolonki (x, y-10, i);
i = 0;
pomehi (x, y, i);
delay (100);
sound (snd [r] / 1.5);
if (r == 11 ^ r == 23 ^ r == 27 ^ r == 31 ^ r == 43) {delay (1500); nosound (); delay (600);}
else if (r == 53 ^ r == 57 ^ r == 61) {delay (300); nosound (); delay (1400);}
else if (r == 47) {delay (500); nosound (); delay (700);}
else delay (50);
i = 7;
kolonki (x, y-10, i);
i = 0;
kolonki (x, y, i);
}
nosound ();
setcolor (RED);
m:
s = getch ();
if (s == 27) exit (1);
if (s == 'p') {setfillstyle (SOLID_FILL, 0); floodfill (getmaxx () / 2, getmaxy () / 2,8); goto m1;}
if (s! = 'm') goto m;
cleardevice ();
i = 15;
setcolor (i);
setfillstyle (SOLID_FILL, i);
floodfill (x, y, i);
settextstyle (0,0,2);
setcolor (RED);
outtextxy (150,30, "MENU");
settextstyle (0,0,1);
setcolor (2);
outtextxy (20,100, "Zadanie po assembleru # 1");
setcolor (3);
outtextxy (20,135, "Zadanie po assembleru # 2");
setcolor (4);
outtextxy (20,170, "Zadanie po assembleru # 3");
setcolor (5);
outtextxy (20,205, "Zadanie po assembleru # 4");
setcolor (6);
outtextxy (20,240, "Zadanie po assembleru # 5");
setcolor (0);
outtextxy (20,275, "Zadanie po assembleru # 6");
setcolor (8);
outtextxy (20,310, "Zadanie po programmirovaniu");
setcolor (9);
outtextxy (20,345, "Back to previos display");
setcolor (12);
outtextxy (20,380, "Exit");
ki = 1; x1 = 14; y1 = 95; x2 = 250; y2 = 115;
rectangle (x1, y1, x2, y2);
sled:
key = bioskey (0);
switch (key)
{
case 18432: {setcolor (15);
rectangle (x1, y1, x2, y2);
if (y1 == 95) {y1 = 375; y2 = 395; ki = 9;}
else {y1 = y1-35; y2 = y2-35; ki -;}
setcolor (RED);
rectangle (x1, y1, x2, y2);
break;
}
case 20480:
{Setcolor (15);
rectangle (x1, y1, x2, y2);
if (y1 == 375) {y1 = 95; y2 = 115; ki = 1;}
else {y1 = y1 +35; y2 = y2 +35; ki + +;}
setcolor (RED);
rectangle (x1, y1, x2, y2);
break;
}
case 7181: switch (ki)
{
case 1: spawnl (P_WAIT, "1.EXE", NULL); break;
case 2: spawnl (P_WAIT, "2.EXE", NULL); break;
case 3: spawnl (P_WAIT, "3.EXE", NULL); break;
case 4: spawnl (P_WAIT, "4.EXE", NULL); break;
case 5: spawnl (P_WAIT, "5.EXE", NULL); break;
case 6: spawnl (P_WAIT, "6.EXE", NULL); break;
case 7: spawnl (P_WAIT, "CPP.EXE", NULL); break;
case 8: goto snachala;
case 9: closegraph (); exit (1);
}
}
goto sled;
}
CPP.CPP
# Include <graphics.h>
# Include <math.h>
# Include <iostream.h>
# Include <stdlib.h>
# Include <stdio.h>
# Include <conio.h>
int sravnenie (long x1, long x2, long y1, long y2, long r1, long r2)
{Int d;
d = int (sqrt ((x1-x2) * (x1-x2) + (y1-y2) * (y1-y2)));
if (d> (r1 + r2)) return 1; else return 0;} / / 1-ne peresekajutsja 0-peresikajutsja
void main ()
{Char s, otv;
int dr = DETECT, mod, err;
int color [100], KOL, ist;
long x [100], y [100], r [100], l, i, f, k, j, n;
m1:
initgraph (& dr, & mod, "");
err = graphresult ();
if (err) {
cout <<"error initgraph" <<grapherrormsg (err);
exit (1);
}
cout <<"Vvedite kol-vo okruzhnostei ->"; cin>> KOL;
randomize ();
cleardevice ();
for (i = 0; i <KOL; i + +)
{
x [i] = random (540) +50;
y [i] = random (320) +80;
r [i] = random (20) +30;
color [i] = random (13) +1;
}
for (i = 0; i <KOL; i + +)
{Setcolor (color [i]);
circle (x [i], y [i], r [i]);}
outtextxy (5,5, "Press" 1 "for vivoda okryzhnostei yedinenih");
outtextxy (5,15, "Press '2 'for vivoda okryzhnostei sgrypirovanih po 3");
outtextxy (5,25, "Press 'q' for quit");
m: ist = 0;
s = getch ();
if (s == '1 ') {
cleardevice ();
for (i = 0; i <KOL; i + +)
{F = 0;
for (j = 0; j <KOL; j + +)
if (i! = j) if (sravnenie (x [i], x [j], y [i], y [j], r [i], r [j]) == 1) f + +;
if (f == KOL-1) {setcolor (color [i]); circle (x [i], y [i], r [i]); ist + +;}
} If (ist == 0) cout <<"Takix okryzhnostei net \ n \ n \ n \ n";
} Else
if (s == '2 ') {cleardevice ();
for (i = 0; i <KOL; i + +)
for (j = 0; j <KOL; j + +)
if (i! = j) if (sravnenie (x [i], x [j], y [i], y [j], r [i], r [j]) == 0)
{F = 0;
for (l = 0; l <KOL; l + +)
if ((l! = i) & & (l! = j))
if
(Sravnenie (x [i], x [l], y [i], y [l], r [i], r [l]) == 0) | | (sravnenie (x [l], x [j ], y [l], y [j], r [l], r [j]) == 0)) {f + +; k = l;}
if (f == 1)
for (n = 0; n <KOL; n + +)
if ((n! = k) & & (n! = i) & & (n! = j))
if (sravnenie (x [n], x [k], y [n], y [k], r [n], r [k]) == 0) f + +;
if (f == 1)
{Setcolor (color [i]);
circle (x [i], y [i], r [i]);
setcolor (color [j]);
circle (x [j], y [j], r [j]);
setcolor (color [k]);
circle (x [k], y [k], r [k]); ist + +;}
}
if (ist == 0) cout <<"Takix okruzhnostei net \ n \ n \ n \ n";} else
if (s == 'q') exit (1); else goto m;
cout <<"Snova? (y, n)"; otv = getch ();
if (otv == 'y') {closegraph (); goto m1;} else exit (1);
}
Керівництво користувача
При запуску курсової роботи на дисплеї з'явиться титульний лист супроводжуваний мелодією і анімацією.
Натисніть:
- Будь-яку клавішу для зупинки мелодії.
- P для програвання мелодії
- M для переходу до МЕНЮ
- ESC для виходу
Перейдіть до МЕНЮ для запуску курсової роботи
У МЕНЮ наведіть курсор на завдання і натисніть ENTER. Запускається завдання курсової роботи. Переглянувши результат роботи завдання, натискаємо клавішу клавішу Q і виходимо в МЕНЮ. Для виходу з програми натискаємо - ESC.
При роботі з програмою можуть виникнути проблеми: програма може не запускатися, і виводити помилку ініціалізації графіки. Щоб уникнути цього користувач повинен перед запуском програми переконатися в тому, що файл EGAVGA. BGI знаходиться в даному каталозі. У каталозі так само повинні знаходиться виконувані файли KOMP. EXE (Титульний аркуш) CPP. EXE (Завдання по курсовій роботі).
Програма нормально працює в операційних системах Windows XP / NT / 2000/98, а так само в MS - DOS 'e. В інших операційних системах програма не тестувалася.
Список використаної літератури
- Бьерн Страуструп «Мова програмування С + +»
- Дейтел і Дейтел «Як програмувати на C + +»
- Дейтел і Дейтел «Як програмувати на C»
- А. Б. Крупник «Вивчаємо C + +»
- В. В. Подбельський «Мова Сі + +»
- Курс лекцій з предмету «Програмування на МВР»
- Методичні вказівки до лабораторних робіт з предмету «Програмування на МВР»