Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка С#.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.13 Mб
Скачать

Вказівки до виконання завдання

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

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

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

tab_nom – табельний номер;

fio – прізвище, ім'я, по батькові;

pol – стать;

summa – зарплата;

Всі ці поняття можна об'єднати в таку, наприклад, структуру:

struct anketa

{

int tab_nom;

char fio[30];

char data[10];

int pol;

char adres[40];

float summa;

};

Цей запис називається описом структури. Вона починається із ключового слова struct і складається з списку описів у фігурних дужках. За словом struct може випливати необов'язкове ім'я, що називається ім'ям типу (ярликом) структури. Змінні, що згадуються в записі, називаються елементами. Слідом за правою фігурною дужкою, що закінчує список елементів, може випливати список змінних, так само, як і у випадку базисних типів. От чому в наведеному вище описі структури після закриваючої фігурної дужки ставиться крапка з комою ; вона завершує порожній список. Опис struct {....} p1, p2, p3; синтаксично аналогічно int p1, p2, p3; у тому розумінні, що кожний з операторів описує p1, p2, p3 як змінні відповідні типи й приводить до виділення для них пам'яті. Опис же структури без наступного списку перемінних не виділяє ніякої пам'яті. Воно тільки визначає форму структури і діє як шаблон. Якщо такий опис постачений ярликом (ім'ям типу), то його можна пізніше використати при визначенні фактичних екземплярів структури

Зовнішні й статичні структури можна ініціювати, поміщаючи слідом за визначенням список початкових значень елементів:

struct anketa a0={ 1024, "Макагон У.М", "10.01.1943",0 , "Одеса, Варневская, 23/99", 175.00};

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

ім'я_структури.ім'я_елемента

Операція виділення елемента . (крапка) зв'язує ім'я структури і ім'я елемента. Наприклад, ми можемо з урахуванням уведених позначень написати:

a0.data="10.01.43";

a1.summa=0.0;

if(a2.pol==1) man=man+1;

На практиці структурні змінні звичайно з'являються у вигляді масиву або списку. Неважко бачити, що наші три змінні a0, a1, a2 буде простіше використати, якщо їх об'єднати в масив, що складається з елементів типу struct anketa. Застосувавши у програмі опис

            struct anketa a[3];

ми можемо вживати в ній, наприклад, такі оператори:

a[0].fio ="Макагон У.М";

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

if(a[i].tab_nom>a[i+1].tab_nom)

{

p=a[i].tab_nom;

a[i].tab_nom=a[i+1].tab_nom;

a[i+1].tab_nom=p;

}

Приклад: Описати структуру з ім'ям NOTE, що містить наступні поля:

Прізвище;

Номер телефону;

День народження (масив із трьох чисел)

Написати програму, що виконує вивід на екран інформаціі про людину, чиє прізвище введене з клавіатури. Якщо такої немає, видати на екран відповідне повідомлення.

#include <stdio.h>

#include <string.h>

#define MAX 41

#define MAXA 31

#define M 3

void main (void)

{

struct NOTE /*опис структури*/

{

char fam[MAX];

double tel;

int data[M];

};

struct NOTE ludi[M],l1; /*опис змінних типу структура*/

int i,j,d;

double t1;

FILE *ad;

ad=fopen("ludi.txt","r"); /*файловий ввід даних*/

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

{

fscanf(ad,"%s",ludi[i].fam);

printf("\n%s",ludi[i].fam); /*друк вхідних даних на екран*/

fscanf(ad,"%lf",&ludi[i].tel);

printf("\n%.0lf",ludi[i].tel);

for(j=0;j<M;j++)

{

fscanf(ad,"%d",&ludi[i].data[j]);

printf("\n%d",ludi[i].data[j]);

}

}

printf("\n Введіть дані про людину \n") ;

scanf("%s",l1.fam);

scanf("%lf",&l1.tel);

for(j=0;j<M;j++)

scanf("%d",&l1.data[j]);

d=0;

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

{

/*порівняння рядків, якщо умова дійсна, то функція strcmp() повертає 0*/

if(strcmp(ludi[i].fam,l1.fam)==0)

{

d++;

printf("\n %s",ludi[i].fam);

printf("\n%.0lf",ludi[i].tel);

for(j=0;j<M;j++)

printf("\n%d",ludi[i].data[j]);

}

}

if(d==0)

printf("Людини с таким прізвищем немає !!!") ;

}

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