Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C _Учебник_МОНУ

.pdf
Скачиваний:
206
Добавлен:
12.05.2015
Размер:
11.12 Mб
Скачать

 

Типи опрацювання дати і часу

349

 

 

 

Продовження табл. 10.5

 

 

 

 

 

 

 

Синтаксис функції

Опис

 

 

 

 

 

bool IsValidDateTime

Визначає допустимість значень року, місяця,

 

(Word Year, Word Month,

дня, години, хвилини, секунди та мілісекунди

 

Word Day, Word Hour,

і повертає true якщо Year належить діапазону

 

Word Minute, Word Sec,

 

від 1 до 9999 , Month – від 1 до 12, Day – від 1

 

Word MSec);

 

до кількості днів цього місяця, години Hour

 

 

 

 

 

 

від 0 до 24 (якщо Hour є 24, то Minute, Sec та

 

 

 

MSec мають бути 0), Minute та Sec – від 0 до

 

 

 

59, MSec – від 0 до 999; інакше повертає false

 

bool IsValidDateWeek

Подібно до функції IsValidDate() визначає

 

(Word Year, Word WeekOfYear,

допустимість значень року Year, номера тиж-

 

Word DayOfWeek);

ня цього року WeekOfYear і дня тижня

 

 

 

 

 

 

 

 

DayOfWeek (від 1 до 7)

 

 

bool IsValidTime(Word Hour,

Подібно до функції IsValidDateTime()

 

 

Word Minute, Word Second,

визначає допустимість параметрів часу

 

 

Word MSec);

 

 

 

Word MilliSecondOf

Виокремлює значення мілісекунд (в межах

 

 

(TDateTime dt);

від 0 до 999) заданого часу dt

 

 

unsigned MilliSecondOfTheDay

Повертає кількість мілісекунд, які сплинули

 

(TDateTime Time);

від початку цього дня до часу Time

 

 

unsigned MilliSecondOfTheHour

Повертає кількість мілісекунд, які сплинули

 

(TDateTime Time);

від початку години заданого часу Time

 

 

unsigned

Повертає кількість мілісекунд, які сплинули

 

MilliSecondOfTheMinute

від початку хвилини заданого часу Time

 

 

(TDateTime Time);

 

 

 

 

 

 

unsigned

Повертає кількість мілісекунд, які сплинули

 

MilliSecondOfTheMonth

від початку місяця заданої дати dt

 

 

(TDateTime dt);

 

 

 

unsigned

Повертає кількість мілісекунд, які сплинули

 

MilliSecondOfTheSecond

від початку секунди заданого часу Time

 

 

(TDateTime Time);

 

 

 

 

 

 

unsigned MilliSecondOfTheWeek

Повертає кількість мілісекунд, які сплинули

 

(TDateTime dt);

від початку тижня заданої дати dt

 

 

int MilliSecondOfTheYear

Повертає кількість мілісекунд, які сплинули

 

(TDateTime dt);

від початку року заданої дати dt

 

 

int MilliSecondsBetween

Повертає цілу кількість мілісекунд поміж

 

 

(TDateTime Now,

Now і Athen

 

 

TDateTime Athen);

 

 

 

 

 

 

 

double MilliSecondSpan

Повертає дійсне значення кількості

 

 

(TDateTime Now,

мілісекунд поміж Now і Athen

 

 

TDateTime Athen);

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

 

 

 

 

 

 

Word MinuteOf

Виокремлює значення хвилин заданого часу

 

(TDateTime Time);

Time (значення від 0 до 59)

 

 

350

Розділ 10

 

 

 

Продовження табл. 10.5

 

 

 

 

 

 

Синтаксис функції

Опис

 

 

 

 

Word MinuteOfTheDay

Повертає кількість хвилин, які сплинули

 

(TDateTime dt);

від початку дня до заданого значення dt

 

Word MinuteOfTheHour

Аналогічно до MinuteOf() повертає кількість хви-

 

(TDateTime Time);

лин, які сплинули від початку години заданого часу

 

 

 

Time (значення від 0 до 59)

 

Word MinuteOfTheMonth

Повертає кількість хвилин, які сплинули

 

(TDateTime dt);

від початку місяця заданої дати dt

 

Word MinuteOfTheWeek

Повертає кількість хвилин, які сплинули

 

(TDateTime dt);

від початку тижня заданої дати dt

 

unsigned MinuteOfTheYear

Повертає кількість хвилин, які сплинули

 

(TDateTime dt);

від початку року заданої дати dt

 

int MinutesBetween

Повертає цілу кількість хвилин поміж

 

(TDateTime Now,

Now і Athen

 

TDateTime Athen);

 

 

 

 

 

double MinuteSpan

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

 

(TDateTime Now,

Now і Athen (з урахуванням частини хвилини)

 

TDateTime Athen);

 

 

Word MonthOf

Повертає номер місяця заданої дати dt

 

(TDateTime dt);

(значення від 1 до 12)

 

Word MonthOfTheYear

Аналогічно до MonthOf() повертає кількість міся-

 

(TDateTime dt);

ців від початку року заданої дати dt (від 1 до 12)

 

 

 

 

int MonthsBetween

Повертає цілу кількість місяців поміж

 

(TDateTime Now,

датами Now і Athen

 

TDateTime Athen);

 

 

 

 

 

double MonthSpan

Повертає дійсне значення кількості місяців

 

(TDateTime Now,

поміж датами Now і Athen

 

TDateTime Athen);

(з урахуванням частини року)

 

TDateTime Now();

Повертає поточні системні дату і час

 

Word NthDayOfWeek

Визначає для дати dt порядковий номер цього

 

(TDateTime dt);

дня тижня у цьому місяці

 

TDateTime RecodeDate

Змінює дату dt на нові значення року Year,

 

(TDateTime dt, Word Year,

місяця Month, дня Day. Значення року має бути

 

Word Month, Word Day);

в межах від 1 до 9999, місяць – від 1 до 12, день – не

 

 

 

 

 

 

перевищувати кількості днів відповідного місяця

 

TDateTime RecodeDateTime

Змінює дату і час dt на нові значення року Year,

 

(TDateTime dt, Word Year,

місяця Month, дня Day, години Hour,

 

Word Month, Word Day,

хвилини Minute, секунди Second

 

Word Hour, Word Minute,

 

та мілісекунди MSec

 

Word Second, Word MSec);

 

 

TDateTime RecodeDay

Змінює день дати dt на значення Day.

 

(TDateTime dt, Word Day);

Можливе значення Day має не перевищувати

 

 

 

кількості днів відповідного місяця

 

 

 

Типи опрацювання дати і часу

351

 

 

 

Продовження табл. 10.5

 

 

 

 

 

 

Синтаксис функції

Опис

 

 

 

 

 

 

TDateTime RecodeHour

Змінює годину заданого часу dtна значення Hour.

 

 

(TDateTime dt,

Нове значення Hour має перебувати в межах від 0 до 24

Word Hour);

 

 

 

 

 

 

 

TDateTime

Змінює мілісекунду заданого часу dt

 

 

RecodeMilliSecond

на значення MSec. Нове значення MSec має бути

 

 

(TDateTime dt,

 

 

в межах від 1 до 999

 

 

Word MSec);

 

 

 

 

 

 

 

 

 

TDateTime RecodeMinute

Змінює хвилину заданого часу dt на значення

 

 

(TDateTime dt,

Minute. Нове значення Minute має бути в межах

 

 

Word Minute);

від 0 до 59

 

 

TDateTime RecodeMonth

Змінює місяць дати dt на нове значення Month.

 

 

(TDateTime dt,

Нове значення Month має бути в межах від 1 до 12

Word Month);

 

 

 

 

 

 

 

TDateTime RecodeSecond

Змінює секунду заданого часу dt на значення Sec.

 

 

(TDateTime dt,

Нове значення Sec має бути в межах від 0 до 59

 

 

Word Sec);

 

 

 

 

 

 

 

 

 

TDateTime RecodeTime

Змінює час dt на нові значення години Hour,

 

 

(TDateTime dt, Word Hour,

хвилини Minute, секунди Second та мілісекунди

 

 

Word Minute,

MSec

 

 

Word Second, Word MSec);

 

 

TDateTime RecodeYear

Змінює рік дати dt на нове значення Year.

 

 

(TDateTime dt,

Нове значення Year має бути в межах від 1 до 9999

Word Year);

 

 

 

void ReplaceDate

Змінює дату dt на нове значення NewDate;

 

 

(TDateTime &dt,

час залишається без змін

 

 

TDateTime NewDate);

 

 

 

 

 

 

 

void ReplaceTime

Змінює час dt на нове значення NewTime;

 

 

(TDateTime &dt,

дата залишається без змін

 

 

TDateTime NewTime);

 

 

 

 

 

bool SameDate(TDateTime

Повертає true, якщо обидві дати d1і d2 (день, місяць

d1, TDateTime d2);

та рік) збігаються; значення часу ігнорується

 

 

bool SameDateTime

Повертає true, якщо обидва значення dt1 та dt2

 

 

(TDateTime dt1,

(рік, місяць, день, година, хвилина,

 

 

TDateTime dt2);

секунда і мілісекунда) збігаються

 

 

 

 

 

 

bool SameTime

Повертає true, якщо всі параметри обох значень

 

 

(TDateTime t1,

часу t1 і t2 (година, хвилина, секунда і мілісекунда)

TDateTime t2);

збігаються; значення дат ігнорується

 

 

 

 

 

 

Word SecondOf

Повертає значення секунд заданого часу t.

 

 

(TDateTime t);

Функція є подібною до SecondOfTheMinute()

 

 

 

 

 

 

unsigned SecondOfTheDay

Повертає кількість секунд, що сплили від початку

(TDateTime dt);

дня до часу dt

 

 

Word SecondOfTheHour

Повертає кількість секунд, що сплили

 

 

(TDateTime dt);

від початку години заданого часу dt

 

 

352

Розділ 10

 

 

 

Продовження табл. 10.5

 

 

 

 

 

 

Синтаксис функції

Опис

 

 

 

 

Word SecondOfTheMinute

Повертає кількість секунд, що сплили від

 

(TDateTime dt);

початку хвилини заданого часу dt.

 

 

 

Функція є подібною до SecondOf()

 

 

 

 

unsigned SecondOfTheMonth

Повертає кількість секунд, що сплили

 

(TDateTime dt);

від початку першого місяця заданої дати dt

 

 

 

 

unsigned SecondOfTheWeek

Повертає кількість секунд, що сплили

 

(TDateTime dt);

від початку тижня заданої дати dt

 

 

 

 

unsigned SecondOfTheYear

Повертає кількість секунд, що сплили

 

(TDateTime dt);

від початку року заданої дати dt

 

int SecondsBetween

Повертає цілу кількість секунд

 

(TDateTime Now, TDateTime Athen)

поміж Now і Athen

 

double SecondSpan

Повертає дійсне значення кількості секунд

 

(TDateTime Now,

поміж Now і Athen

 

TDateTime Athen)

(з урахуванням частини секунди)

 

 

 

 

TDateTime StartOfADay

Формує значення типу TDateTime на

 

(Word Year, Word Month,

початок дня Day місяця Month року Year

 

Word Day);

 

 

 

 

 

TDateTime StartOfAMonth

Формує значення типу TDateTimeна поча-

 

(Word Year, Word Month);

ток першого дня місяця Month року Year

 

 

 

 

TDateTime StartOfAWeek

Формує значення типу TDateTime

 

(Word Year, Word

на початок дня тижня DayOfWeek

 

WeekOfYear,Word DayOfWeek);

тижня року DayOfWeek року Year

 

 

 

 

TDateTime StartOfAYear

Формує значення типу TDateTime

 

(Word Year);

на початок року Year

 

 

 

 

TDateTime StartOfTheDay

Формує значення типу TDateTime

 

(TDateTime dt);

на початок зазначеного дня dt

 

 

 

 

TDateTime StartOfTheMonth

Формує значення типу TDateTime

 

(TDateTime dt);

на початок місяця заданої дати dt

 

 

 

 

TDateTime StartOfTheWeek

Формує значення типу TDateTime

 

(TDateTime dt);

на початок тижня заданої дати dt

 

 

 

 

TDateTime StartOfTheYear

Формує значення типу TDateTime

 

(TDateTime dt);

на початок року заданої дати dt

 

 

 

 

TDateTime Time();

Повертає поточний системний час

 

TDateTime Today();

Повертає поточну системну дату

 

TDateTime Tomorrow();

Повертає дату завтрашнього дня

 

bool TryEncodeDate(Word Year,

Перетворює рік Year, місяць Month,

 

Word Month, Word Day,

день Day на дату Date.

 

TDateTime &Date);

Повертає false у випадку помилки

 

 

 

 

bool TryEncodeTime(Word Hour,

Перетворює годину Hour, хвилину Minute,

 

Word Minute, Word Sec,

секунду Minute і мілісекунду MSecна час

 

Word MSec, TDateTime &Time);

Time. Повертає false у випадку помилки

 

 

 

 

 

Типи опрацювання дати і часу

353

 

 

 

Закінчення табл. 10.5

 

 

 

 

 

 

Синтаксис функції

Опис

 

 

 

 

bool TryEncodeDateDay

Перетворює рік Year, день року DayOfYear на

(Word Year, Word DayOfYear,

дату Date. Повертає false у випадку помилки

TDateTime &Date);

 

 

 

bool TryEncodeDateMonthWeek

Перетворює рік Year, місяць Month,

тиждень

(Word Year, Word Month,

місяця WeekOfMonth, день тижня DayOfWeek

Word WeekOfMonth, Word

(1 – понеділок) на дату Date.

 

 

DayOfWeek, TDateTime &Date);

 

 

Повертає false у випадку помилки

 

 

bool TryEncodeDateTime (Word

Формує dtтипу TDateTimeза значеннями року

Year,Word Month, WordDay,

Year, місяця Month, дня Day, години Hour,

Word Hour, Word Minute, Word

хвилини Minute, секунди Secта мілісекунди

Sec, Word MSec, TDateTime &dt);

MSec. Повертає false у випадку помилки

bool TryEncodeDateWeek

Формує dtтипу TDateTimeза заданими

(Word Year, Word WeekOfYear,

значеннями року Year, тижня року WeekOfYear

TDateTime &dt, Word

і дня тижня DayOfWeek.

 

 

DayOfWeek);

 

 

Повертає false у випадку помилки

 

 

 

 

 

 

bool

Формує dtтипу TDateTimeза заданими

TryEncodeDayOfWeekInMonth

значеннями року Year, місяця Month, тижня

(Word Year, Word Month, Word

NthDayOfWeek і дня тижня DayOfWeek.

NthDayOfWeek, Word

Повертає false у випадку помилки

 

 

DayOfWeek, TDateTime &dt);

 

 

Word WeekOf

Повертає номер тижня року заданої дати dt

(TDateTime dt)

(значення від 1 до 53)

 

 

Word WeekOfTheMonth

Повертає номер тижня місяця заданої дати dt

(TDateTime dt);

(значення від 1 до 6)

 

 

Word WeekOfTheYear

Повертає номер тижня року заданої дати dt

(TDateTime dt)

(від 1 до 53). Функція є подібною до функції

 

 

WeekOf()

 

 

int WeeksBetween(TDateTime

Повертає кількість тижнів поміж Now і Then

Now, TDateTime Then);

 

 

 

Word WeeksInAYear(Word Year);

Повертає кількість тижнів року Year

Word WeeksInYear

Повертає кількість тижнів року

 

 

(TDateTime dt);

зазначеної дати dt

 

 

double WeekSpan

Повертає дійсне значення кількості тижнів

(TDateTime Now, TDateTime

поміж датами Now і Athen

 

 

Then);

(з урахуванням частини тижня)

 

 

 

 

 

 

Word YearOf(TDateTime dt)

Повертає рік зазначеної дати dt

 

 

 

 

(значення від 1 до 9999)

 

 

int YearsBetween(TDateTime

Повертає цілу кількість років поміж

 

 

Now, TDateTime Athen)

датами Now і Athen

 

 

double YearSpan (TDateTime

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

Now, TDateTime Athen)

датами Now і Athen(з урахуванням частини року)

TDateTime Yesterday();

Повертає дату вчорашнього дня

 

 

354

Розділ 10

Для того щоб у програмі були доступними наведені вище функції й методи, треба директивою #include долучити відповідні заголовні файли DateUtils.hpp чи SysUtils.hpp. Розглянемо на прикладах роботу цих функцій і методів.

Використовуючи різні функції, наведемо кілька варіантів виведення поточної дати і часу. Нечислові результати виконання цих функцій виводяться мовою, яку визначено в налаштуваннях операційної системи. У наведеному нижче прикладі подано різні можливості форматування дати і часу, в тому числі можливі символи-розділювачі для дати і часу.

#include "DateUtils.hpp"

void __fastcall TForm1::BitBtn1Click(TObject *Sender) { TDateTime fd;

fd=Time(); Edit1->Text=fd.CurrentTime(); Edit2->Text=fd.TimeString(); fd=Date(); Edit3->Text=fd.DateString(); Edit4->Text=DateToStr(fd); Edit5->Text=DateTimeToStr(Now()); // Можливий розділювач годин і хвилин '–'

DateSeparator = '-'; ShortDateFormat="dd/mmmm/yyyy"; Label4->Caption=DateToStr(Date());

Label5->Caption="Сьогодні: "+FormatDateTime("dddd,dd,mmmm,yyyy ' \n час: 'hh:mm am/pm", Now());

}

void __fastcall TForm1::Timer1Timer(TObject *Sender) { Form1->Caption=Now();

}

Тут виведення поточної системної дати і часу у якості надпису форми здійснюється за допомогою компонента Timer1 (див. стор. 40).

Проілюструємо роботу функцій DecodeDate() та DecodeTime() для виведення поточної дати і часу.

void __fastcall TForm1::Button1Click(TObject *Sender)

{Word Year, Month, Day, Hour, Min, Sec, MSec; TDateTime dt = Now();

DecodeDate(dt, Year, Month, Day); Label1->Caption = AnsiString("Сьогодні ")+

IntToStr(Day) + AnsiString("-й день ")+ IntToStr(Month) + "-го місяця "+ IntToStr(Year) + " року ";

DecodeTime(dt, Hour, Min, Sec, MSec); Label2->Caption = IntToStr(Hour) +

" годин " + IntToStr(Min) + " хвилин";

}

Типи опрацювання дати і часу

355

Наведемо приклади використання operator:

void __fastcall TForm1::Button1Click(TObject *Sender)

{TDateTime d1,d2,d3,d4; d1=Now(); Edit1->Text=d1.DateTimeString(); d2=d1.operator+(0.125); Edit2->Text=d2.TimeString(); d3=StrToDateTime(Edit3->Text); int k1 = d1.operator int();

int k2 = d3.operator int(); Edit4->Text=IntToStr(k2-k1);

d4=d1.operator-(d3); Edit5->Text=d4.TimeString();

}

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

void __fastcall TForm1::Button1Click(TObject *Sender) { TDateTime d1,d2;

d1=StrToDateTime(Edit1->Text); d2=StrToDateTime(Edit2->Text); int y,m,d,h,min,s;

y=YearsBetween(d2,d1); Edit3->Text=IntToStr(y); m=MonthsBetween(d2,d1); Edit4->Text=IntToStr(m); d=DaysBetween(d2,d1); Edit5->Text=IntToStr(d); h=HoursBetween(d2,d1); Edit6->Text=IntToStr(h); min=MinutesBetween(d2,d1); Edit7->Text=IntToStr(min);

}

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

356

Розділ 10

void __fastcall TForm1::Button1Click(TObject *Sender)

{TDateTime dt1,dt2,dt3,dt4;

dt1=Edit1->Text;

// Введення заданої дати

dt2=EndOfTheDay(dt1);

Edit2->Text=dt2;

dt3=EndOfTheWeek(dt1);

Edit3->Text=dt3;

dt4=EndOfTheYear(dt1);

Edit4->Text=dt4;

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{TDateTime dt=StrToDateTime(Edit1->Text); int x=StrToInt(Edit2->Text); switch(RadioGroup1->ItemIndex)

{ case 0:

dt=IncYear(dt,x);

break;

case 1:

dt=IncMonth(dt,x);

break;

case 2:

dt=IncWeek(dt,x);

break;

case 3:

dt=IncDay(dt,x);

break;

case 4:

dt=IncHour(dt,x);

break;

case 5:

dt=IncMinute(dt,x); break;

case 6:

dt=IncSecond(dt,x); break;

}

Edit3->Text=DateTimeToStr(dt);

}

Наступний приклад програми продемонструє роботу відразу декількох функцій опрацювання даних TDateTime.

Типи опрацювання дати і часу

357

#include <DateUtils.hpp> struct avio

{int nomr;

char reis[20], all[10]; TDateTime start,last; double dli;

AnsiString info()

{ AnsiString s=IntToStr(nomr)+" "+(AnsiString)reis+" "+

 

start.TimeString()+" "+last.TimeString()+" "+

 

(AnsiString)all;

return s;

 

}

 

};

 

avio w[10];

 

int n=0;

// Кількість маршрутів

//------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{SG1->Cells[0][0]="Ном.рейс"; SG1->Cells[1][0]="Напрям"; SG1->Cells[2][0]="Відправ."; SG1->Cells[3][0]="Прибуття"; SG1->Cells[4][0]="Тривалість подорожі";

}

//------------------------------------------------------------

// Записати відомості

void __fastcall TForm1::Button1Click(TObject *Sender)

{SG1->RowCount=n+2; AnsiString s1,s2;

358

Розділ 10

 

 

 

w[n].nomr=StrToInt(Edit1->Text);

 

// Увести номер маршруту,

 

strcpy(w[n].reis,Edit2->Text.c_str());

// його назву,

 

w[n].start=Edit3->Text;

 

// час відправлення

 

strcpy(w[n].all,Edit4->Text.c_str());

// та тривалість подорожі

 

s1=(AnsiString)w[n].all;

 

// Визначити окремо

 

int n1=StrToInt(s1.SubString(1,s1.Pos(":")-1));//кількість годин

 

s1.Delete(1,s1.Pos(":"));

 

// та кількість

 

int n2=StrToInt(s1);

 

// хвилин подорожі

 

w[n].last=IncHour(w[n].start,n1);

 

// Визначити дати і часу

 

w[n].last=IncMinute(w[n].last,n2);

// прибуття

 

// Тривалість подорожі у десят.долях годин

 

 

double f=HourSpan(w[n].last,w[n].start);

 

Edit5->Text=FloatToStr(f);

 

 

 

double ff=DaySpan(w[n].last,w[n].start);// Кількість діб подорожі

 

Edit6->Text=FloatToStr(ff);

 

 

 

int d=DaysBetween(w[n].last,w[n].start);// Кількість цілих діб

 

Edit7->Text=IntToStr(d);

 

 

 

w[n].dli=ff;

// Тривалість подорожі у днях

 

Edit8->Text=TimeToStr(ff);

// Вивести складову годин подорожі

if (w[n].last.operator double()>1) w[n].last=w[n].last-(int(w[n].last));

SG1->Rows[n+1]->DelimitedText=w[n].info(); n++;

}

//------------------------------------------------------------

//Вибрати рейси за певним напрямом з часом прибуття до пункту призначення

//від 5:00 до 12:00

void __fastcall TForm1::Button2Click(TObject *Sender)

{int nom=0; Memo1->Clear();

if (Edit9->Text=="") {ShowMessage("Забули ввести!"); return;}

AnsiString nazva=Edit9->Text; // Ввести назву маршруту for (int i=0;i<n;i++)

if ( AnsiString(w[i].reis)==nazva && TTime(w[i].last)>=TTime("05:00") && TTime(w[i].last)<=TTime("12:00"))

{ nom=i; Memo1->Lines->Add(w[nom].info()); } if (!nom) ShowMessage("Немає таких рейсів");

}

//------------------------------------------------------------

//Визначити дату і час прибуття до пункту призначення для певного маршруту

//і конкретної дати відправлення

void __fastcall TForm1::Button3Click(TObject *Sender) { int m=0; TDateTime dt1, dt2;

if (Edit10->Text=="" || Edit11->Text=="") { ShowMessage("Забули ввести!"); return;}

int k = StrToInt(Edit10->Text); // Ввести номер маршруту for (int i=0;i<n;i++)

if (w[i].nomr==k) {m=i; break;} // Пошук потрібного маршруту

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