Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
All.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
167.23 Кб
Скачать

80. Типи даних для роботи з датою і часом. Структура tm

Типи даних

clock_t - Повертається функцією clock (). Зазвичай визначений як int або long int.

time_t - Повертається функцією time (). Зазвичай визначений як int або long int.

struct tm - Нелінійне, дискретне календарне уявлення часу.

Приклад використання

Виведення на екран поточного часу.

# include <stdio.h>

# include <time.h> int main(void) { const time_t timer = time(NULL); printf("%s\n", ctime(&timer));

return 0; }

Деякі функції можуть працювати з місцевим часом, який може відрізнятися від календарного, наприклад у зв'язку з часовими поясами. Визначено арифметичні типи clock_t і time_t для представлення часу, а структура struct tm містить компоненти календарного часу.

int tm_sec; Секунди від початку хвилини (0,59) int tm_min; Хвилини від початку години (0,59)

int tm_hour; Години від півночі (0,23)

81. Функції бібліотеки ctime

функція ctime # include <time.h>char * ctime (const time_t * time);

Функція ctime () повертає покажчик на рядок, що має наступний вигляд:

День місяць рік години: хвилини: секунди year \ n \ 0

Функції передається покажчик на календарний час. Календарний час зазвичай отримують за допомогою функції time (). Буфер, використовуваний ctime () для зберігання форматувати рядки висновку є статично розподіленим масивом символів. Він перезаписується при кожному виклику функції.

#include <time.h>

#include <stdio.h> int main(void){ time_t lt;

lt = time(NULL); printf(ctime(&lt)); return 0;}

82. Поняття та класифікація зв'язних списків

Зв*язний список – це динамічна структура даних яка складається з вузлів які зв*язані між собою і представляють послідовність. Кожен вузол є структурою який містить інформаційні поля а також посилання на інші вузли(попередні або наступні)

Класифікація Циклічні/нециклічні, Двозв*язні/однозв*язні, Однонаправлені/ двонаправлені

84..86 Оголошення зв’язних циклів

кожен вузол в списку є структурою даних. Вказівники на наступний і попередній

елемент повині мати той самий тип що і вузол списку. Для роботи з

списком нам достатньо двох вказівників.

head - початок (голова)

tail - кінець (хвіст)

// оголошення вузла

struct Telefon{

string name;

int age;

Telefon *next,*prev;

Telefon(){

next=prev=NULL;

};

//оголошення структури на список

struct LstTelefon{

Telefon *head,*tail;

LstTelefon(){

hedd=tail=NULL;

};

//створення змінної списку

LstTelefon *Tel=new Telefon();

83..85

struct Film{

string name;

int age;

Film *next;

Film(){

next=NULL;

};

};

//оголошення структури на список

struct LstFilm{

Film *head,*tail;

LstFilm(){

heаd=tail=NULL;

};

};

//створення змінної списку

LstFilm *Tel=new Film();

87.Зв'язаний список в програмуванні — одна з найважливіших структур даних,

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

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

елемент (в однозв'язаних або однобічно зв'язаних списках) або на наступний та попередній

елементи (в двозв'язаних або двобічно зв'язаних списках). Список має «голову» — перший елемент

та «хвіст» — останній елемент.

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

перевірка чи список пустий

bool Lstfilms:: is Empty(){

if (head==NULL)

return true;

else

return false; };

88.додавання нового вузла

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

void LstFilms::(SFilm *f, SFilm *prevf){

SFilm *next=prev->next;

prevf->next=f;

f->next=nextf;

f->prev=prevf;

nextf->prev=f;};

89. Додавання елемента на початок списку: 1.Виділити память під новий елемент списка, нехай змінна р вказує на виділену память 2. Встановити необхідне значення поля напр data 3.присвоїти полю next значення елемента head 4. Присвоїти змінній head значення р.

код

p->data = ...;

p->next = head;

head = p;

Додавання елемента в список: зберегти адресу останнього елемента в тимчасовій змінної; створити новий елемент, записати в нього значення, в полі next - покажчик на попередній елемент. node * prev = top; top = new node; top-> value = 'd'; top-> next = prev; / / пов'язати з попереднім

90.вилучення вузла Створюється тимчасовий вказівник, куди записується адреса об'єкту, що видаляється. У вказівнику попереднього об'єкта на той що видаляється присвоюється адреса наступного після того що видаляється. Видаляється об'єкт з тимчасового покажчику.

Поясню на прикладі. Є спрямований список, в кожному елементі якого записана адреса наступного. 1> 2> 3> 4> 5 Потрібно видалити елемент номер 3. Якщо ми його просто вилучимо, то доступу до елементів 4 і 5 ми не отримаємо, тому що адресу 4 буде загублено. Тому, ми спочатку записуємо в якості наступного після 2 4 елемент, адреси третім зберігши в тимчасовій адресної змінної. Після чого за цією адресою видаляємо 3 елемент. void Lstfilm::delete(sFilm *flm){

Sfilm *prevf=flm->prev,*next=flm->next;

Delete flm;

Prevf->next=nextf;

Nextf->prev=prevf;}

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