Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
InfOlimp_9-lab.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
226.82 Кб
Скачать
  • Flag массивінің элементтерін жинақтаймыз. Егер ағымдағы жиынтық (қосынды) 0-ге тең болып қалса (алайда массив әлі аяқталмаған болса), онда бір байланысқан облыс алынды деген сөз. 0-ге теңестірілгендер саны байланысқан облыстардың саны болып табылады.

    Есепті Бейсикте шешу үлгісі:

    input "боликтердин санын енгиз", n

    dim a (2*n), flag (2*n)

    for i=1 to n*2 step 2

    input "биринши координата", a(i)

    flag (i)=1

    input "екинши координата", a(i+1)

    flag (i+1)=-1

    next

    for j=2*n to 2 step -1

    for i= 1 to j-1

    if a(i)>a(i+1) then swap a(i), a(i+1): swap flag(i), flag(i+1)

    next i, j

    for i=1 to 2*n

    s=s+flag (i)

    if s=0 then k=k+1

    next

    print "байланыскан облыстар саны ="; k

    Есепті Паскальда шешу үлгісі:

    const m=20;

    var a, flag: array [1..m] of integer;

    i,j,s,n,k,x: integer;

    begin

    writeln ('боликтер саны'); readln (n);

    j:=1;

    for i:=1 to n do

    begin

    writeln ('боликтин басы мен сонынын координаттарын енгиз');

    readln (a[j], a[j+1]);

    flag [j]:=1;

    flag [j+1]:=-1;

    j:=j+2;

    end;

    for j:=2*n downto 2 do

    for i:=1 to j-1 do

    if a[i]>a[i+1] then

    begin

    x:=a[i];

    a[i]:=a[i+1];

    a[i+1]:=x;

    x:=flag[i];

    flag [i]:= flag [i+1];

    flag [i+1]:=x;

    end;

    s:=0;

    k:=0;

    for i:=1 to 2*n do

    begin

    s:=s+flag [i];

    if s=0 then k:=k+1;

    end;

    writeln ('байланыскан облыстар саны=', k);

    end.

    Тест:

    Берілгені:

    n=3

    1

    5

    4

    9

    11

    15

    n=3

    1

    3

    4

    9

    11

    15

    Нәтижесі:

    2

    3

    Кілттік терминдер:

    • Байланысқан облыс – бөліктердің біріккен облысына сәйкес облыс.

    Қысқаша қорытынды.

    Шартында белгілі бір оқиғаның басталуы мен аяқталуы туралы айтылған есепі шешу барысында (жақшаның ашылуы мен жабылуы, қарауылдың келіп-кетуі, бөліктің басы және соңы ) қосымша «жалауша» массиві қолданылады. «Жалауша» оқиғасының басталуында, ол «1» мағынасына, ал аяқталуында «-1» мағынасына ие болады.

    Бірнеше есептерді шешу барысында (мысалы, координаттық түзуде бөліктердің «байланысқан» облыстарын табуда ) біртипті массивті сұрыптау типтік алгоритмін қолдану қажет болады.

    Іс-тәжірибеге арналған жинақ:

    Сұрақтар.

    • Әртүрлі мәліметтерді теру барысында әртүрлі оқиғаға сәйкес келетін элементтерді қандай жолмен белгілесек болады?

    • Мәліметтерді сұрыптау қажеттігі туындағанда осы мәліметпен байланысты оқиға қандай жолмен ескеріледі?

    • Ортақ бір координатасы бар екі бөліктің неше байланысқан облысы болады? (біріншісінің басы екіншісінің соңына сәйкес келеді)

    • Егер бір қарауылдың кету уақыты екінші қарауылдың ауысымға түсу уақытымен сәйкес келсе, программа галереяның қарауылданбаған қанша санын көрсетеді?

    Тапсырмалар

    1. Әртүрлі төрт кинотеатрда қызықты фильмдердің сеансы өтіп жатыр. Қандай да бір көрермен барлық төрт сеансты тамашалағысы келді. Әр фильмнің басталу және аяқталу уақыты белгілі болса, көрермен барлық төрт фильмге кіре алады ма екенін анықтауға көмектесіңіздер, оның үстіне бір кинотеатрдан екінші кинотеатрға «өту» уақытын ескермесеңіз болады.

    2. Символдар қатарында Паскаль тіліндегі программа орналасқан (бір қатарға жазылған). Begin және End кілттік сөздерінің қойылуында қатенің бар-жоқ екендігін анықтау керек.

    11

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