Програмування на мові С

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Зміст

Введення

Індивідуально завдання

Блок-схема

Листинги програм

Керівництво користувача

Список використаної літератури

Введення

Мова 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 + +»

- В. В. Подбельський «Мова Сі + +»

- Курс лекцій з предмету «Програмування на МВР»

- Методичні вказівки до лабораторних робіт з предмету «Програмування на МВР»

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Контрольна робота
94.8кб. | скачати


Схожі роботи:
Програмування на мові Сі
Програмування на мові Асемблер
Робота з функціями в мові програмування Сі
Оператори циклу у мові програмування Сі
Програмування на алгоритмічній мові Бейсік
Масиви та покажчики в мові програмування Сі
Робота зі структурами в мові програмування Сі
Умовні та безумовні оператори у мові програмування Сі
Оператори введення і виведення в мові програмування Сі
© Усі права захищені
написати до нас