У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Лабораторна робота - Структури
3

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

Тема: “Структури”

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

Завдання: Визначити якість оцінювання студентів: підрахувати загальну кількість 0, 1, 2, 3, 4, 5 у кожній з двох груп в яких є по п’ять студентів, і які мають по дві оцінки з трьох дисциплін.

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

struct { список визначень }

У структурі обов’язково має бути вказаний хоч один би компонент. Визначення структур має наступний вигляд:

тип-даних описувач;

де тип-даних указує тип структури для об’єктів, визначуваних в описувачах. У простій формі описувачі є ідентифікаторами або масивами.

Приклад:

struct { double x,y; } s1, s2, sm[9];

struct { int year;

char moth, day; } date1, date2;

Змінні s1, s2 визначаються як структури, кожна з яких складається з двох компонент x і y. Змінна sm визначається як масив з дев’яти структур. Кожна з двох змінних date1, date2 складається з трьох компонентів year, moth, day. Існує і інший спосіб асоціювання імені з типом структури. Він заснований на використанні тега структури. Тег структури аналогічний тегу типу, що перераховує. Тег структури визначається таким чином:

struct тег { список описів; };

де тег є ідентифікатором.

У приведеному нижче прикладі ідентифікатор student описується як тег структури:

struct student { char name[25];

int id, age;

char prp; };

Тег структури використовується для подальшого оголошення структур даного вигляду у формі:

struct тег список-ідентифікаторів:

Приклад:

struct studeut st1, st2;

Використання тегів структури необхідне для опису рекурсивних структур. Нижче розглядається використання рекурсивних тегів структури.

struct node { int data;

struct node * next; } st1_node;

Тег структури node дійсно є рекурсивним, оскільки він використовується в своєму власному описі, тобто у формалізації покажчика next. Структури не можуть бути прямо рекурсивними, тобто структура node не може містити компоненту, що є структурою node, але будь-яка структура може мати компоненту, що є покажчиком на свій тип, як і зроблено в приведеному прикладі.

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

st1.name=”ОЛЕГ”

st2.id=st1.id;

st1_node.data=st1.age;.

Графічний алгоритм.

Програма складена мовою програмування Сі:

#include <stdio.h>

#include <math.h>

int o[6]={0,0,0,0,0,0};

void otsin(int *l)

{

int i;

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

switch(*(l+i))

{

case 0:o[0]++;break;

case 1:o[1]++;break;

case 2:o[2]++;break;

case 3:o[3]++;break;

case 4:o[4]++;break;

case 5:o[5]++;break;

default:printf("perevirte korektnist' vvedenux danux\n");

};

}

void main()

{

int q,w;

struct

{

struct

{

int p[2];

int m[2];

int f[2];

} s[5];

} g[2];

clrscr();

for(q=0;q<2;q++)

{

printf("grypa %i\n",q+1);

for(w=0;w<5;w++)

{

printf("%i student\n",w+1);

printf("vvedit' 2 otsinku z prog:");

scanf("%i%i",&g[q].s[w].p[0],&g[q].s[w].p[1]);

printf("vvedit' 2 otsinku z matem:");

scanf("%i%i",&g[q].s[w].m[0],&g[q].s[w].m[1]);

printf("vvedit' 2 otsinku z fiz:");

scanf("%i%i",&g[q].s[w].f[0],&g[q].s[w].f[1]);

}

}

otsin(&g[0].s[0].p[0]);

for(w=0;w<6;w++)

{

printf("%i:%i\n",w,o[w]);

};

o[0]=0;

o[1]=0;

o[2]=0;

o[3]=0;

o[4]=0;

o[5]=0;

otsin(&g[1].s[0].p[0]);

for(w=0;w<6;w++)

{

printf("%i:%i\n",w,o[w]);

};

getch();

}

Таблиця ідентифікаторів:

Змінна | Ідентифікатор

Група | q

Студенти | w

Оцінки з програмування | p

Оцінки з фізики | f

Оцінки з математики | m

Результат виконання програми:

0: 0

1: 7

2: 12

3: 16

4: 16

5: 9

Висновок: виконавши цю лабораторну роботу я вивчив засоби мови Сі для обробки структур, а також оволодів прийомами складання алгоритмів і програм з використанням структур.