17117

Розробка програм зі складеними типами даних

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота № 26 Тема: Розробка програм зі складеними типами даних Ціль: виробити практичні навички в написанні програм з використанням комбінованих типів даних. Обладнання: ПКПО Borland C Теоретичні відомості Структури З підтримує визначений корист

Украинкский

2013-06-29

334.5 KB

2 чел.

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

Тема: Розробка програм зі складеними типами даних

Ціль: виробити практичні навички в написанні програм з використанням комбінованих типів даних.

Обладнання: ПК,ПО Borland C++

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

Структури

З підтримує визначений користувачем складений тип, що повідомляється з ключовим словом struct, що визначає структури. Ці структури подібні записам, використовуваним в інших мовах програмування. Структура містить дані члени, що є даними базових типів, або є попередньо оголошеними структурами. Структури не можуть містити структури свого типу, але можуть містити покажчики на такі структури.

Оголошення структур

У С++ ключове слово struct використовується не тільки для оголошення об'єктів структурного типу, але і для оголошення нового (структурного) типу. Оголошений тип структури можна використовувати для оголошення об'єктів структурного типу.

Представимо загальний синтаксис для оголошення  структури типу (stt) і приведемо кілька прикладів структур

struct  sttype

{

type1 dataMember1;

type2  dataMember2;

//інші  дані члени

}[ім'я_об'єкта 1, ім'я_об'єкта 2];  //  оголошення типу структури і необов'язкове

 // оголошення об'єктів

 struct Point

{

float x;

float y;

} Apoint, Bpoint, *Ppoint, Mpoint[10];    оголошення типу й об'єктів

struct Person

{char firstname[12];

 char lastname[15];

 int birthday;

 float weight;

};  //  оголошення 

// типу структури

 Після оголошення типу (<strucType>), його можна використовувати для оголошення об'єктів, наприклад

sttype Astr, Mstr[5], *pstr;

Оголошено об'єкти структурного типу:

Astr- структура;

Mstr[5]- масив з 5-ти структур;

pstr- покажчик на структуру даного типу.

 Структура типу Point має два член-даних типи float.

Структура типу Person - приклад структури, що містить дан-члени, що є масивами:

 firstname []- масив  з 12 символів, у якому зберігається ім'я.

 lastname []- масив  з 15 символів, у якому зберігається прізвище.

 birthday типу int, у якому зберігається рік народження.  

 weight типу float, у якому зберігається вага.

Оголошення структур-перемінної (об'єкта структурного типу) не відрізняється від оголошення перемінних з базовими чи попередньо визначеними типами.

Загальний синтаксис оголошення

Приклад оголошення об'єктів (перемінних) структурного типу

//оголошення єдиної перемінний

// sttype

sttype  structVar;

//оголошення масиву  структур sttype

sttype  stArray[Kol_elem];

Point Origin, StartPoint, Points[10];  

Person You, Me, Us[30], *PYou;

 У цьому прикладі оголошені перемінні структури Origin, StartPoint типу Point, масив Points [10], що має 10 елементів - структур типу Point, перемінні Me і You типу Person, масив Us [30], що має 30 елементів структур типу Person і покажчик на тип Person.

 З дозволяє ініціювати дані члени структур. Ініціалізація здійснюється подібно ініціалізації масивів і випливає тим же правилам. Загальний синтаксис для ініціалізації дані членів структури:

sttype strucVar ={value1,value2,...};

Компілятор привласнює значення value1 першому дані члену структури strucVar, value2- другому дані члену структури strucVar і т.д. С++ вимагає дотримання наступних правил :

Значення, що привласнюються, повинні бути сумісні з відповідними їм дані членами по типі, діапазону і кількості ( для масивів ).

Можна повідомляти менша кількість значень, що привласнюються, чим кількість даних. Компілятор привласнює нулі іншим даними членам структури.

Не можна вказувати більше ініціюючих значень, чим кількість дані членів.

Значення зі списку ініціалізації послідовно привласнюються даним членам вкладених структур і масивів.

Приклад ініціалізації структури - Point fPoint={12.4,34.5};

У цьому прикладі оголошена перемінна fPoint типу Point і ініційовані дані члени х, у значеннями 12.4 і 34.5.

Доступ до дані членів здійснюється за допомогою операції (.)"крапка".

Загальний синтаксис для доступу до дані членів структури

Приклади доступу до даних - членам структури

StrucVar.dataMember

<Ім'я_структури> . <даний_член>;

Point myPoint;  //  оголошення

MyPoint. x=10.9;  //  доступ до х

MyPoint. y=21.89;

 

myPoint - структурний перемінна, доступ до її даних членів х, у здійснюється за допомогою вираження myPoint. x   і  myPoint. y відповідно.

Приклад

/*    ЗАНЯТТЯ N 14

  Розробив Петров Ю.В.

Оголосити складені типи даних, виконати їхній

ініціалізацію. Масив структур ініціювати з

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

до елементів структур. Вивести значення елементів масиву

структур на екран із застосуванням функції.                 */

#include <stdio.h>

#include <string.h>

#include <conio.h>

#include <alloc.h>

#define N 20

#define M 5

typedef struct Adr         //Adr -тип структури

     { char town[N];  char *country;

char region;   float indeks;   int kolvo;

     } adr;               //adr -теж тип структури (синонім Adr)

  //input_st() -функція для ініціалізація структури типу adr

adr input_st(char *town, char *coun, char reg, float ind, int kol);

void print_st(adr adr3); //Функція висновку елементів структури

int main(void)

{  clrscr();

  int a; float f1;

  char str[125];          //Буфер для введення рядка символів

  adr adress[M];          //Масив структур

  adr adr1,adr2={"Kiev","Ukr",'r',12.3,15}; //Явна ініціалізація

  adr1=adr2;              //Ініціалізація adr1 присвоюванням

  printf("Висновок елементів структури ");

  print_st(adr1);                           //Висновок adr1

  adr1=input_st("Kr","Ukr",'t',134.5,2);    //Ініціалізація adr1

  printf("Висновок елементів структури ");

  print_st(adr1);                           //Висновок adr1

  int і=0,j;

while (a&&і<M)            //Введення елементів масиву структур

  {  printf("Уведення міста (char array[N])  ");

     scanf("%s",&adress[і].town);         fflush(stdin);

     printf("Уведення країни (char *)  ");

     scanf("%s",str);  fflush(stdin);

     adress[i].country=(char*)malloc(strlen(str)+1);

     strcpy(adress[i].country,str);

     //adress[і].country=strdup(str); //Можливий варіант ініціалізаціі

     printf("Уведення коду регіону (char) ");

     scanf("%c", &adress[і].region);      fflush(stdin);

     printf("Уведення цифрового коду (float) ");

     scanf("%f",&f1);                     fflush(stdin);

     adress[і].indeks=f1;

     printf("Уведення кількості (int)  ");

     scanf("%і",&adress[і].kolvo);        fflush(stdin);

     printf("\n\t\t\t Продовжити введення ? y/n : ");

     char c=getche();      printf("\n");

     if (c=='n' || c=='N') a=0;

     і++;

   } //end while-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-

   printf("Висновок елементів структур\n ");

   j=i;

   for(i=0;i<j;i++)        print_st(adress[i]);

  getche();

  return 0;

}  //end main()-----------------------------------------------

adr input_st(char *t, char *c, char r, float f, int k)

  { adr ad;                 //Оголошення локальної структури

    strcpy(ad.town,t);      //Копіювання "t" у "ad.town"

    ad.country=(char*)malloc(strlen(c)+1); //Виділення пам'яті

    strcpy(ad.country, c);  //Копіювання "c" у "ad.country"

  // ad.country=strdup(c);   //Можливий варіант ініціалізації

    ad.region=r;  ad.indeks=f;   ad.kolvo=k;

    return ad;              //Повернення структури з функції

  } //end  input_st ()-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-

void print_st(adr adr3)    //Функція висновку елементів структури

  { printf("| %s  ", adr3.town);

    printf("| %s  ", adr3.country);

    printf("| %4c | %10f|%6i|\n",adr3.region, adr3.indeks, adr3.kolvo);

  } //end print_st()-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-

/*Висновок елементів структури | Kiev  | Ukr  |    r |  12.300000|    15|

 Висновок елементів структури | Kr    | Ukr  |    t | 134.500000|     2|

 Уведення міста (char array[N])  Don

 Уведення країни (char *)         Ukr

 Уведення коду регіону (char)     t

 Уведення цифрового коду (float)  45.67

 Уведення кількості (int)        8

    Продовжити введення ? y/n : y

 Уведення міста (char array[N])  Khar

 Уведення країни (char *)         Ukr

 Уведення коду регіону (char)     g

 Уведення цифрового коду (float)  67.84

 Уведення кількості (int)        4

    Продовжити введення ? y/n : n

 Висновок елементів структур | Don   | Ukr  |    t |  45.669998|     8|

   | Khar  | Ukr  |    g |  67.839996|     4| */

Приклад програми на С++

Скласти програму для збереження й обробки інформації яка включає різні типи даних. Індивідуальне завдання приведене в таблиці 3.2.

Варіант

Номер і зміст даних

1

2

3

4

5

6

7

6

Назва магазина

Вид товару

Адреса

Час роботи

Кількість продавців

Номер магазина

#include<iostream.h>

struct mn{

 mn(int pnm=20,int pnt=20,int pa=20,int pt=20);

 ~mn();

 void cinr();

 void coutr();

private:

 int nump,numm,cnm,cnt,ca,ct;

 char*nm;

 char*nt;

 char*a;

 char*t;

};

mn::mn(int pnm,int pnt,int pa,int pt)

{cnm=pnm;

cnt=pnt;

ca=pa;

ct=pt;

nm=new char[cnm];

nt=new char[cnt];

a=new char[ca];

t=new char[ct];

}

mn::~mn()

{delete []nm;

delete []nt;

delete []a;

delete []t;

}

void mn::cinr()

{cout<<"Название магазина: ";

cin>>nm;

cout<<"Вид товара: ";

cin>>nt;

cout<<"Адрес: ";

cin>>a;

cout<<"Времьа работы: ";

cin>>t;

cout<<"Колличество продавцов: ";

cin>>nump;

cout<<"Номер магазина: ";

cin>>numm;

}

void mn::coutr()

{cout<<"Название магазина: "<<nm<<'\n';

cout<<"Вид товара: "<<nt<<'\n';

cout<<"Адрес: "<<a<<'\n';

cout<<"Времьа работы: "<<t<<'\n';

cout<<"Колличество продавцов: "<<nump<<'\n';

cout<<"Номер магазина: "<<numm<<'\n';

}

void main()

{int n,i=0;

cout<<"введите число магазинов:\n";

cin>>n;

mn*d=new mn[n];

cout<<"вводите данные о магазинах: \n";

while(i<n)

{cout<<"_____\n";

 d[i].cinr();

 i++;

}

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

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

{d[i].coutr();

 cout<<"_____\n";

}

}

Хід роботи

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

2.Відповідно до індивідуального завдання розробити алгоритм рішення задачі. Оголосити складені (комбіновані) типи, масиви структур, використовувати покажчики як члени структури, оголосити об'єднання і виконати роботу з об'єднанням. Результати ініціалізації, зміни членів комбінованих типів у процесі обчислення вивести на екран.

3.Розробити програму, набрати програму на комп'ютері, усунути помилки.

4.Одержати результат.

5.Оформити звіт.

6.Підготуватися до захисту лабораторної роботи, вивчивши контрольні питання по даній темі.

Вимоги до змісту звіту приведені в лабораторній   роботі   №1.

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

3.  Скласти програму за індивідуальним завданням. Увести відредагувати, виконати програму, записати на гнучкий диск.

№вар

Завдання

1

y=  ,( k=) де =1.110,=+0.1

2

y=(1+), (k=) де=1.110,

=

3

y=(1+),де=1.1,

=+0.1

4

y=(1+),(k=)де=1.1•10,=

5

y=(2k+p)!(1+),(k=)де=1.1•10,

=(r+2)+0.1

6

y=(1+),(k=)де=1.1•10,

=++0.1

7

y=,(k=)де=1.8, =

8

y=(1+),(k=) де=

9

y=(),(k=) де=1.1•10,

=

10

y=,де=1, =10

11

y=(1+),(k=),де =1.1•10,=

12

y=m,(k=),де=1.1•10,

=

13

y=(1+),(k=),де=1.1•10,

=

14

y=(1+) ,(k=),де=10,

=+0.1r

15

y=(2i+p-k)!plm(1+), де=1.1•10,=+0.1

 

Контрольні запитання

1.Які типи даних можуть бути членами структур?

2.Який синтаксис оголошення структур?

3.Як з'являються перемінні (об'єкти) структурного типу?

4.Які види об'єктів структурного типу можна оголосити?

5.Як виробляється ініціалізація дан-членів структури? Які особливості ініціалізації масивів і структур-членів структури (вкладених структур)?

6.Чи можна робити неповну ініціалізацію структури (не для всіх членів структури)?

7.Які правила ініціалізації дан-членів структур Ви знаєте?

8.Як розташовуються дан-члени структур у пам'яті?

9.Що таке об'єднання (union)?

10.Як розташовуються в пам'яті дан-члени об'єднання?

11.Який синтаксис оголошення типу й об'єктів типу об'єднання?

12.У чому відмінність об'єднання від структури?

13.Як здійснюється доступ до дан-членів структури, об'єднання?

14Як здійснюється доступ до дан-членів структури, розташованої в масиві структур?


 

А также другие работы, которые могут Вас заинтересовать

44156. Разработка технологического процесса ремонта тормозной системы автомобиля «BMW 3» 2.24 MB
  Продолжением ABS является система контроля торможения на поворотах СВС (Cornering Brake Control). СВС по сигналам четырех датчиков ABS узнает, что автомобиль движется на повороте. Если торможение происходит на повороте, это обычно приводит к тому, что автомобиль пытается, как бы ввернуться в поворот
44157. Разработка нейросетевого алгоритма, выполняющего быстрое и точное распознавание входных 3-х мерных образов 943.5 KB
  В ходе данной работе будет разработан нейросетевой алгоритм, выполняющий быстрое и точное распознавание входных 3-х мерных образов. Будут проведены анализ эффективности работы этой сети в сравнении с аналогичными возможностями человека
44158. БИЗНЕС-ПЛАН ООО «ТПК«МиГ» 1.46 MB
  Цель исследования - дать представление о деятельности рассматриваемого предприятия; выявить его возможности при реорганизации производства по увеличению выпуска продукции и расширению ассортимента; исследовать процесс управления освоением новой продукции, рассмотреть бизнес-план предприятия как инструмента управления освоением продукцией
44160. ИНСТРУМЕНТЫ ПАБЛИСИТИ ИНТЕРНЕТ РЕСУРСА 284.5 KB
  Характеристика инструментов продвижения ИнтернетСМИ в России: исторический аспект. Особенности коммуникационного пространства сети интернет12 Разработка webсайта как инструмент паблисити. Формирование паблисити в Интернете.
44161. Универсальная программно – аппаратная тестирующая система тестирования знаний с разделяемыми правами доступа по оптимальным методам 2.28 MB
  Хотя известны попытки создания систем управления базами данных, поддерживающих сетевую модель для персональных компьютеров, в настоящее время реляционные системы лучше соответствуют их техническим возможностям и вполне удовлетворяют большинство пользователей. Скоростные характеристики этих СУБД поддерживаются специальными средствами ускоренного доступа к информации - индексированием баз данных.
44162. Бизнес – плана предприятия по производства одежды 609.5 KB
  Локальный характер спроса на услуги заставляет размещать предприятия сферы сервиса повсеместно в центре их потребления с учетом конкретных условий и особенностей зон обслуживания. Это создает возможность посещать предприятия сферы сервиса по пути на работу или с работы приведет к экономии времени потребителя на дорогу т. Эстетика обслуживания благоприятная обстановка и комфорт создаваемые заказчику при получении услуги способствующие улучшению настроения человека и оставляющие хорошее впечатление от посещения предприятия.1 Исходные...
44163. Разработка программного обеспечения для формирования договоров фирмы «МегаКомок» 2.89 MB
  Торговая деятельность связана с движением товаров и денежных средств, а значит и с формированием и печатью большого количества первичных документов. Программа управления торговлей МойСклад полностью реализует задачи благодаря следующим возможностям...
44164. Розробка структурної і функціональної схеми кондиціонера з мікропроцесорним управлінням 1.32 MB
  Кондиціювання повітря (лат. condicio умова, вимога) - це створення та автоматична підтримка (регулювання) в закритих приміщеннях всіх або окремих параметрів (температури, вологості, чистоти, швидкості руху) повітря на визначеному рівні з метою забезпечення оптимальних метеорологічних умов, найбільш сприятливих для самопочуття людей або ведення технологічного процесу