Diberikan dua buah kotak dengan bentuk teratur. Masalah kombinatorik. Contoh solusi. Sifat-sifat prisma segi empat beraturan

Sampai saat ini, mobil dengan transmisi manual yang disingkat transmisi manual merupakan mayoritas mutlak di antara kendaraan lain dengan berbagai tipe.

Selain itu, gearbox manual (manual) tetap menjadi perangkat yang cukup umum saat ini untuk mengubah dan mentransmisikan torsi mesin. Selanjutnya, kita akan berbicara tentang bagaimana “mekanik” dibangun dan bekerja, seperti apa desain gearbox jenis ini, serta apa kelebihan dan kekurangan yang dimiliki solusi ini.

Baca di artikel ini

Diagram dan fitur transmisi manual

Mari kita mulai dengan fakta bahwa girboks jenis ini disebut mekanis karena unit semacam itu melibatkan perpindahan gigi secara manual. Dengan kata lain, pada mobil bertransmisi manual, pengemudi sendiri yang memindahkan persneling.

Mari kita lanjutkan. Transmisi manualnya bertahap, yaitu torsi berubah secara bertahap. Banyak pecinta mobil yang mengetahui bahwa gearbox sebenarnya memiliki roda gigi dan poros, namun tidak semua orang memahami cara kerja unit tersebut.

Jadi, panggung (alias roda gigi) adalah sepasang roda gigi (roda gigi penggerak dan roda gigi yang digerakkan) yang saling berinteraksi. Setiap tahap tersebut memastikan rotasi pada kecepatan sudut tertentu, yaitu memiliki rasio roda gigi sendiri.

Rasio roda gigi adalah perbandingan antara jumlah gigi pada roda gigi yang digerakkan dengan jumlah gigi pada roda gigi penggerak. Dalam hal ini, tahapan gearbox yang berbeda menerima rasio roda gigi yang berbeda. Tahap terendah (low gear) memiliki rasio roda gigi tertinggi, dan tahap tertinggi (high gear) memiliki rasio roda gigi terkecil.

Menjadi jelas bahwa jumlah langkah sama dengan jumlah roda gigi pada girboks tertentu (girboks empat kecepatan, lima kecepatan, dll.) Perhatikan bahwa sebagian besar mobil saat ini dilengkapi dengan girboks lima kecepatan, manual transmisi dengan 6 langkah atau lebih kurang umum, dan cukup umum. Sebelumnya, transmisi manual 4 kecepatan secara bertahap memudar ke latar belakang.

Perangkat transmisi mekanis

Jadi, meskipun mungkin ada banyak desain kotak seperti itu dengan ciri-ciri tertentu, pada tahap awal dapat dibedakan dua tipe utama:

  • gearbox tiga poros;
  • kotak poros ganda;

Mobil berpenggerak roda belakang biasanya dilengkapi dengan transmisi manual tiga poros, sedangkan girboks dua poros dipasang pada mobil penumpang berpenggerak roda depan. Dalam hal ini, desain transmisi manual tipe pertama dan kedua mungkin sangat berbeda.

Mari kita mulai dengan transmisi manual tiga poros. Kotak ini terdiri dari:

  • poros penggerak, yang juga disebut poros primer;
  • poros perantara gearbox;
  • poros yang digerakkan (sekunder);

Roda gigi dengan sinkronisasi dipasang pada poros. Pada perangkat girboks juga disertakan mekanisme perpindahan gigi. Komponen-komponen ini terletak di dalam rumah girboks, yang disebut juga dengan rumah girboks.

Tugas poros penggerak adalah membuat sambungan dengan kopling. Poros penggerak memiliki spline untuk cakram yang digerakkan oleh kopling. Sedangkan untuk torsi, momen tertentu dari poros penggerak disalurkan melalui roda gigi, yang terhubung erat dengannya.

Mengenai pengoperasian poros perantara, poros ini terletak sejajar dengan poros input gearbox, dan sekelompok roda gigi dipasang di atasnya, yang berada dalam jaring kaku. Pada gilirannya, poros penggerak dipasang pada sumbu yang sama dengan poros penggerak.

Pemasangan ini dilakukan dengan menggunakan bantalan ujung pada poros penggerak. Bantalan ini termasuk poros yang digerakkan. Kelompok roda gigi (gear block) pada poros yang digerakkan tidak mempunyai ikatan yang kaku dengan poros itu sendiri sehingga berputar bebas pada poros tersebut. Dalam hal ini, kelompok roda gigi dari poros perantara, poros penggerak, dan roda gigi poros penggerak berada dalam kesatuan yang konstan.

Sinkronisasi (synchronizer clutches) dipasang di antara roda gigi poros yang digerakkan. Tugas mereka adalah menyelaraskan kecepatan sudut roda gigi poros yang digerakkan dengan kecepatan sudut poros itu sendiri melalui gesekan.

Sinkronisasi terikat secara kaku dengan poros yang digerakkan, dan juga memiliki kemampuan untuk bergerak sepanjang poros dalam arah memanjang karena adanya sambungan spline. Gearbox modern memiliki kopling sinkronisasi di semua gigi.

Jika kita memperhatikan mekanisme perpindahan gigi pada girboks tiga poros, maka mekanisme ini sering dipasang pada rumah unit. Desainnya mencakup tuas kontrol, penggeser, dan garpu.

Badan kotak (crankcase) terbuat dari paduan aluminium atau magnesium dan diperlukan untuk memasang poros dengan roda gigi dan mekanisme, serta sejumlah bagian lainnya. Rumah girboks juga berisi oli transmisi (oli girboks).

  • Untuk memahami cara kerja gearbox mekanis (manual) tipe tiga poros, mari kita lihat secara umum prinsip pengoperasiannya. Saat tuas perpindahan gigi dalam posisi netral, tidak ada torsi yang disalurkan dari mesin ke roda penggerak kendaraan.

Setelah pengemudi menggerakkan tuas, garpu menggerakkan kopling sinkronisasi gigi tertentu. Sinkronisasi kemudian akan menyamakan kecepatan sudut roda gigi yang diinginkan dan poros yang digerakkan. Roda gigi cincin kopling kemudian akan terhubung dengan cincin roda gigi serupa, mengunci roda gigi pada poros yang digerakkan.

Mari kita tambahkan juga bahwa gigi mundur kendaraan disediakan oleh gigi mundur dari girboks. Dalam hal ini, gigi idler mundur, yang dipasang pada poros terpisah, memungkinkan Anda mengubah arah putaran.

Gearbox manual poros ganda: desain dan prinsip operasi

Setelah mengetahui apa itu girboks dengan tiga poros, mari beralih ke girboks dua poros. Gearbox jenis ini memiliki dua poros: primer dan sekunder. Poros primer berfungsi sebagai penggerak, dan poros sekunder berfungsi sebagai penggerak. Roda gigi dan sinkronisasi dipasang pada poros. Juga di rumah girboks terdapat gigi utama dan diferensial.

Poros penggerak bertanggung jawab untuk menghubungkan ke kopling, dan ada juga blok roda gigi pada poros yang terhubung secara kaku dengan poros. Poros yang digerakkan terletak sejajar dengan poros penggerak, sedangkan roda-roda dari poros yang digerakkan selalu menyatu dengan roda-roda poros penggerak, dan juga berputar bebas pada poros itu sendiri.

Selain itu, roda gigi penggerak dari roda gigi utama dipasang secara kaku pada poros yang digerakkan, dan kopling sinkronisasi terletak di antara roda gigi poros yang digerakkan itu sendiri. Mari kita tambahkan bahwa untuk memperkecil ukuran girboks, serta menambah jumlah gir, di girboks modern, alih-alih satu poros yang digerakkan, sering kali dapat dipasang 2 atau bahkan 3 poros.

Roda gigi utama dipasang secara kaku pada setiap poros tersebut, dan roda gigi tersebut dihubungkan secara kaku dengan roda gigi yang digerakkan. Ternyata desainnya sebenarnya menerapkan 3 roda gigi utama.

Roda gigi utama itu sendiri, serta diferensial pada kotak roda gigi, mentransmisikan torsi dari poros sekunder ke roda penggerak. Pada saat yang sama, diferensial juga dapat memberikan putaran roda ketika roda penggerak berputar pada kecepatan sudut yang berbeda.

Sedangkan untuk mekanisme perpindahan gigi, pada girboks poros ganda letaknya terpisah, yakni di luar housing. Kotak tersebut dihubungkan ke mekanisme switching dengan kabel atau batang khusus. Koneksi yang paling umum adalah menggunakan kabel.

Mekanisme perpindahan kotak 2 poros ini sendiri memiliki tuas yang dihubungkan dengan kabel ke tuas pilihan dan tuas pemindah gigi. Tuas ini terhubung ke batang pemindah gigi pusat, yang juga memiliki garpu.

  • Jika kita berbicara tentang prinsip pengoperasian girboks manual dua poros, maka mirip dengan prinsip girboks tiga poros. Perbedaannya terletak pada cara kerja mekanisme perpindahan gigi. Singkatnya, tuas dapat melakukan gerakan memanjang dan melintang relatif terhadap sumbu mobil. Selama pergerakan lateral, pemilihan gigi terjadi karena gaya diterapkan pada kabel pemilihan gigi, yang mempengaruhi tuas pemilihan gigi.

Selanjutnya, tuas bergerak secara longitudinal, dan gaya dialirkan ke kabel pemindah gigi. Tuas yang sesuai menggerakkan batang dengan garpu secara horizontal; garpu pada batang menggeser sinkronisasi, yang menyebabkan pemblokiran roda gigi poros yang digerakkan.

Terakhir, kami mencatat bahwa berbagai jenis transmisi manual juga memiliki perangkat pengunci tambahan yang mencegah dua gigi diaktifkan secara bersamaan atau gigi dimatikan secara tidak terduga.

Baca juga

Meremas kopling sebelum menghidupkan mesin: kapan Anda perlu menekan kopling dan dalam hal apa tidak disarankan untuk melakukannya. Kiat dan rekomendasi yang berguna.

  • Penyebab susah perpindahan gigi saat mesin hidup. Oli transmisi dan level di gearbox, keausan sinkronisasi dan roda gigi gearbox, kopling.


    • Tulis program yang membandingkan dua bilangan bulat yang dimasukkan dari keyboard. Program harus menunjukkan angka mana yang lebih besar, atau, jika angkanya sama, menampilkan pesan terkait.

      Masukkan dua bilangan bulat dan tekan Enter.
      -> 34 67
      34 kurang dari 67

      dengan Ada.Text_IO; gunakan Ada.Text_IO; dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; prosedur utama adalah A, B: Integer; mulai Put_Line("Masukkan dua bilangan bulat pada satu baris dan tekan Enter."); Taruh("-> "); Mendapatkan); Dapatkan(B); --Masukkan 2 angka jika A > B lalu Put(Item =>; A, Lebar =>; 1); Taruh("lebih"); Masukan(Item => B, Lebar => 1); Elsif A< B then Put(Item =>A, Lebar => 1); Taruh("kurang dari"); Masukan(Item => B, Lebar => 1); else Put("Angka yang dimasukkan adalah sama!"); berakhir jika; akhir utama;

      Tiga bilangan bulat diberikan. Temukan yang terbesar (program harus mencetak tepat satu bilangan bulat). Dalam soal ini, bilangan terbesar adalah bilangan yang tidak lebih kecil dari bilangan lainnya.


    • -> 1 2 3
      Maksimal tiga angka: 3
    • dengan Ada.Text_IO ; gunakan Ada.Text_IO ; dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; prosedur utama adalah A, B, C: Integer; maks: Bilangan bulat; mulai Put_Line( "Ketik tiga bilangan bulat dalam satu baris dan tekan Enter.") ; Taruh("-> " ) ; Mendapatkan); Dapatkan(B) ; Dapatkan(C) ; --Masukkan tiga bilangan bulat maks:= A; --secara default kami berasumsi bahwa angka A adalah maksimum jika B > maks maka --Jika B lebih besar dari maksimum, maka maks:=B; --angka maksimum adalah B berakhir jika ; jika C > maks maka--Jika C lebih besar dari maksimum, maka maks:= C;--angka maksimum adalah C berakhir jika ; Meletakkan(

      "Maksimal tiga angka:"

      & Integer"gambar(maks) ) ; akhir utama;

    • dengan Ada.Text_IO; gunakan Ada.Text_IO; dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; prosedur utama adalah A, B, C: Integer; maks: Bilangan bulat; mulai Put_Line("Masukkan tiga bilangan bulat pada satu baris dan tekan Enter."); Taruh("-> "); Mendapatkan); Dapatkan(B); Dapatkan (C); --Masukkan tiga bilangan bulat maks:= A; --secara default kita asumsikan angka A adalah maksimum jika B > max maka --Jika B lebih besar dari maksimum, maka max:= B; --angka maksimum adalah ujung B jika; jika C > max maka --Jika C lebih besar dari maksimum, maka max:= C; --angka maksimum adalah ujung C jika; Put("Maksimal tiga angka :" & Integer"image(maks)); end main;
      -> 3 4 5
      Diberikan tiga bilangan asli A, B, C. Tentukan apakah ada segitiga dengan sisi-sisi tersebut. Jika segitiga tersebut ada, cetaklah pesan bahwa segitiga dengan sisi-sisi tersebut ada, jika tidak, cetaklah bahwa segitiga tersebut tidak ada.
    • Ketik tiga sisi segitiga dan tekan Enter.

    • Ada segitiga dengan sisi 3, 4, 5. Segitiga adalah tiga titik yang tidak terletak pada satu garis. Sebuah segitiga hanya ada jika jumlah dua sisinya lebih besar dari sisi ketiganya. dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; --Untuk membaca bilangan bulat dengan Ada.Text_IO ; gunakan Ada.Text_IO ; --Untuk mengeluarkan string prosedur utama adalah a, b, c: Integer; mulai Put_Line( "Ketik tiga sisi segitiga dan tekan Enter.Enter.") ; Taruh("-> " ) ; Mendapatkan) ; Dapatkan(b) ; Dapatkan (c); --Baca sisi-sisi segitiga jika a + b > c lalu b + c > a lalu c + a > b maka --Uji semua kondisi dalam satu baris Meletakkan( --Uji semua kondisi dalam satu baris& Integer"gambar(a) & "," & Integer"gambar(b) & "," & Integer"gambar(c) & " tidak ada" ; berakhir jika ; akhir utama;

      dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; --Untuk membaca bilangan bulat dengan Ada.Text_IO; gunakan Ada.Text_IO; --Untuk menampilkan prosedur string yang utama adalah a, b, c: Integer; mulai Put_Line("Masukkan ketiga sisi segitiga dan tekan Enter.Enter."); Taruh("-> "); Mendapatkan); Dapatkan(b); Dapatkan(c); --Baca sisi-sisi segitiga jika a + b > c lalu b + c > a lalu c + a > b lalu --Periksa semua kondisi dalam satu baris Put("Segitiga dengan sisi" & Integer"image(a ) & " ," & Integer"gambar(b) & "," & Integer"gambar(c) & " ada"); else Put("Segitiga dengan sisi" & Integer"gambar(a) & "," & Integer "gambar( b) & "," & Bilangan Bulat"gambar(c) & " tidak ada"); berakhir jika; akhir utama;

      Tiga bilangan bulat diberikan. Tentukan berapa banyak dari mereka yang cocok. Program harus mengeluarkan salah satu angka: 3 (jika semua angka sama), 2 (jika dua angka sama) atau 0 (jika semua angka berbeda).

    • Masukkan tiga bilangan bulat dan tekan Enter.
      -> 1 2 3
      0
    • dengan Ada.Text_IO ; gunakan Ada.Text_IO ; dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; prosedur Utama adalah A, B, C: Integer; mulai Put_Line( "Ketik tiga bilangan bulat dan tekan Enter.") ; Taruh("-> " ) ; Mendapatkan); Dapatkan(B) ; Dapatkan(C) ; jika A = B dan kemudian A = C maka --Jika ketiga nomor cocok Masukan(Item => 3 , Lebar => 1 ) ; elsif A = B atau A = C atau B = C maka --Jika dua angka cocok Masukan(Item => 2 , Lebar => 1 ) ; kalau tidak --Jika tidak ada nomor yang identik Masukan(Item => 0 , Lebar => 1 ) ; berakhir jika ; akhir Utama;

      dengan Ada.Text_IO; gunakan Ada.Text_IO; dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; prosedur Utama adalah A, B, C: Integer; mulai Put_Line("Masukkan tiga bilangan bulat dan tekan Enter."); Taruh("-> "); Mendapatkan); Dapatkan(B); Dapatkan (C); jika A = B lalu A = C maka --Jika ketiga angka tersebut cocok Put(Item => 3, Lebar => 1); elsif A = B atau A = C atau B = C maka --Jika dua angka cocok Put(Item => 2, Lebar => 1); else --Jika tidak ada angka yang sama Put(Item => 0, Lebar => 1); berakhir jika; akhir Utama;

      Benteng catur bergerak secara horizontal atau vertikal. Diberikan dua kotak yang berbeda pada sebuah papan catur, tentukan apakah benteng dapat berpindah dari kotak pertama ke kotak kedua dalam satu gerakan. Program menerima masukan empat angka masing-masing dari 1 hingga 8, menentukan nomor kolom dan nomor baris terlebih dahulu untuk sel pertama, kemudian untuk sel kedua. Program harus menampilkan "YA" jika pergerakan benteng dari sel pertama dapat mencapai sel kedua, atau "TIDAK" jika tidak.


    • 4 4
      5 5
      TIDAK
    • ) ; Meletakkan() ;

      Mendapatkan); Dapatkan(B) ; Meletakkan() ;

      Dapatkan(C) ; Dapatkan(D) ; jika A = C atau B = D maka Put("YA" ) ; lain Taruh("TIDAK" ) ; berakhir jika ; akhir Utama; dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; dengan Ada.Text_IO; gunakan Ada.Text_IO; procedure Main adalah subtipe checkBoard adalah rentang Integer 1..8; A, B, C, D: papan centang; mulai Put_Line("Masukkan nomor kolom dan baris untuk kedua sel:"); Put("Masukkan nomor kolom dan baris untuk sel pertama dan klik: "); Mendapatkan); Dapatkan(B); Put("Masukkan nomor kolom dan baris untuk sel kedua dan klik: "); Dapatkan (C); Dapatkan(D); jika A = C atau B = D maka Put("YA"); else Taruh("TIDAK"); berakhir jika; akhir Utama;

    • Raja catur bergerak secara horizontal, vertikal dan diagonal, tetapi hanya 1 kotak. Diberikan dua kotak yang berbeda pada sebuah papan catur, tentukan apakah raja dapat berpindah dari kotak pertama ke kotak kedua dalam satu gerakan.
      Program menerima masukan empat angka masing-masing dari 1 hingga 8, menentukan nomor kolom dan nomor baris terlebih dahulu untuk sel pertama, kemudian untuk sel kedua. Program harus menampilkan "YA" jika perpindahan raja dari sel pertama dapat mencapai sel kedua, atau "TIDAK" jika tidak. 4 4
      Masukkan nomor kolom dan baris untuk kedua sel: 5 5
      Masukkan nomor kolom dan baris untuk sel pertama dan tekan:
    • Masukkan nomor kolom dan baris untuk sel kedua dan klik: YA "Masukkan nomor kolom dan baris untuk kedua sel:") ; Meletakkan( "Masukkan nomor kolom dan baris untuk sel pertama dan klik:") ; Mendapatkan); Dapatkan(B) ; Meletakkan(<= 1 and then abs (B - D) <= 1 then "Masukkan nomor kolom dan baris untuk sel kedua dan klik:" ) ; Dapatkan(C) ; Dapatkan(D) ; jika perut (A - C)-- perintah abs() mengembalikan absolut

      --nilai (modulus) dari nomor tersebut<= 1 and then abs(B - D) <= 1 then -- команда abs() возвращает абсолютное --значение (модуль) числа Put("ДА"); else Put("НЕТ"); end if; end main;

      Uskup catur bergerak secara diagonal. Diberikan dua kotak berbeda pada papan catur, tentukan apakah uskup dapat berpindah dari kotak pertama ke kotak kedua dalam satu gerakan. Program menerima masukan empat angka masing-masing dari 1 hingga 8, menentukan nomor kolom dan nomor baris terlebih dahulu untuk sel pertama, kemudian untuk sel kedua. Program harus mengeluarkan "YA" jika perpindahan uskup dari sel pertama bisa sampai ke sel kedua, atau "Tidak" sebaliknya.

    • Raja catur bergerak secara horizontal, vertikal dan diagonal, tetapi hanya 1 kotak. Diberikan dua kotak yang berbeda pada sebuah papan catur, tentukan apakah raja dapat berpindah dari kotak pertama ke kotak kedua dalam satu gerakan.
      Program menerima masukan empat angka masing-masing dari 1 hingga 8, menentukan nomor kolom dan nomor baris terlebih dahulu untuk sel pertama, kemudian untuk sel kedua. Program harus menampilkan "YA" jika perpindahan raja dari sel pertama dapat mencapai sel kedua, atau "TIDAK" jika tidak. 4 4
      Masukkan nomor kolom dan baris untuk kedua sel: 5 5
      Masukkan nomor kolom dan baris untuk sel pertama dan tekan:
    • dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; dengan Ada.Text_IO ; gunakan Ada.Text_IO ; procedure main adalah subtipe checkBoard adalah Integer range 1 ..8 ; A, B, C, D: papan centang; mulai Put_Line( Masukkan nomor kolom dan baris untuk sel kedua dan klik: YA "Masukkan nomor kolom dan baris untuk kedua sel:") ; Meletakkan( "Masukkan nomor kolom dan baris untuk sel pertama dan klik:") ; Dapatkan(C) ; Dapatkan(D) ; jika abs (a - c) = abs (b - d) maka Put("YA" ) ; lain Taruh("TIDAK" ) ; berakhir jika ; akhir utama;

      dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; dengan Ada.Text_IO; gunakan Ada.Text_IO; prosedur utama adalah subtipe checkBoard adalah rentang Integer 1..8; A, B, C, D: papan centang; mulai Put_Line("Masukkan nomor kolom dan baris untuk kedua sel:"); Put("Masukkan nomor kolom dan baris untuk sel pertama dan klik: "); Mendapatkan); Dapatkan(B); Put("Masukkan nomor kolom dan baris untuk sel kedua dan klik: "); Dapatkan (C); Dapatkan(D); jika abs(a - c) = abs(b - d) maka Put("YA"); else Taruh("TIDAK"); berakhir jika; akhir utama;

      Ratu catur bergerak secara diagonal, horizontal, atau vertikal. Diberikan dua kotak berbeda pada papan catur, tentukan apakah ratu dapat berpindah dari kotak pertama ke kotak kedua dalam satu gerakan.

      Masukkan format:
      Program menerima masukan empat angka masing-masing dari 1 hingga 8, menentukan nomor kolom dan nomor baris terlebih dahulu untuk sel pertama, kemudian untuk sel kedua.
      Format output:
      Program harus menampilkan YES jika memungkinkan untuk berpindah dari sel pertama dengan memindahkan ratu ke sel kedua, atau TIDAK sebaliknya.

      Contoh 1:
      Raja catur bergerak secara horizontal, vertikal dan diagonal, tetapi hanya 1 kotak. Diberikan dua kotak yang berbeda pada sebuah papan catur, tentukan apakah raja dapat berpindah dari kotak pertama ke kotak kedua dalam satu gerakan.
      Program menerima masukan empat angka masing-masing dari 1 hingga 8, menentukan nomor kolom dan nomor baris terlebih dahulu untuk sel pertama, kemudian untuk sel kedua. Program harus menampilkan "YA" jika perpindahan raja dari sel pertama dapat mencapai sel kedua, atau "TIDAK" jika tidak. 1 1
      Masukkan nomor kolom dan baris untuk kedua sel: 2 2
      Masukkan nomor kolom dan baris untuk sel pertama dan tekan:

      Contoh 2:
      Raja catur bergerak secara horizontal, vertikal dan diagonal, tetapi hanya 1 kotak. Diberikan dua kotak yang berbeda pada sebuah papan catur, tentukan apakah raja dapat berpindah dari kotak pertama ke kotak kedua dalam satu gerakan.
      Program menerima masukan empat angka masing-masing dari 1 hingga 8, menentukan nomor kolom dan nomor baris terlebih dahulu untuk sel pertama, kemudian untuk sel kedua. Program harus menampilkan "YA" jika perpindahan raja dari sel pertama dapat mencapai sel kedua, atau "TIDAK" jika tidak. 1 1
      Masukkan nomor kolom dan baris untuk kedua sel: 2 3
      TIDAK

    • dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; dengan Ada.Text_IO ; gunakan Ada.Text_IO ; procedure Main adalah subtipe checkBoard adalah Integer range 1 ..8 ; A, B, C, D: papan centang; mulai Put_Line( Masukkan nomor kolom dan baris untuk sel kedua dan klik: YA "Masukkan nomor kolom dan baris untuk kedua sel:") ; Meletakkan( "Masukkan nomor kolom dan baris untuk sel pertama dan klik:") ; Dapatkan (C); Dapatkan(D); jika abs (A - C) = abs (B - D) atau A = D atau B = C maka Put("YES" ) ; lain Taruh("TIDAK" ) ; berakhir jika ; akhir Utama;

      dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; dengan Ada.Text_IO; gunakan Ada.Text_IO; procedure Main adalah subtipe checkBoard adalah rentang Integer 1..8; A, B, C, D: papan centang; mulai Put_Line("Masukkan nomor kolom dan baris untuk kedua sel:"); Put("Masukkan nomor kolom dan baris untuk sel pertama dan klik: "); Mendapatkan); Dapatkan(B); Put("Masukkan nomor kolom dan baris untuk sel kedua dan klik: "); Dapatkan (C); Dapatkan(D); jika abs(A - C) = abs(B - D) atau A = D atau B = C maka Put("YES"); else Taruh("TIDAK"); berakhir jika; akhir Utama;

      Seorang ksatria catur bergerak dengan huruf "G" - dua kotak secara vertikal ke segala arah dan satu kotak secara horizontal, atau sebaliknya. Diberikan dua kotak berbeda pada papan catur, tentukan apakah ksatria dapat berpindah dari kotak pertama ke kotak kedua dalam satu gerakan. Program menerima masukan empat angka masing-masing dari 1 hingga 8, menentukan nomor kolom dan nomor baris terlebih dahulu untuk sel pertama, kemudian untuk sel kedua. Program harus menghasilkan output YA jika pergerakan ksatria dari sel pertama dapat mencapai sel kedua, atau TIDAK jika sebaliknya.

      Contoh 1:
      Raja catur bergerak secara horizontal, vertikal dan diagonal, tetapi hanya 1 kotak. Diberikan dua kotak yang berbeda pada sebuah papan catur, tentukan apakah raja dapat berpindah dari kotak pertama ke kotak kedua dalam satu gerakan.
      Program menerima masukan empat angka masing-masing dari 1 hingga 8, menentukan nomor kolom dan nomor baris terlebih dahulu untuk sel pertama, kemudian untuk sel kedua. Program harus menampilkan "YA" jika perpindahan raja dari sel pertama dapat mencapai sel kedua, atau "TIDAK" jika tidak. 1 1
      Masukkan nomor kolom dan baris untuk kedua sel: 1 4
      TIDAK

      Contoh 2:
      Raja catur bergerak secara horizontal, vertikal dan diagonal, tetapi hanya 1 kotak. Diberikan dua kotak yang berbeda pada sebuah papan catur, tentukan apakah raja dapat berpindah dari kotak pertama ke kotak kedua dalam satu gerakan.
      Program menerima masukan empat angka masing-masing dari 1 hingga 8, menentukan nomor kolom dan nomor baris terlebih dahulu untuk sel pertama, kemudian untuk sel kedua. Program harus menampilkan "YA" jika perpindahan raja dari sel pertama dapat mencapai sel kedua, atau "TIDAK" jika tidak. 1 1
      Masukkan nomor kolom dan baris untuk kedua sel: 8 8
      TIDAK

    • dengan Ada.Text_IO ; gunakan Ada.Text_IO ; dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; procedure main adalah subtipe checkBoard adalah Integer range 1 ..8 ; A, B, C, D: Bilangan Bulat; mulai Put_Line( Masukkan nomor kolom dan baris untuk sel kedua dan klik: YA "Masukkan nomor kolom dan baris untuk kedua sel:") ; Meletakkan( "Masukkan nomor kolom dan baris untuk sel pertama dan klik:") ; Dapatkan(C) ; Dapatkan(D) ; jika abs (A - C) = 2 lalu abs (B - D) = 1 maka Put("YES" ) ; elsif abs (A - C) = 1 lalu abs (B - D) = 2 lalu Put("YES" ) ; lain Taruh("TIDAK" ) ; berakhir jika ; akhir utama;

      dengan Ada.Text_IO; gunakan Ada.Text_IO; dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; prosedur utama adalah subtipe checkBoard adalah rentang Integer 1..8; A, B, C, D: Bilangan Bulat; mulai Put_Line("Masukkan nomor kolom dan baris untuk kedua sel:"); Put("Masukkan nomor kolom dan baris untuk sel pertama dan klik: "); Mendapatkan); Dapatkan(B); Put("Masukkan nomor kolom dan baris untuk sel kedua dan klik: "); Dapatkan (C); Dapatkan(D); jika abs(A - C) = 2 lalu abs(B - D) = 1 maka Put("YES"); elsif abs(A - C) = 1 lalu abs(B - D) = 2 lalu Put("YES"); else Taruh("TIDAK"); berakhir jika; akhir utama;

      Cokelatnya berbentuk persegi panjang yang dibagi menjadi irisan N×M. Cokelat tersebut dapat dipecah satu garis lurus menjadi dua bagian. Tentukan apakah mungkin untuk mematahkan irisan K dari sebatang coklat dengan cara ini. Program menerima tiga angka sebagai masukan: N, M, K. Program harus mengeluarkan salah satu dari dua kata: “YA” atau “Tidak”.

      Contoh 1:
      4
      2
      6
      Masukkan nomor kolom dan baris untuk sel pertama dan tekan:

      Contoh 2:
      Jumlah irisan secara horizontal: 2
      Jumlah irisan secara vertikal: 10
      Berapa banyak irisan yang perlu dipisahkan: 7
      TIDAK

    • dengan Ada.Text_IO ; gunakan Ada.Text_IO ; dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; prosedur Utama adalah N, M, K: Integer; mulai Taruh( "Jumlah irisan secara horizontal:") ; Dapatkan(N) ; Meletakkan( "Jumlah irisan vertikal:") ; Dapatkan(M); Meletakkan( "Berapa banyak irisan yang perlu dipisahkan:") ; Dapatkan(K) ; jika K > M * N maka --Jika Anda diminta untuk memecah lebih banyak batang coklat daripada coklat itu sendiri Taruh("TIDAK" ); elsif K rem N = 0 lalu K >= N lalu --Putus secara horizontal Taruh("YA" ) ; elsif K rem M = 0 lalu K >= M lalu --Putus secara vertikal Taruh("YA" ) ; lain Taruh("TIDAK" ) ; berakhir jika ; akhir Utama;

      dengan Ada.Text_IO; gunakan Ada.Text_IO; dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; prosedur Utama adalah N, M, K: Integer; mulai Put("Jumlah irisan secara horizontal : "); Dapatkan(N); Put("Jumlah irisan vertikal : "); Dapatkan(M); Put("Berapa banyak irisan yang perlu dipisahkan : "); Dapatkan (K); jika K > M * N maka --Jika sebatang coklat diminta untuk patah lebih banyak dari pada batang coklat itu sendiri Put("NO"); elsif K rem N = 0 lalu K >= N lalu --Putus secara horizontal Put("YES"); elsif K rem M = 0 lalu K >= M lalu --Putus secara vertikal Put("YES"); else Taruh("TIDAK"); berakhir jika; akhir Utama;

      Yasha sedang berenang di kolam berukuran N×M meter dan merasa lelah. Pada saat ini, ia menemukan bahwa ia berada pada jarak X meter dari salah satu sisi yang panjang (tidak harus dari sisi yang terdekat) dan Y meter dari salah satu sisi yang pendek. Berapa jarak minimal yang harus Yasha berenang agar bisa keluar dari kolam ke samping? Program menerima input angka N, M, X, Y. Program harus menampilkan jumlah meter yang dibutuhkan Yasha untuk berenang ke samping.

    • Lebar kolam: 23
      Panjang kolam: 52
      Jarak dari Yasha ke sisi panjang: 8
      Jarak dari Yasha ke sisi pendek: 43
      Anda perlu berenang minimal untuk keluar dari kolam: 8
    • Ada kemungkinan bahwa untuk menyelesaikan masalah Anda perlu menukar 2 variabel. Algoritma ini terlihat seperti ini:

      a, b, tmp: Bilangan bulat; --Deklarasi variabel. Dua utama dan satu tambahan a:= 3; --Inisialisasi variabel a b:= 5; --Inisialisasi variabel b --Algoritma itu sendiri: tmp:= a; --Sekarang tmp = 3 dan a = 3 a:= b; --Sekarang a = 5 dan b = 5; b:=tmp; --Sekarang b = 3

    • dengan Ada.Text_IO ; gunakan Ada.Text_IO ; dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; prosedur Utama adalah N, M, X, Y: Integer; -- N - sisi pendek, M - sisi panjang: -- X - Jarak ke salah satu sisi panjang -- Y - Jarak ke salah satu sisi pendek Tmp: Bilangan Bulat; mulai Taruh( "Lebar kolam:") ; Dapatkan(N) ; Meletakkan( "Panjang kolam:") ; Dapatkan(M); Meletakkan( "Jarak dari Yasha ke sisi panjang:") ; Dapatkan(X); Meletakkan( "Jarak dari Yasha ke sisi pendek:") ; Dapatkan(Y); jika N > M maka --Jika sisi-sisinya tercampur saat masuk, maka tukarlah: Tmp:=M; --Simpan panjang M ke dalam variabel sementara M:= N; --Tetapkan variabel M nilai baru N:= Tmp; --Kembalikan panjang M dalam variabel N berakhir jika ; Tmp:=X;--Asumsikan jarak minimum adalah X< X then jika abs (N - X)--Jika jarak ke sisi panjang kedua kurang dari X, maka Tmp:= N - X;--jarak minimum sama dengan jarak ke sisi panjang kedua< Tmp then berakhir jika ; jika Y--Jika jarak ke sisi pendek kurang dari jarak yang ditemukan di atas --minimal, kalau begitu Tmp:= Y;< Tmp then --Jarak minimum adalah Y berakhir jika ; jika perut (M - Y)--angka maksimum adalah C --Jika kamu berenang mendekati sisi pendek kedua, maka Tmp:= perut (M - Y) ;

      --jarak minimum sama dengan jarak ke sisi pendek kedua< X then --Если до второго длинного бортика расстояние меньше X, то Tmp:= N - X; --минимальное расстояние равно расстоянию до второго длинного бортика end if; if Y < Tmp then --Если до короткого бортика расстояние меньше найденного выше --минимального, то Tmp:= Y; --Минимальное расстояние равно Y end if; if abs(M - Y) < Tmp then --Если до второго короткого бортика плыть ближе, то Tmp:= abs(M - Y); --минимальное расстояние равно расстоянию до второго короткого бортика end if; Put("Нужно проплыть минимум, чтобы выбраться из бассейна: "); Put(Item =>"Kamu harus berenang minimal untuk keluar dari kolam:"

      ) ; Masukan(Item => Tmp, Lebar => 1 ) ; akhir Utama;

      dengan Ada.Text_IO; gunakan Ada.Text_IO; dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; prosedur Utama adalah N, M, X, Y: Integer; -- N - sisi pendek, M - sisi panjang: -- X - Jarak ke salah satu sisi panjang -- Y - Jarak ke salah satu sisi pendek Tmp : Integer; mulai Put("Lebar kolam: "); Dapatkan(N); Put("Panjang Kolam : "); Dapatkan(M); Put("Jarak Yasha ke sisi panjang : "); Dapatkan(X); Put("Jarak dari Yasha ke sisi pendek: "); Dapatkan(Y); jika N > M maka --Jika sisi-sisinya tercampur saat masuk, maka tukarkan: Tmp:= M; --Simpan panjang M ke dalam variabel sementara M:= N; --Tetapkan variabel M nilai baru N:= Tmp; --Kembalikan panjang M pada variabel N berakhir jika; Tmp:=X; --Asumsikan jarak minimum adalah X jika abs(N - X)
      3602
      Tmp, Lebar => 1); akhir Utama;
      1:00:02

      Jam elektronik menunjukkan waktu dalam format h:mm:ss (dari 0:00:00 hingga 23:59:59), yaitu, pertama-tama jumlah jam dicatat, kemudian diperlukan dua digit jumlah menit, lalu diperlukan dua digit jumlah detik. Jumlah menit dan detik, jika perlu, diisi menjadi dua digit angka dengan nol. N detik telah berlalu sejak awal hari. Cetak apa yang akan ditampilkan jam. Inputnya diberi bilangan asli N, tidak melebihi 10 7 (10000000). Cetak jawaban dari soal tersebut.
      129700
      Contoh masukan 1:
      12:01:40

    • dengan Ada.Long_Integer_Text_IO ; gunakan Ada.Long_Integer_Text_IO ; dengan Ada.Text_IO ; gunakan Ada.Text_IO ; procedure Main adalah subtipe Sub_LI adalah Long_Integer range 1 ..10000000 ; N: Sub_LI; h, m, s: Bilangan Bulat Panjang; mulaiGet(N) ; jam:= T / 3600 ; --Kami mendapatkan arlojinya. Sisa pembagiannya dibuang N:= N - jam * 3600 ; --Dapatkan sisa detik (dikurangi jam) jika jam > 24 maka --Karena jam tidak dapat menunjukkan > 24, kami meletakkan semuanya dalam bentuk yang dapat dibaca jam:= jam rem 24 ; --Sisa pembagian dengan 24 akan menghasilkan jumlah jam yang tepat elsif h = 24 maka h:= 0 ; berakhir jika ; m:= T / 60 ;--Mendapatkan menit s:= N rem 60 ;--Mendapatkan detik Masukan(Item => h, Lebar => 1 ) ; Meletakkan(":" ) ;--Output jam dan ":"< 10 then jika m--Jika jumlah menit kurang dari 10, keluaran di depan 0 Masukan(Item => 0 , Lebar => 1 ) ; berakhir jika ; Masukan(Item => m, Lebar => 1 ) ; Meletakkan(":" ) ;< 10 then --Menit keluaran dan ":" jika s

      --Jika jumlah detik kurang dari 10, keluaran di depan 0< 10 then --Если количество минут меньше 10, выводим ведущий 0 Put(Item =>Masukan(Item => 0 , Lebar => 1 ) ; berakhir jika ;< 10 then --Если количество секунд меньше 10, выводим ведущий 0 Put(Item =>Masukan(Item => s, Lebar => 1 ) ; --Output detik berakhir Utama;

    • dengan Ada.Long_Integer_Text_IO; gunakan Ada.Long_Integer_Text_IO; dengan Ada.Text_IO; gunakan Ada.Text_IO; prosedur Utama adalah subtipe Sub_LI adalah rentang Long_Integer 1..10000000; N: Sub_LI; h, m, s: Bilangan Bulat Panjang; mulaiDapatkan(N); jam:= T / 3600; --Kami mendapatkan arlojinya. Sisa pembagiannya dibuang N:= N - h * 3600; --Dapatkan sisa detik (dikurangi jam) jika h > 24 maka --Karena jam tidak dapat menunjukkan > 24, kita letakkan semuanya dalam bentuk yang dapat dibaca h:= h rem 24; --Sisa pembagian dengan 24 akan menghasilkan jumlah jam yang tepat elsif h = 24 maka h:= 0; berakhir jika;
    • m:= T/60; --Dapatkan menit s:= N rem 60; --Dapatkan detiknya Put(Item => h, Lebar => 1); Meletakkan(":"); --Output jam dan ":" jika m
      1 2 1
      0, Lebar => 1); berakhir jika;
      1 1 2
    • Masukan(Item => m, Lebar => 1); Meletakkan(":"); --Menit keluaran dan ":" jika s 0, Lebar => 1); berakhir jika; Masukan(Item => s, Lebar => 1); --Output detik berakhir Utama;< min then min:= B; end if ; if C < min then min:= C; end if ; Tiga nomor diberikan. Susunlah dalam urutan menaik. Contoh masukan: Contoh keluaran: dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; dengan Ada.Text_IO ; gunakan Ada.Text_IO ; prosedur Utama adalah A, B, C: Integer; min, pertengahan, maks: Integer; mulaiGet(A) ; Dapatkan(B) ; Dapatkan(C) ;< max then mid:= B; end if ; if C >--Mencari nilai minimum< max then mid:= C; end if ; Put(Item =>menit:= A; jika B

      dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; dengan Ada.Text_IO; gunakan Ada.Text_IO; prosedur Utama adalah A, B, C: Integer; min, pertengahan, maks: Integer; mulaiDapatkan(A); Dapatkan(B); Dapatkan (C); --Mencari nilai minimum min:= A; jika B< min then min:= B; end if; if C < min then min:= C; end if; --Ищем максимальное значение max:= A; if B >maks lalu maks:= B; berakhir jika;< max then mid:= B; end if; if C >jika C > maks maka maks:= C; berakhir jika;< max then mid:= C; end if; Put(Item =>--Mencari nilai rata-rata pertengahan := A; jika B > min dan B

      menit dan C
      min, Lebar => 1); Meletakkan(" ");
      Put(Item => tengah, lebar => 1); Meletakkan(" ");
      Masukan(Item => maks, Lebar => 1); akhir Utama;

      Contoh 1:
      Kotaknya ada dua, yang pertama ukuran A1xB1xC1, yang kedua ukuran A2xB2xC2. Tentukan apakah salah satu kotak ini dapat ditempatkan di dalam kotak lainnya, asalkan kotak tersebut hanya dapat diputar 90 derajat pada bagian tepinya. Program menerima angka A1, B1, C1, A2, B2, C2 sebagai input. Program ini akan menampilkan salah satu baris berikut: 1 2 3
      - “Kotaknya sama”, jika kotaknya sama, 3 2 1
      - “Kotak pertama lebih kecil dari kotak kedua”, jika kotak pertama dapat ditempatkan di kotak kedua,

      Contoh 2:
      Kotaknya ada dua, yang pertama ukuran A1xB1xC1, yang kedua ukuran A2xB2xC2. Tentukan apakah salah satu kotak ini dapat ditempatkan di dalam kotak lainnya, asalkan kotak tersebut hanya dapat diputar 90 derajat pada bagian tepinya. Program menerima angka A1, B1, C1, A2, B2, C2 sebagai input. Program ini akan menampilkan salah satu baris berikut: 2 2 3
      - “Kotaknya sama”, jika kotaknya sama, 3 2 1
      - “Kotak pertama lebih besar dari kotak kedua” jika kotak kedua dapat ditempatkan di kotak pertama.

    • Dimensi kotak pertama: Dimensi kotak kedua: Kotaknya sama Kotak pertama lebih besar dari kotak kedua dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; dengan Ada.Text_IO ; gunakan Ada.Text_IO ; prosedur utama adalah A1, B1, C1, A2, B2, C2: Integer; min, maks, pertengahan, tmp: Integer; mulaiGet(A1) ; Dapatkan(B1) ; Dapatkan(C1) ; Dapatkan(A2) ; Dapatkan(B2) ; Dapatkan(C2) ;< min then mid:= min; min:= B1; end if ; if C1 < min then max:= min; min:= C1; end if ; if mid >--Kita masukkan muka-muka tersebut ke dalam korespondensi dengan panjang A1 => A2, B1 => B2, C1 => C2: --A1 dan A2 adalah yang terpanjang, C1 dan C2 adalah yang terpendek-- “Putar” kotak pertama:< min then mid:= min; min:= B2; end if ; if C2 < min then max:= min; min:= C2; end if ; if mid >menit:= A1; pertengahan:= B1; maks:= C1; jika B1 maks lalu tmp:= pertengahan; pertengahan:= maks; maks:=tmp; berakhir jika ; A1:=menit; B1:=pertengahan; C1:= maks; -- “Putar” kotak kedua: menit:= A2; pertengahan:= B2; maks:= C2; jika B2<= A2 and then B1 <= B2 and then C1 <= C2 then Put_Line(maks lalu tmp:= pertengahan; pertengahan:= maks; maks:=tmp; berakhir jika ; A2:=menit; B2:=pertengahan; C2:= maks;

      dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; dengan Ada.Text_IO; gunakan Ada.Text_IO; prosedur utama adalah A1, B1, C1, A2, B2, C2: Integer; min, maks, pertengahan, tmp: Integer; mulaiDapatkan(A1); Dapatkan (B1); Dapatkan (C1); Dapatkan (A2); Dapatkan (B2); Dapatkan (C2); -- Kita jadikan rusuk-rusuknya bersesuaian dengan panjang A1 => A2, B1 => B2, C1 => C2: --A1 dan A2 terpanjang, C1 dan C2 terpendek -- "Putar" kotak pertama: min := A1 ; pertengahan:= B1; maks:= C1; jika B1< min then mid:= min; min:= B1; end if; if C1 < min then max:= min; min:= C1; end if; if mid >maks lalu tmp:= pertengahan; pertengahan:=maks; maks:=tmp; berakhir jika;< min then mid:= min; min:= B2; end if; if C2 < min then max:= min; min:= C2; end if; if mid >A1:=menit; B1:=pertengahan; C1:= maks; -- "Putar" kotak kedua: min:= A2; pertengahan:= B2; maks:= C2; jika B2<= A2 and then B1 <= B2 and then C1 <= C2 then Put_Line("Первая коробка меньше второй"); end if; end main;

      maks lalu tmp:= pertengahan; pertengahan:= maks; maks:=tmp; berakhir jika;

    • A2:=menit; B2:=pertengahan; C2:= maks; --Memeriksa korespondensi kotak dan menampilkan hasilnya: jika A1 = A2 dan kemudian B1 = B2 dan kemudian C1 = C2 maka Put_Line("Kotak-kotak itu sama"); elsif A1 >= A2 lalu B1 >= B2 lalu C1 >= C2 lalu Put_Line("Kotak pertama lebih besar dari kotak kedua"); elsif A1
      Buatlah program yang menghitung biaya panggilan telepon jarak jauh (harga satu menit ditentukan oleh jarak ke kota tempat pelanggan berada). Data masukan untuk program ini adalah kode area dan durasi panggilan. Di bawah ini adalah kode beberapa kota dan tampilan layar yang direkomendasikan saat program sedang berjalan:
      Menghitung biaya percakapan telepon. 423
      Masukkan data awal: 3
      Kode Area ->
      Durasi (bilangan bulat menit) ->
      kota Vladivostok
    • Harga per menit: 4 rubel. Biaya panggilan: 12 rubel. dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; dengan Ada.Text_IO ; gunakan Ada.Text_IO ; prosedur Utama adalah Kode, Len: Integer; (mulai) Put_Line ("Menghitung biaya percakapan telepon.") ; Put_Line ("Masukkan data awal:") ; Meletakkan ("Kode Area ->" ) ; Put_Line (; Mendapatkan) ; Meletakkan ( Kode ) ; "Durasi (bilangan bulat menit) -> " len Biaya panggilan: 12 rubel. kasus 423 Kode (Kapan) Put_Line (=> Put_Line) ; Put_Line ("Kota Vladivostok") ; Put_Line ("Harga per menit: 4 rubel." 4 "Biaya panggilan:" 1 ) Barang => len * (, Lebar =>) ; kasus; Put_Line ("gosok.") Put_Line (095 => Put_Line) ; Put_Line ("Kota Vladivostok") ; Put_Line ("Harga per menit: 4 rubel." 2 "Biaya panggilan:" 1 ) Barang => len * (, Lebar =>) ; kasus 815 Kode ("Kota Moskow") Put_Line ("Harga per menit: 2 rubel.") ; Put_Line ("Kota Vladivostok") ; Put_Line ("Harga per menit: 4 rubel." 3 "Biaya panggilan:" 1 ) Barang => len * (, Lebar =>) ; kasus 846 Kode ("Kota: Murmansk") Put_Line ("Harga per menit: 3 rubel.") ; Put_Line ("Kota Vladivostok") ; Put_Line ("Kota Samara" 1 ) Barang => len * (, Lebar =>) ; kasus "Harga per menit: 1 gosok." Barang => len, Lebar => (yang lain) ; => Taruh "Durasi (bilangan bulat menit) -> "; => Taruh"Tidak ada kota dengan kode ini di database! Coba lagi."

      dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; dengan Ada.Text_IO; gunakan Ada.Text_IO; prosedur Utama adalah Kode, Len: Integer; mulai Put_Line("Menghitung biaya percakapan telepon."); Put_Line("Masukkan data awal :"); Masukan("Kode Area -> "); Ambil kode);

    Put("Durasi (bilangan bulat menit) -> "); Dapatkan(len); Kode kasus adalah ketika 423 => Put_Line("Kota: Vladivostok"); Put_Line("Harga per menit: 4 rubel."); Put("Biaya panggilan : "); Put(Item => len * 4, Lebar => 1); Put_Line("gosok."); kapan 095 => Put_Line("Kota: Moskow"); Put_Line("Harga per menit: 2 gosok."); Put("Biaya panggilan : "); Put(Item => len * 2, Lebar => 1); Put_Line("gosok."); kapan 815 => Put_Line("Kota: Murmansk"); Put_Line("Harga per menit: 3 gosok."); Put("Biaya panggilan : "); Put(Item => len * 3, Lebar => 1); Put_Line("gosok."); kapan 846 => Put_Line("Kota: Samara"); Put_Line("Harga per menit: 1 gosok."); Put("Biaya panggilan : "); Put(Item => len, Lebar => 1); Put_Line("gosok."); ketika yang lain => Put("Tidak ada kota dengan kode ini di database! Coba lagi."); kasus akhir; akhir Utama; Bagian ini menjelaskan secara singkat tentang operator jika "Durasi (bilangan bulat menit) -> " Dan , fungsi perut()

    dan algoritma untuk menukar variabel.

    Yang saya temukan di situs DataGenetics. Silakan kirimkan kesalahan apa pun terkait artikel ini melalui pesan pribadi.

    Dalam soal ini, ada 100 narapidana di sebuah penjara, masing-masing diberi nomor dari 1 sampai 100. Kepala penjara memutuskan untuk memberikan kesempatan kepada narapidana untuk dibebaskan, dia memberi tahu mereka syarat ujiannya, dan jika semua narapidana lulus ujian. tes, maka mereka akan dibebaskan. Jika salah satu dari mereka gagal dalam ujian, maka semua tahanan akan mati.

    Tugas

    Kompetisi dimulai, sipir penjara membawa setiap narapidana satu per satu ke sebuah ruangan yang berisi kotak-kotak dan memberitahu para narapidana bahwa mereka harus menemukan sebuah kotak yang berisi tanda dengan nomor narapidana. Narapidana mencoba menemukan plat nomor mereka dengan membuka kotak. Setiap orang diperbolehkan membuka hingga 50 kotak; jika masing-masing narapidana menemukan nomornya, maka narapidana tersebut akan dibebaskan, jika setidaknya salah satu dari mereka tidak menemukan nomornya dalam 50 kali percobaan, maka semua narapidana akan mati.

    Agar narapidana bisa dibebaskan, SEMUA narapidana harus lulus ujian.

    Jadi seberapa besar kemungkinan para tahanan akan diampuni?

    • Setelah kotak dibuka oleh narapidana dan ia memeriksa tandanya, kotak itu dimasukkan kembali ke dalam kotak dan tutupnya ditutup kembali;
    • Piring tidak dapat ditukar;
    • Narapidana tidak boleh meninggalkan petunjuk satu sama lain atau berinteraksi satu sama lain dengan cara apa pun setelah ujian dimulai;
    • Narapidana diperbolehkan mendiskusikan strategi sebelum ujian dimulai.

    Apa strategi terbaik untuk narapidana?

    Pertanyaan tambahan:

    Jika sesama narapidana (bukan peserta ujian) mempunyai kesempatan untuk memasuki ruang rahasia sebelum ujian dimulai, periksa semua tanda di semua kotak dan (opsional, tetapi tidak wajib) menukar dua tanda dari dua kotak ( dalam hal ini, teman tersebut tidak akan memiliki kesempatan untuk - memberi tahu para narapidana tentang akibat dari tindakannya), strategi apa yang harus dia ambil untuk meningkatkan peluang keselamatan para narapidana?

    Apakah solusinya tidak mungkin?

    Pada pandangan pertama, tugas ini tampaknya hampir tidak ada harapan. Tampaknya peluang setiap narapidana menemukan tandanya sendiri secara mikroskopis kecil. Selain itu, narapidana tidak dapat bertukar informasi satu sama lain selama ujian berlangsung.

    Peluang satu narapidana adalah 50:50. Totalnya ada 100 kotak dan dia bisa membuka hingga 50 kotak untuk mencari tandanya. Jika dia membuka kotak-kotak itu secara acak dan membuka setengah dari seluruh kotak, dia akan menemukan tandanya di setengah kotak yang terbuka, atau tandanya akan tetap berada di 50 kotak yang tertutup. Peluang keberhasilannya adalah ½.

    Mari kita ambil dua tahanan. Jika keduanya memilih kotak secara acak, peluang masing-masing kotak adalah ½, dan keduanya ½x½=¼.
    (untuk dua narapidana, kesuksesan akan terjadi pada satu dari empat kasus).

    Untuk tiga tahanan peluangnya adalah ½ × ½ × ½ = ⅛.

    Untuk 100 narapidana, peluangnya adalah: ½ × ½ × … ½ × ½ (dikalikan 100 kali).


    Ini sama dengan

    Pr ≈ 0,0000000000000000000000000000008

    Artinya, peluangnya sangat kecil. Dalam situasi ini, kemungkinan besar semua tahanan akan mati.

    Jawaban yang luar biasa

    Jika setiap tahanan membuka kotak secara acak, kecil kemungkinannya mereka akan lulus ujian. Ada strategi di mana narapidana dapat mengharapkan keberhasilan lebih dari 30% dari keseluruhan waktu. Ini adalah hasil yang luar biasa luar biasa (jika Anda belum pernah mendengar soal matematika ini sebelumnya).

    Lebih dari 30% untuk 100 tahanan! Ya, ini bahkan lebih baik daripada peluang dua tahanan, asalkan mereka membuka kotak secara acak. Tapi bagaimana ini mungkin?

    Jelas bahwa satu untuk setiap narapidana, peluangnya tidak boleh lebih dari 50% (bagaimanapun juga, tidak ada cara untuk komunikasi antar narapidana). Namun jangan lupa bahwa informasi tersebut disimpan dalam susunan piring di dalam kotak. Tidak ada seorang pun yang mengacak tanda-tanda di antara kunjungan individu narapidana ke ruangan tersebut, sehingga kami dapat menggunakan informasi ini.

    Larutan

    Pertama, saya akan memberi tahu Anda solusinya, lalu saya akan menjelaskan mengapa ini berhasil.

    Strateginya sangat mudah. Tahanan pertama membuka kotak dengan nomor yang tertulis di bajunya. Misalnya, narapidana bernomor 78 membuka sebuah kotak bernomor 78. Jika dia menemukan nomornya pada tanda di dalam kotak, baguslah! Jika tidak, dia melihat nomor pada pelat di kotak “miliknya” dan kemudian membuka kotak berikutnya dengan nomor tersebut. Setelah membuka kotak kedua, dia melihat nomor pelat di dalam kotak ini dan membuka kotak ketiga dengan nomor ini. Selanjutnya, kita cukup mentransfer strategi ini ke kotak yang tersisa. Agar lebih jelas, lihat gambar:


    Pada akhirnya, tahanan akan menemukan nomornya atau mencapai batas 50 kotak. Pada pandangan pertama, hal ini tampaknya tidak ada gunanya dibandingkan dengan sekadar memilih sebuah kotak secara acak (dan hal ini berlaku untuk satu tahanan), tetapi karena 100 tahanan akan menggunakan set kotak yang sama, hal ini masuk akal.

    Indahnya soal matematika ini tidak hanya mengetahui hasilnya, tetapi juga pemahamannya Mengapa strategi ini berhasil.

    Jadi mengapa strategi ini berhasil?

    Setiap kotak berisi satu tanda - dan tanda ini unik. Artinya pelat tersebut berada di dalam kotak dengan nomor yang sama, atau menunjuk ke kotak yang berbeda. Karena semua tanda adalah unik, untuk setiap kotak hanya ada satu tanda yang menunjuk ke sana (dan hanya ada satu cara untuk sampai ke kotak itu).


    Kalau dipikir-pikir, kotak-kotak itu membentuk rantai melingkar yang tertutup. Satu kotak hanya dapat menjadi bagian dari satu rantai, karena di dalam kotak hanya ada satu penunjuk ke kotak berikutnya dan, oleh karena itu, di kotak sebelumnya hanya ada satu penunjuk ke kotak tertentu (pemrogram dapat melihat analogi dengan daftar tertaut) .

    Jika kotak tidak mengarah ke dirinya sendiri (jumlah kotak sama dengan jumlah pelat di dalamnya), maka kotak tersebut berada dalam rantai. Beberapa rantai mungkin terdiri dari dua kotak, ada pula yang lebih panjang.


    Karena semua narapidana memulai dengan sebuah kotak dengan nomor yang sama dengan pakaian mereka, maka menurut definisi, mereka ditempatkan pada rantai yang berisi tanda mereka (hanya ada satu tanda yang menunjuk ke kotak itu).

    Dengan menjelajahi kotak-kotak dalam lingkaran di sepanjang rantai ini, mereka dijamin pada akhirnya akan menemukan tandanya.

    Satu-satunya pertanyaan yang tersisa adalah apakah mereka akan menemukan tandanya dalam 50 gerakan.


    Panjang rantai

    Agar seluruh narapidana lulus ujian, panjang rantai maksimal harus kurang dari 50 kotak. Jika rantainya lebih panjang dari 50 kotak, tahanan dengan nomor dari rantai ini akan gagal dalam ujian - dan semua tahanan akan mati.

    Jika panjang maksimal rantai terpanjang kurang dari 50 kotak, maka semua narapidana akan lulus ujian!

    Pikirkan tentang ini sejenak. Ternyata hanya ada satu rantai yang lebih panjang dari 50 kotak dalam setiap tata letak pelat (kita hanya punya 100 kotak, jadi jika satu rantai lebih panjang dari 50, maka sisanya akan lebih pendek dari 50 pada akhirnya) .


    Kemungkinan tata letak dengan rantai panjang

    Setelah Anda meyakinkan diri sendiri bahwa agar berhasil, panjang rantai maksimum harus kurang dari atau sama dengan 50, dan hanya boleh ada satu rantai panjang dalam setiap rangkaian, kita dapat menghitung probabilitas untuk lulus ujian:

    Sedikit lagi matematika

    Jadi apa yang kita perlukan untuk mengetahui kemungkinan adanya rantai panjang?

    Untuk rantai dengan panjang l, peluang munculnya kotak-kotak di luar rantai adalah:

    Ada (l-1) dalam kumpulan angka ini! cara untuk menempatkan tanda.

    Tanda-tanda yang tersisa dapat ditemukan (100-l)! cara (jangan lupa panjang rantai tidak melebihi 50).

    Mengingat hal ini, banyak permutasi yang mengandung rantai dengan panjang tepat l: (>50)


    Ternyata ada 100(!) cara menyusun tanda-tanda tersebut, sehingga peluang adanya rantai dengan panjang l sama dengan 1/l. Omong-omong, hasil ini tidak bergantung pada jumlah kotak.

    Seperti yang telah kita ketahui, hanya ada satu pilihan yang mempunyai panjang rantai > 50, sehingga peluang keberhasilan dihitung menggunakan rumus berikut:

    Hasil

    31,18% - probabilitas bahwa ukuran rantai terpanjang akan kurang dari 50 dan masing-masing tahanan akan dapat menemukan tandanya, mengingat batas 50 percobaan.

    Peluang semua narapidana menemukan tandanya dan lulus ujian adalah 31,18%

    Di bawah ini adalah grafik yang menunjukkan probabilitas (pada sumbu y) untuk semua rantai dengan panjang l (pada sumbu x). Warna merah mewakili semua “kegagalan” (kurva yang diberikan di sini hanyalah grafik 1/l). Hijau berarti "sukses" (perhitungan sedikit lebih rumit untuk bagian grafik ini karena ada beberapa cara untuk menentukan panjang maksimum<50). Общая вероятность складывается из зеленых столбцов в 31.18% шанс на спасение.


    Bilangan harmonik (bagian artikel ini ditujukan untuk para geek)

    Dalam matematika, bilangan harmonik ke-n adalah jumlah kebalikan dari n bilangan pertama yang berurutan dalam deret natural.


    Mari kita hitung batasnya jika kita memiliki kotak sembarang, bukan 100a sejumlah besar kotak (misalkan kita mempunyai total 2n kotak).


    Konstanta Euler-Mascheroni adalah konstanta yang didefinisikan sebagai batas selisih antara jumlah parsial suatu deret harmonik dan logaritma natural suatu bilangan.

    Dengan bertambahnya jumlah narapidana, jika sipir mengizinkan narapidana membuka setengah dari seluruh kotak, maka peluang keselamatan cenderung 30,685%

    (Jika Anda membuat keputusan di mana tahanan menebak kotak secara acak, maka seiring bertambahnya jumlah tahanan, kemungkinan keselamatan cenderung nol!)

    Pertanyaan tambahan

    Apakah ada orang lain yang ingat pertanyaan lanjutannya? Apa yang dapat dilakukan rekan kita yang suka membantu untuk meningkatkan peluang kita untuk bertahan hidup?

    Sekarang kita sudah tahu solusinya, jadi strateginya sederhana: dia harus mempelajari semua tanda dan menemukan rantai kotak terpanjang. Jika rantai terpanjang kurang dari 50, maka ia tidak perlu mengganti pelat sama sekali, atau menggantinya agar rantai terpanjang tidak menjadi lebih panjang dari 50. Namun, jika dia menemukan rantai yang panjangnya lebih dari 50 kotak, yang perlu dia lakukan hanyalah menukar isi dua kotak dari rantai tersebut untuk membagi rantai tersebut menjadi dua rantai yang lebih pendek.

    Akibat dari strategi ini, tidak akan ada rantai panjang dan semua narapidana dijamin mendapatkan tanda dan keselamatan. Jadi, dengan menukar kedua tanda tersebut, kita mengurangi kemungkinan keselamatan menjadi 100%!

    Jenis pekerjaan: 8
    Tema: Prisma

    Kondisi

    Pada prisma segitiga beraturan ABCA_1B_1C_1, sisi alasnya adalah 4 dan rusuk sisinya adalah 10. Hitunglah luas penampang prisma pada bidang yang melalui titik tengah rusuk AB, AC, A_1B_1 dan A_1C_1.

    Tunjukkan solusi

    Larutan

    Perhatikan gambar berikut.

    Oleh karena itu, ruas MN adalah garis tengah segitiga A_1B_1C_1 MN = \frac12 B_1C_1=2. Juga, KL=\frac12BC=2. Selain itu, MK = NL = 10. Oleh karena itu, segi empat MNLK adalah jajar genjang. Karena MK\paralel AA_1, maka MK\perp ABC dan MK\perp KL. Oleh karena itu, segi empat MNLK adalah persegi panjang. S_(MNLK) = MK\cdot KL = 10\cdot 2 = 20.

    Menjawab

    Jenis pekerjaan: 8
    Tema: Prisma

    Kondisi

    Volume prisma segi empat beraturan ABCDA_1B_1C_1D_1 adalah 24 . Titik K berada di tengah tepi CC_1. Temukan volume piramida KBCD.

    Tunjukkan solusi

    Larutan

    Sesuai dengan ketentuan, KC adalah tinggi piramida KBCD. CC_1 adalah tinggi prisma ABCDA_1B_1C_1D_1 .

    Karena K adalah titik tengah CC_1, maka KC=\frac12CC_1. Biarkan CC_1=H , lalu KC=\frac12H. Perhatikan juga itu S_(BCD)=\frac12S_(ABCD). Kemudian, V_(KBCD)= \frac13S_(BCD)\cdot\frac(H)(2)= \frac13\cdot\frac12S_(ABCD)\cdot\frac(H)(2)= \frac(1)(12)\cdot S_(ABCD)\cdot H= \frac(1)(12)V_(ABCDA_1B_1C_1D_1). Karena itu, V_(KBCD)=\frac(1)(12)\cdot24=2.

    Menjawab

    Sumber: “Matematika. Persiapan Ujian Negara Bersatu 2017. Tingkat profil." Ed. F.F.Lysenko, S.Yu.Kulabukhova.

    Jenis pekerjaan: 8
    Tema: Prisma

    Kondisi

    Hitunglah luas permukaan lateral prisma segi enam beraturan yang sisi alasnya 6 dan tingginya 8.

    Tunjukkan solusi

    Larutan

    Luas permukaan lateral prisma dicari dengan rumus sisi S. = P dasar · h = 6a\cdot h, dimana P dasar. dan h berturut-turut adalah keliling alas dan tinggi prisma sama dengan 8, dan a adalah sisi segi enam beraturan sama dengan 6. Oleh karena itu, sisi S. = 6\cdot 6\cdot 8 = 288.

    Menjawab

    Sumber: “Matematika. Persiapan Ujian Negara Bersatu 2017. Tingkat profil." Ed. F.F.Lysenko, S.Yu.Kulabukhova.

    Jenis pekerjaan: 8
    Tema: Prisma

    Kondisi

    Air dituangkan ke dalam bejana yang berbentuk prisma segitiga biasa. Ketinggian air mencapai 40 cm. Berapakah tinggi permukaan air jika dituangkan ke dalam bejana lain yang bentuknya sama, yang alasnya dua kali lebih besar dari bejana pertama? Nyatakan jawaban Anda dalam sentimeter.

    Tunjukkan solusi

    Larutan

    Misalkan a adalah sisi alas bejana pertama, maka 2 a adalah sisi alas bejana kedua. Dengan syarat volume zat cair V pada bejana pertama dan kedua adalah sama. Mari kita nyatakan dengan H tingkat kenaikan cairan dalam bejana kedua. Kemudian V= \frac12\cdot a^2\cdot\sin60^(\circ)\cdot40= \frac(a^2\sqrt3)(4)\cdot40, Dan, V=\frac((2a)^2\sqrt3)(4)\cdot H. Dari sini \frac(a^2\sqrt3)(4)\cdot40=\frac((2a)^2\sqrt3)(4)\cdot H, 40=4jam, H=10.

    Menjawab

    Sumber: “Matematika. Persiapan Ujian Negara Bersatu 2017. Tingkat profil." Ed. F.F.Lysenko, S.Yu.Kulabukhova.

    Jenis pekerjaan: 8
    Tema: Prisma

    Kondisi

    Pada prisma heksagonal beraturan ABCDEFA_1B_1C_1D_1E_1F_1 semua sisinya sama dengan 2. Tentukan jarak antara titik A dan E_1.

    Tunjukkan solusi

    Larutan

    Segitiga AEE_1 berbentuk persegi panjang, karena tepi EE_1 tegak lurus terhadap bidang alas prisma, maka sudut AEE_1 adalah sudut siku-siku.

    Kemudian, dengan teorema Pythagoras, AE_1^2 = AE^2 + EE_1^2. Mari kita cari AE dari segitiga AFE menggunakan teorema kosinus. Setiap sudut dalam segi enam beraturan adalah 120^(\circ). Kemudian AE^2= AF^2+FE^2-2\cdot AF\cdot FE\cdot\cos120^(\circ)= 2^2+2^2-2\cdot2\cdot2\cdot\kiri (-\frac12 \kanan).

    Jadi, AE^2=4+4+4=12,

    AE_1^2=12+4=16,

    AE_1=4.

    Menjawab

    Sumber: “Matematika. Persiapan Ujian Negara Bersatu 2017. Tingkat profil." Ed. F.F.Lysenko, S.Yu.Kulabukhova.

    Jenis pekerjaan: 8
    Tema: Prisma

    Kondisi

    Temukan luas permukaan lateral prisma lurus, yang alasnya terletak belah ketupat dengan diagonal-diagonal sama 4\sqrt5 dan 8, dan sisi sampingnya sama dengan 5.

    Tunjukkan solusi

    Larutan

    Luas permukaan lateral prisma lurus dicari dengan rumus sisi S. = P dasar · h = 4a\cdot h, dimana P dasar. dan h, keliling alas dan tinggi prisma berturut-turut adalah 5, dan a adalah sisi belah ketupat. Mari kita cari sisi belah ketupat dengan menggunakan fakta bahwa diagonal-diagonal belah ketupat ABCD saling tegak lurus dan dibagi dua oleh titik potongnya.