Даалгавраа биелүүлэхийн тулд юу мэдэх хэрэгтэй вэ. Компьютерийн шинжлэх ухааны OGE асуудлуудын нарийвчилсан шийдэл Огнооны хүснэгтэд тооны талаархи мэдээллийг харуулав

Мэдээлэл боловсруулах:

  • Алгоритм, алгоритмын шинж чанар, алгоритм бичих арга. Урсгал диаграм. Програмчлалын танилцуулга.
  • Алгоритм дизайн.

Эдгээр нь компьютерийн шинжлэх ухааны улсын үндсэн шалгалтын (OGE) 10 дугаар тестийн даалгаврыг бий болгох сэдвүүд юм.

10 (B) (1-р хэсэг, ахисан түвшний - даалгавар нь шалгуулагч хариултыг тэмдэгтийн дарааллаар бие даан боловсруулж, бүртгэх, дуусгах хугацаа - 6 минут, даалгаврыг гүйцэтгэх дээд оноо - 1). Энэ даалгаварт хариулахдаа шалгалтын явцад шалгагдсан сургалтын түвшинд тавигдах шаардлага: мэдээллийн объект, процессын тоон параметрүүд, гүйцэтгэх чадварыг үнэлэх. дугуй робин алгоритмпрограмчлалын хэлнүүдийн аль нэгэнд нь массив тоо боловсруулах.

Даалгаврыг биелүүлэхийн тулд та юу мэдэх хэрэгтэй вэ:

  • массив- энэ нь массив дахь элементийн байрлалыг тодорхойлдог индексээр эрэмблэгдсэн ижил төрлийн элементүүдийн багц (нэрлэсэн цуглуулга) юм;
  • Үүнийг программд ашиглахын өмнө массивыг тайлбарлах ёстой, өөрөөр хэлбэл. массивын элементийн нэр, тоо, тэдгээрийн төрлийг зааж өгөх ёстой;

var<имя_массива>:массив [<мин_знач_индекса>. . <макс_знач_индекса> ] -ийн<тип_элементов>;

Жишээ нь: бичлэг
var A: бүхэл тооны массив;
гэдэг нь 10 бүхэл тооноос бүрдэх А нэртэй массив өгөгдсөн гэсэн үг.

  • Та массивыг гараас элемент бүрийн утгыг оруулах эсвэл элементүүдэд зарим утгыг өгөх замаар дүүргэж болно.
  • Массивын элементэд хандахын тулд дөрвөлжин хаалт, тэмдэглэгээг ашиглана A[i] i тоо (индекс) бүхий массивын элементийг тэмдэглэнэ;
  • матриц (хоёр хэмжээст массив) нь ижил төрлийн элементүүдийн тэгш өнцөгт хүснэгт юм;
  • хэрэв матрицыг A гэж нэрлэсэн бол урвуу A нь i мөр ба k баганын огтлолцол дээр байрлах элементийг илэрхийлнэ.

Асуудлыг шийдэх жишээ:
Dat хүснэгт нь ангиудын сурагчдын тооны мэдээллийг хадгалдаг (Dat - нэгдүгээр ангийн сурагчдын тоо, Dat - хоёрдугаар анги гэх мэт). Дараах программын үр дүнд ямар дугаар хэвлэгдэхийг тодорхойл. Програмын текстийг гурван програмчлалын хэлээр өгсөн болно.

Алгоритм хэл ҮНДСЭН Паскаль

alg
эхлэл
celtab Dat
бүхэл тоо k, m
Огноо:= 20; Огноо:= 25
Огноо:= 19; Огноо:= 25
Огноо:= 26; Огноо:= 22
Огноо:= 24; Огноо:= 28
Огноо:= 26; Огноо:= 21
Огноо:= 27
м:= 0
1-ээс 11 хүртэлх k-ийн хувьд nc
хэрэв Dat[k] > 22 бол
m:= m + 1
Бүгд
кт
гаралт м
con

DIM Dat(11) БҮХЭЛ ТОГЛОО
DIM k,mБҮХЭЛ ТОГЛОО
Dat(1) = 20: Dat(2) = 25
Dat(3) = 19: Dat(4) = 25
Dat(5) = 26: Dat(6) = 22
Dat(7) = 24: Dat(8) = 28
Dat(9) = 26: Dat(10) = 21
Өгөгдөл(11) = 27
m = 0
FOR k = 1-ээс 11
ХЭРВЭЭ Dat(k) > 22 ТЭГВЭЛ
m = m + 1
Төгсгөл бол
ДАРААГИЙН к
Хэвлэх м

Var k, m: бүхэл тоо; Огноо: бүхэл тооны массив; Эхлэх огноо:= 20; Огноо:= 25; Огноо:= 19; Огноо:= 25; Огноо:= 26; Огноо:= 22; Огноо:= 24; Огноо:= 28; Огноо:= 26; Огноо:= 21; Dat > 22 дараа нь эхлэх m:= m + 1 төгсгөл; writeln(m) Төгсгөл.

Шийдэл (1 арга зам):

  1. Хөтөлбөрийг алхам алхмаар авч үзье. Нэгдүгээрт, ашиглагдах хувьсагчдыг (k ба m хувьсагч), мөн 11 элемент агуулсан Dat массивыг (элементүүдийг 1-ээс 11 хүртэл дугаарласан) зарлана.

АНХААРУУЛГА: -д тайлбарласан Dat массив дотор Үндсэн хэлдугаарлалт нь эхний элементээс биш тэгээс эхэлдэг тул 12 элемент байх болно.

  1. Дараа нь массивыг дүүргэх болно. Жишээлбэл, 1-р индекстэй массивын элементэд 20 утга, 2-р индекстэй элементэд 25 гэх мэт утга онооно. Үүний үр дүнд үүссэн массивыг дараах байдлаар төлөөлж болно.

Массив дат

Индекс

Утга

  1. m хувьсагчид 0 утгыг өгсөн. Үүний дараа k параметртэй давталт эхэлж, k нь 1-ээс 11 хүртэл 1-ийн алхамаар өөрчлөгдөнө.

Гогцооны биед нөхцөл байдлыг шалгана.

  1. k индекс дэх массив элементийн утгыг 22 тоотой харьцуулна. Хэрэв массив элемент 22-оос их бол m хувьсагч 1-ээр нэмэгдэнэ. Тэгэхгүй бол юу ч болохгүй.
  2. Програмын хамгийн төгсгөлд m хувьсагчийн утга дэлгэц дээр гарч ирнэ.
  3. Програмыг ажиллуулсны дараа юу болохыг тодорхойлъё. m хувьсагчийн утгыг гогцоонд өөрчилдөг. Давталтын өмнө түүний утга нь тэг байна. Дараа нь програм массивын бүх элементүүдийг давтаж 22 тоотой харьцуулна. Хэрэв массивын элемент 22-оос их бол m хувьсагч 1-ээр нэмэгдэнэ. Тиймээс бид массивын бүх элементүүдийг тоолох хэрэгтэй. 22-оос их массив - тэдгээрийн тоо нь m хувьсагчийн утгатай тэнцүү байх болно. Ийм 7 элемент байдаг - эдгээр нь 2, 4, 5, 7, 8, 9, 11 индекстэй элементүүд юм.

АНХААР: 22-той тэнцэх 6-р элемент. Гэхдээ хойш... Бидний харьцуулалт хатуу (">" тэмдэг) тул бид үүнийг анхаарч үздэггүй.

Хариулт: 7

Шийдэл (2 арга зам гараар гүйлгэх):

Үүссэн массивыг оюун ухаанаараа төсөөлөөд үз дээ:
Массив дат

Индекс

Утга

Холбооны сурган хүмүүжүүлэх хэмжилтийн хүрээлэн / OGE 2015 - 2019 оны үзүүлэнгийн хувилбарууд, техникийн үзүүлэлтүүд, кодлогчууд // Компьютерийн шинжлэх ухаан ба МХХТ - (http://fipi.ru)

  • Драчева E. R., Гришина I. A. Компьютерийн шинжлэх ухааны чиглэлээр ТЕГ-т бэлтгэх / E. R. Dracheva, I. A. Гришина // Б хэсэг - (http://giainformatika.ru/)
  • к Дат[к](BASIC Dat(k)-д) Нөхцөл байдлын шалгалт Dat[k] > 22(BASIC Dat(k) > 22-ын хувьд) м
    0
    1 20 Үгүй
    2 25 Тиймээ 1
    3 19 Үгүй
    4 25 Тиймээ 2
    5 26 Тиймээ 3
    6 22 Үгүй
    7 24 Тиймээ 4

    Дат хүснэгтэд ардын дууны 10 уран бүтээлчид өгсөн саналын тоо (Дат - эхний дуучдад өгсөн саналын тоо; Дат - хоёрдугаарт гэх мэт) -ийн талаархи мэдээллийг харуулав. Дараах программын үр дүнд ямар дугаар хэвлэгдэхийг тодорхойл. Програмын текстийг гурван програмчлалын хэлээр өгсөн болно. Алгоритм хэл BASIC Pascal alg nach celtab Dat бүхэл тоо k, m Dat := 16 Dat := 20 Dat := 20 Dat := 41 Dat := 14 Dat := 21 Dat := 28 Dat := 12 Dat :=1 = 35 m:= 1-ээс 10 хүртэлх k-д 0 nc хэрэв Dat[k]gt;m дараа нь m:= Dat[k] бүх cc гаралт m con DIM Dat(10) AS БҮХЭЛДҮҮР DIM k,m AS БҮХЭЛ ТОГТОЙ Dat(1) ) = 16: Dat(2) = 20 Dat(3) = 20: Dat(4) = 41 Dat(5) = 14: Dat(6) = 21 Dat(7) = 28: Dat(8) = 12 Dat (9) = 15:Dat(10) = 35 м = 0 FOR k = 1-ээс 10 ХЭРВЭЭ Dat(k)gt;m THEN m = Dat(k) ENDIF NEXT k PRINT m Var k, m: бүхэл тоо; Огноо: бүхэл тооны массив; Эхлэх огноо:= 16; Огноо:= 20; Огноо:= 20; Огноо:= 41; Огноо:= 14; Огноо:= 21; Огноо:= 28; Огноо:= 12; Огноо:= 15; Огноо:= 35; м:= 0; for k:= 1-ээс 10 хүртэл хийх бол Dat[k]gt;m дараа нь эхлэх m:= Dat[k] төгсгөл; writeln(m); Төгсгөл.

    Үүнтэй төстэй асуултууд

    • Хоосон нүдийг бөглө. Надад туслаач:)
    • Прометейг сулласан баатар
    • Бодлого зохиож, асуудлыг шийдэж, шийдлийг бич
    • Залуус аа, туслаарай: (lg(x+√3)+lg(x-√3)=0
    • Надад шийдэхэд тусална уу. Хажуугийн урт нь 12 см-ийн талбайгаас 9 дахин бага бол гурвалжны талбайг тооцоол.
    • Тэгшитгэлийг шийд (8 5/27 - x) - 2 25/27 = 1 25/27
    • Худалдсан тариачдын нэр хэн байсан бэ?
    • Охин зулзага хооллож эхлэв. Тэр овъёос авчирсан тул тэр аяганаас холдов. Тэр улаан лууван хүлээн авмагцаа аяганаас холдов. Би нэг ширхэг гахайн мах авчирсан, зулзага хангалттай биш гэж хэлэв. Текстээс "өртөлтгүй эгшиг..." гэж бичсэн үгсийг олоорой.

    Би демо хувилбар төслөөс компьютерийн шинжлэх ухааны OGE-2016-ийн 10-р даалгаврын шийдлийг танилцуулж байна. 2015 оны демотой харьцуулахад 10-р даалгавар өөрчлөгдөөгүй. Энэ нь алгоритмын хэлээр (Алгоритм, алгоритмын шинж чанар, алгоритм бичих арга. Урсгал диаграмм. Програмчлалын удиртгал. Алгоритмын бүтээц) бичигдсэн тоон массивыг боловсруулах циклийн алгоритмыг гүйцэтгэх чадварын тухай даалгавар юм. Энэ бол нарийн төвөгтэй байдлын өндөр түвшний даалгавар бөгөөд хариулт нь хариултын талбарт бичигдсэн байх ёстой бүхэл тоо юм.

    10-р даалгаврын дэлгэцийн агшин.

    Дасгал:

    Дат хүснэгтэд ардын дууны 10 уран бүтээлчид өгсөн саналын тоо (Дат - эхний дуучдад өгсөн саналын тоо; Дат - хоёрдугаарт гэх мэт) -ийн талаархи мэдээллийг харуулав. Дараах программын үр дүнд ямар дугаар хэвлэгдэхийг тодорхойл. Програмын текстийг гурван програмчлалын хэлээр өгсөн болно.

    Паскаль хэл дээрх жишээ

    Var k, m: бүхэл тоо;
    Огноо: бүхэл тооны массив;
    Эхлэх
    Огноо:= 16; Огноо:= 20;
    Огноо:= 20; Огноо:= 41;
    Огноо:= 14; Огноо:= 21;
    Огноо:= 28; Огноо:= 12;
    Огноо:= 15; Огноо:= 35;
    м:= 0;
    k:= 1-ээс 10 хүртэл хийх
    хэрэв Dat[k]>m бол
    Эхлэх
    m:=Dat[k]
    Төгсгөл;
    writeln(m);
    Төгсгөл.

    Энэ програм нь 10 тооны массив үүсгэдэг. 1-ээс 10 хүртэлх циклд массивын элементийн утгыг m хувьсагчийн утгатай харьцуулна. Хэрэв массивын элементийн утга нь m хувьсагчийн утгаас хатуу их байвал m хувьсагч нь массив элементийн утгыг оноодог (эхэндээ давталтын өмнө m хувьсагчийн утга 0-тэй тэнцүү байсан).

    Товчхондоо бид дараахь зүйлийг олж авна. 1-ээс 10 хүртэлх ардын дууны оролцогч бүрийн саналын тоог m-ийн утгатай харьцуулна. Хэрэв саналын тоо m-ээс их байвал m хувьсагч нь саналын тоотой тэнцүү утгыг өгнө. Циклийг гүйцэтгэсний үр дүнд бид m тоог олж авдаг бөгөөд энэ нь оролцогчдын аль нэгэнд өгсөн хамгийн олон санал, өөрөөр хэлбэл. м=41.

    Бидний ойлголтоор массив бол ердийн хүснэгт юм. Хүснэгт дэх утгууд нь нэг төрлийн байх ёстой: бүхэл тоо, бодит тоо, мөр эсвэл логикийн утгууд. Дүрмээр бол сургуулийн хичээлд бүхэл тоон хүснэгттэй холбоотой асуудлуудыг авч үздэг. Хүснэгтийн элементүүд нь санах ойд ойрхон байрладаг бөгөөд хүснэгтийн серийн дугаар (индекс) -ээр дамжуулан хандах боломжтой.

    А
    1 2 3 4 5
    55 36 134 75 100

    А-г таван элементийн хүснэгт гэж үзье. Дараа нь A = 55, A = 36, A = 134, A = 75, A = 100 байна.

    Idol дахь хүснэгтүүдтэй ажиллахын тулд та үүнийг хадгалах санах ойг хуваарилах хэрэгтэй.

    Алг нач челтаб А

    Хүснэгтийг гараар бөглөж болно:

    A := 55 A := 36 A := 134 A := 75 A := 100

    Хэрэв олон элемент байгаа бол гогцоо ашиглах нь дээр ( давталтын хувьсагч бихөтөлбөрийн эхэнд зарласан байх ёстой):

    nc for i 1-ээс 5 хүртэлх оролт A[i] cc

    Хэрэв та хүснэгтийн бүх элементүүдийн утгыг өөрчлөх шаардлагатай бол (жишээлбэл, тэдгээрийг 2 дахин нэмэгдүүлэх) давталтыг дахин ашиглах нь дээр.

    1-ээс 5 хүртэлх i NC A[i] := A[i]*2 kc

    Мөн бид хүснэгтийн бүх элементийн утгын гаралтыг давталтаар гүйцэтгэдэг.

    nc for i 1-ээс 5 зүү A[i],ns cc

    Хүснэгт дэх хамгийн их элементийн утга ба түүний тоог олох

    Тайлбар: хамгийн бага элементийг олох даалгавар нь зөвхөн харьцуулах тэмдгээр ялгаатай

    Даалгавар нь хэд хэдэн үе шатанд хуваагдана:

    1. Эхний максимумыг авахын тулд хүснэгтийн хамгийн эхний элементийг тоогоор нь санаж ав

    Imax:= 1

    2. Бид бусад бүх элементүүдийг (2-оос сүүлчийнх хүртэл) шалгана: хэрэв одоогийн шалгаж байгаа элемент нь дээд хэмжээнээс их байвал imax дахь одоогийн элементийн тоог бид санаж байна.

    i-ийн Nts нь 2-оос 5 хүртэл A[i] > A бол imax:= i бүх kts

    3. Хамгийн их элементийн олсон тоог ашиглан бид дээд хэмжээг өөрөө харуулна:

    Pin A

    Хөтөлбөрийн бүрэн эхийг энд оруулав.

    Alg SearchMax start celtab A int imax, i nc for i 1-ээс 5 хүртэлх оролт A[i] kts imax:= 1 nts for i 2-5 хүртэл A[i] > A дараа нь imax:= i бүх kts гаралт A kts

    Нийлбэрийг олох болон дундаж утгахүснэгтийн бүх элементүүд

    Эхлээд та үнийн дүнгийн анхны утгыг тохируулах хэрэгтэй:

    Дараа нь гогцоонд бид элементүүдийн утгыг нийлбэрт нэмнэ.

    1-ээс 5 с хүртэлх i-ийн nc:= s + A[i] cc

    Хүснэгтийн бүх элементүүдийн дундаж утгыг нийлбэрийг элементүүдийн тоонд харьцуулсан харьцаагаар олно.

    Sr:= s/5

    Хөтөлбөрийн бүрэн эхийг энд оруулав.

    Alg SumAvg эхлэл celtab A бүхэлд нь i, s things sr | дундаж тоо нь 1-ээс 5 хүртэлх оролтод i-д бодит nc байх болно A[i] kc s:= 0 nc i-д 1-ээс 5 с:= s + A[i] kc sr:= s/5 гаралт “Нийт бүх элементүүд: ",s,ns гаралт "Бүх элементийн дундаж утга:",sr kts

    Асуудлыг шийдвэрлэх жишээ

    Жишээ 1.

    Дат хүснэгтэд ардын дууны 10 уран бүтээлчид өгсөн саналын тоо (Дат - эхний дуучдад өгсөн саналын тоо; Дат - хоёрдугаарт гэх мэт) -ийг харуулав. Дараах программын үр дүнд ямар дугаар хэвлэгдэхийг тодорхойл.

    Alg start celtab Dat int k, m Dat := 16 Dat := 20 Dat := 20 Dat := 41 Dat := 14 Dat := 21 Dat := 28 Dat := 12 Dat := 15 Dat := 35 м: = 0 nc 1-ээс 10 хүртэлх k-д хэрэв Dat[k]>m бол m:= Dat[k] бүх kc гаралт m төгсгөл

    Хөтөлбөрийн эхэнд жүжигчдэд өгсөн саналын тоог хүснэгтийн нүдэнд тэмдэглэнэ.

    Дараах програмын хэсгийг авч үзье.

    1-ээс 10 хүртэлх k-д M:= 0 nc, хэрэв Dat[k]>m бол m:= Dat[k] бүгд kc

    Гогцоонд элемент бүрийг m хувьсагчтай харьцуулж байгааг харж болно, энэ нь давталтаас өмнө тэгтэй тэнцүү байсан. Хэрэв шалгаж байгаа одоогийн элемент нь m-ээс их байвал одоогийн элементийн утгыг m хувьсагч руу бичнэ. Гогцоо гүйцэтгэсний дараа m хувьсагч хамгийн том элементийн утгыг хадгална.

    Өөрөөр хэлбэл, програм нь хүснэгтийн бүх нүднүүдийн дундаас хамгийн их утгыг олдог. Энэ элементийн утга нь Dat = 41 байна

    Хариулт: 41

    Жишээ 2:

    Alg start celtab Dat int k, m Dat := 7; Dat := 9 Dat := 10;Dat := 5 Dat := 6; Dat := 7 Dat := 9; Dat := 8 Dat := 6; Dat[k] бол 1-ээс 10 хүртэлх k-ийн хувьд Dat:= 9 м:= 0 nc.< 7 то m:= m + 1 все кц вывод m кон

    Хөтөлбөрийн эхэнд дууссан даалгаврын тоог агуулсан хүснэгтийг бөглөнө.
    Үүний дараа хувьсагчийг танилцуулна мтэг утгатай.

    Гогцоонд руу 1-ээс 10 хүртэл шалгана: хэрэв оюутны гүйцэтгэсэн даалгаврын тоог дугаарласан бол руу 7-оос бага бол ийм нэг сурагч нэмэгдэнэ (m:= m +1).

    Өөрөөр хэлбэл, 7-оос бага даалгавар гүйцэтгэсэн оюутны тоог уг хөтөлбөрт тооцдог.

    Бидэнд ийм гурван оюутан бий: Дат, Дат, Дат

    Хариулт: 3

    Жишээ 3:

    Dat хүснэгт нь сурагчдын гүйцэтгэсэн даалгаврын тоон мэдээллийг хадгалдаг (Дат даалгаврыг эхний сурагч, Датыг хоёрдугаарт гүйцэтгэсэн гэх мэт). Дараах программын үр дүнд ямар дугаар хэвлэгдэхийг тодорхойл.

    Alg start celtab Dat int k, m Dat := 20; Dat := 25 Dat := 19; Dat := 25 Dat := 26; Dat := 22 Dat := 24; Dat := 28 Dat := 26; Dat := 21 Dat := 27 м:= 0 nc k-д 1-ээс 11 хүртэл бол k > 9 бол m:= m + Dat[k] бүх kc гаралт m төгсгөл

    Элементийн дугаарын гогцоо дотор руу 1-ээс 11 хүртэл (бүх оюутнуудад) шалгана: хэрэв элементийн тоо (оюутан) 9-өөс их бол хувьсагч руу мГүйцэтгэсэн оюутны даалгаврын тоог нэмнэ.

    Зөвхөн 10 дугаартай (Дат) оюутан, 11 дугаартай оюутан (Дат) болзол давж байгааг харж болно. Үүний дагуу хувьсагч мЭдгээр оюутнуудын гүйцэтгэсэн даалгаврын нийлбэрийг хадгална, 0+21+27=48

    Хариулт: 48

    Жишээ 4:

    Dat хүснэгт нь сурагчдын гүйцэтгэсэн даалгаврын тоон мэдээллийг хадгалдаг (Дат даалгаврыг эхний сурагч, Датыг хоёрдугаарт гүйцэтгэсэн гэх мэт). Дараах программын үр дүнд ямар дугаар хэвлэгдэхийг тодорхойл.

    Alg start celtab Dat int k, m, n Dat := 7; Dat := 9 Dat := 10; Dat := 5 Dat := 6; Dat := 7 Dat := 5; Dat := 8 Dat := 6; Огноо := 9 м:= 10; Хэрэв Dat[k] бол 1-ээс 10 хүртэлх k хувьд n:= 0 nc<= m то m:= Dat[k] n:= k все кц вывод n кон

    Элементийн утга 10-аас ихгүй байна.

    Шугам 1-ээс 10 хүртэлх k-ийн nts нь массивын бүх элементүүд давтагдсан гэсэн үг юм (бидэнд 10 нь байна).

    Нөхцөл байдал Хэрэв Дат[к]<= m одоогийн элементийн утга нь түүнээс бага буюу тэнцүү байх үед үнэн байх болно м. Хэрэв энэ нөхцөл үнэн бол хувьсагч руу орно модоогийн элементийн утга бичигдсэн ба хувьсагч n- түүний дугаар.

    Асуудлын гол зорилго нь олох явдал юм тоохамгийн бага элемент! (програм нь төгсгөлд утгыг хэвлэдэг n).

    Нөхцөл байдал хатуу биш учраас Дат[к]<= m, то будет найден хамгийн сүүлийн үеийнхамгийн бага элемент ба түүний тоо (Dat).

    Хэрэв нөхцөл хатуу байсан бол ижил минимумуудын эхнийх нь (Dat)