Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_9_Stukturu.doc
Скачиваний:
3
Добавлен:
09.09.2019
Размер:
94.72 Кб
Скачать

КИЇВСЬКИЙ КОЛЕДЖ ЗВ’ЯЗКУ

ПОГОДЖЕНО

Цикловою комісією КСМ

Голова комісії______________

А. Ю. Лойкова

“___”__________2009р.

ЗАТВЕРДЖЕНО

Заступник директора з НВР

_______________О. Ю Коновалов

“____”_________2009р.

Лабораторна робота №9

Використання структур для написання програм

з дисципліни: “Програмування”

Для студентів, що навчаються

за освітньо-кваліфікаційним рівнем

“бакалавр” зі спеціальності

6.091500 – “Комп’ютерна інженерія ”

Розробив викладач

__________Коваленко Т.О.

“___”_________2009р.

  1. Мета роботи

Навчитися створювати новий тип даних та використовувати його при розв’язанні задач.

2. Прилади та матеріали

ПК, середовище програмування Borland С++ Builder 6.

  1. Теоретичні відомості

Структура – це спеціальний тип даних, який створює користувач для опрацювання інформації про об’єкт з деякої предметної області. Така інформація може складатися з даних різних типів. Структура складається з набору полів – даних різних типів, і її тип описується так:

struct <назва типу структури>

{

<тип поля 1> <назва поля 1>;

<тип поля n> <назва поля n>;

};

Опис структури обов’язково закінчується символом “;”.

Під час оголошення структури можна задавати обсяг пам’яті, який займатимуть змінні певного поля. Для цього після назви поля ставиться знак двокрапки та зазначається ціле число або стала – кількість байтів. Такі поля називають бітовими. Визначити обсяг, який займає ціла структура, можна так: sizeof(<назва типу структури>).

Коли у програмі описана структура, то оголосити змінні або вказівники цього типу можна так:

<назва типу структури> <список змінних і вказівників>;

Оголосити змінні типу структура можна ще й так:

struct <назва типу структури>

{

<тип поля 1> <назва поля 1>;

<тип поля n> <назва поля n>;

}; <список змінних і вказівників>;

Якщо тип структури визначати не обов’язково, а достатньо лише оголосити її змінні, то назву типу структури можна не зазначати.

Структура може містити поля типу структура.

Змінні типу структура можна ініціалізувати відразу під час оголошення.

Доступ до конкретного поля змінної типу структура дає складене ім’я вигляду

<назва змінної>.<назва поля>

Можна також створити вказівники на структури. Доступ до полів вказівника на структуру здійснюється дещо інакше, ніж до полів відповідної змінної, а саме:

<назва вказівника> - <назва поля>

Масив змінних типу структура можна оголосити так:

<назва типу структура> <назва масиву>[кількість елементів];

Доступ до полів окремих елементів масиву здійснюється так:

<назва елемента>[індекс].<назва поля>

Змінні типу структура можуть бути аргументами функцій. Для них діють ті ж самі правила, що і для змінних стандартних типів.

Приклад.

Скласти програму, в якій будуть вводитися 7 - 10 рядків таблиці, зразок якої приведений нижче і виводиться на екран таблиця - одразу ж після вводу і після сортування її по значенням в першому стовпчику.

Час виконання деяких програм:

Назва програми

Кількість рядків коду

Час вик. на SGI Callenge (cек)

Час вик. на SGI Indy (cек)

OCEAN

1917

8.70

18.2

DYFESM

3386

6.95

22

TRFD

417

1.05

2.98

Примітка: SGI Callenge - ЦП R1000 196 MHz, 1.024 MB RAM SGI Indy - ЦП MIPS R4600 134 MHz, 64 MB RAM

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

struct prog

{

char name[15];

int kols;

float viC;

float viI;

} mp[10];

int main()

{

clrscr();

struct prog x;

int n,i,j,m;

for(n=0;n<3;n++)

{

cout<<"Vvedite: Nazvanie, Kol.strok,";

cout<<"V.isp.na SGI Calleng, V.isp.na SGI Indy"<<n+1<<"\n";

cin>>mp[n].name;

if(!strcmp(mp[n].name,"***")) break;

cin>>mp[n].kols;

cin>>mp[n].viC;

cin>>mp[n].viI;

}

cout<<"|---------------------------------------------------------------------------|\n";

cout<<"| Vremja vipolnenija nekotorih program,kotorie |\n";

cout<<"| prinimajut parallelnie algoritmi |\n";

cout<<"|---------------------------------------------------------------------------|\n";

cout<<"|Nazvanie |Kolichestvo |Vremja isp. na |Vremja isp. na |\n";

cout<<"|programmi|strok koda |SGI Callenge (sek)|SGI Indy (sek) |\n";

cout<<"|---------------------------------------------------------------------------|\n";

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

cout<<"|"<<mp[i].name<<"|"<<mp[i].kols<<"|"<<mp[i].viC<<"|"<<mp[i].viI<<"|\n";

cout<<"|----------------------------------------------------------------------------|\n";

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

{

m=i;

for(j=i+1;j<n;j++)

if(strcmp(mp[n].name,mp[j].name)>0)m=j;

if(m>i)

{

strcpy(x.name,mp[i].name); x.kols=mp[i].kols;

x.viC=mp[i]viC;

x.viI=mp[i]viI;

strcpy(mp[i].name,mp[m].name); mp[i].kols=mp[m].kols;

mp[i].viC=mp[m].viC;

mp[i].viI=mp[m].viI;

strcpy(mp[m].name,x.name); mp[m].kols=x.kols;

mp[m].viC=x.viC;

mp[m].viI=x.viI;

}

}

cout<<"|---------------------------------------------------------------------------|\n";

cout<<"| Vremja vipolnenija nekotorih program,kotorie |\n";

cout<<"| prinimajut parallelnie algoritmi |\n";

cout<<"|---------------------------------------------------------------------------|\n";

cout<<"|Nazvanie |Kolichestvo |Vremja isp. na |Vremja isp. na |\n";

cout<<"|programmi|strok koda |SGI Callenge (sek)|SGI Indy (sek) |\n";

cout<<"|---------------------------------------------------------------------------|\n";

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

cout<<"|"<<mp[i].name<<"|"<<mp[i].kols<<"|"<<mp[i].viC<<"|"<<mp[i].viI<<"|\n";

cout<<"|----------------------------------------------------------------------------|\n";

getch();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]