Transmisi manual: perangkat, jenis, fitur. Teka-teki yang berkaitan dengan fenomena fisik di alam

Yang saya temukan di situs DataGenetics. Silakan kirim semua kesalahan dalam artikel ini melalui pesan pribadi.

Dalam masalah ini, ada 100 tahanan di penjara, masing-masing diberi nomor dari 1 hingga 100. Sipir memutuskan untuk memberikan kesempatan kepada para tahanan untuk dibebaskan, dia memberi tahu mereka kondisi tes, dan jika semua tahanan lulus tes, maka mereka akan dibebaskan. Jika setidaknya salah satu dari mereka gagal dalam ujian, maka semua tahanan akan mati.

Tugas

Sipir pergi ke ruang rahasia dan menyiapkan 100 kotak dengan tutup. Pada setiap kotak, dia menandai angka dari 1 hingga 100. Kemudian dia membawa 100 tablet kertas, sesuai dengan jumlah tahanan, dan memberi nomor tablet ini dari 1 hingga 100. Setelah itu, dia mengocok 100 tablet dan menempatkan satu tablet di setiap kotak, menutup tutupnya. Para tahanan tidak melihat bagaimana sipir melakukan semua tindakan ini.

Kompetisi dimulai, sipir membawa setiap tahanan satu per satu ke ruangan dengan kotak-kotak dan memberi tahu para tahanan bahwa mereka harus menemukan sebuah kotak yang akan berisi piring dengan nomor tahanan. Para tahanan berusaha menemukan piring dengan nomor mereka dengan membuka kotak. Masing-masing diperbolehkan membuka hingga 50 kotak; jika masing-masing tahanan menemukan nomornya, maka tahanan akan dibebaskan, jika setidaknya salah satu dari mereka tidak menemukan nomornya dalam 50 upaya, maka semua tahanan akan mati.

Agar tahanan dibebaskan, SEMUA tahanan harus lulus ujian dengan sukses.

Jadi berapa peluang para tahanan akan diampuni?

  • Setelah tahanan membuka kotak dan memeriksa piringnya, kotak itu dimasukkan kembali ke dalam kotak dan tutupnya ditutup kembali;
  • Tempat piring tidak dapat diubah;
  • Tahanan tidak dapat meninggalkan petunjuk satu sama lain atau berinteraksi satu sama lain dengan cara apa pun setelah persidangan dimulai;
  • Narapidana diperbolehkan untuk mendiskusikan strategi sebelum persidangan dimulai.

Apa strategi terbaik untuk narapidana?

Pertanyaan tambahan:

Jika teman narapidana (bukan peserta tes) dapat memasuki ruang rahasia sebelum tes dimulai, periksa semua tablet di semua kotak dan (opsional, tetapi tidak wajib) tukar dua tablet dari dua kotak (dalam hal ini, kawan tidak akan memiliki kesempatan untuk memberi tahu narapidana tentang akibat dari tindakannya), lalu strategi apa yang harus ia ambil untuk meningkatkan peluang para narapidana untuk melarikan diri?

Solusi tidak mungkin?

Sepintas, tugas ini tampaknya hampir tidak ada harapan. Tampaknya peluang masing-masing tahanan untuk menemukan tablet mereka sangat kecil. Selain itu, narapidana tidak dapat saling bertukar informasi selama persidangan.

Peluang satu tahanan adalah 50:50. Ada total 100 kotak dan dia bisa membuka hingga 50 kotak mencari tandanya. Jika dia membuka kotak secara acak dan membuka setengah dari semua kotak, dia akan menemukan tabletnya di setengah kotak yang terbuka, atau tabletnya akan tetap berada di 50 kotak yang tertutup. Peluang keberhasilannya adalah .

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

Untuk tiga tahanan, peluangnya adalah × × = .

Untuk 100 tahanan, peluangnya adalah: × × … × (kalikan 100 kali).


Ini sama dengan

Pr 0,00000000000000000000000000000008

Jadi kemungkinannya sangat kecil. Dalam skenario ini, kemungkinan besar, semua tahanan akan mati.

Jawaban yang luar biasa

Jika setiap tahanan membuka kotak secara acak, mereka tidak mungkin lulus ujian. Ada strategi di mana narapidana dapat berharap untuk berhasil lebih dari 30% dari waktu. Ini adalah hasil yang luar biasa luar biasa (jika Anda belum pernah mendengar tentang ini soal matematika sebelumnya).

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

Jelas bahwa satu untuk setiap tahanan, peluangnya tidak boleh lebih tinggi dari 50% (bagaimanapun, tidak ada cara untuk komunikasi antar tahanan). Tapi jangan lupa bahwa informasi tersebut disimpan di lokasi piring di dalam kotak. Tidak ada yang mengocok tablet di antara kunjungan ke ruangan oleh masing-masing tahanan, jadi kita bisa menggunakan informasi itu.

Keputusan

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

Strateginya sangat mudah. Tahanan pertama membuka kotak dengan nomor yang tertulis di bajunya. Misalnya, tahanan nomor 78 membuka kotak dengan nomor 78. Jika dia menemukan nomornya di piring di dalam kotak, itu bagus! Jika tidak, dia melihat nomor di piring di kotak "nya" dan kemudian membuka kotak berikutnya dengan nomor itu. Setelah membuka kotak kedua, dia melihat nomor tablet di dalam kotak ini dan membuka kotak ketiga dengan nomor ini. Kemudian kita cukup mentransfer strategi ini ke kotak yang tersisa. Agar lebih jelas, perhatikan gambar:


Akhirnya, tahanan akan menemukan nomornya atau mencapai batas 50 kotak. Pada pandangan pertama, ini terlihat tidak ada gunanya dibandingkan dengan hanya memilih kotak secara acak (dan untuk satu tahanan individu memang demikian), tetapi karena semua 100 tahanan akan menggunakan set kotak yang sama, itu masuk akal.

Keindahan ini soal matematika- tidak hanya untuk mengetahui hasilnya, tetapi juga untuk memahami mengapa strategi ini berhasil.

Jadi mengapa strategi itu berhasil?

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


Jika dipikir-pikir, kotak-kotak itu membentuk rantai melingkar tertutup. Satu kotak dapat menjadi bagian dari hanya 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 ini (pemrogram dapat melihat analogi dengan daftar tertaut).

Jika kotak tidak menunjuk ke dirinya sendiri (nomor kotak sama dengan nomor pelat di dalamnya), maka kotak itu akan berada di rantai. Beberapa rantai mungkin terdiri dari dua kotak, beberapa lebih panjang.


Karena semua tahanan memulai dengan sebuah kotak dengan nomor yang sama pada pakaian mereka, mereka, menurut definisi, ditempatkan pada rantai yang berisi papan nama mereka (hanya ada satu papan nama yang menunjuk ke kotak ini).

Menjelajahi kotak-kotak di sepanjang rantai ini dalam lingkaran, mereka dijamin akhirnya menemukan tanda mereka.

Satu-satunya pertanyaan tetap apakah mereka akan menemukan tablet mereka dalam 50 langkah.


Panjang rantai

Agar semua tahanan lulus tes, panjang rantai maksimum harus kurang dari 50 kotak. Jika rantai lebih panjang dari 50 kotak, tahanan dengan nomor dari rantai tersebut akan gagal dalam ujian - dan semua tahanan akan mati.

Jika panjang maksimum rantai terpanjang kurang dari 50 kotak, maka semua tahanan akan lulus ujian!

Pikirkan tentang ini sebentar. Ternyata hanya ada satu rantai yang lebih panjang dari 50 kotak di setiap tata letak pelat (kami hanya memiliki 100 kotak, jadi jika satu rantai lebih panjang dari 50, maka sisanya akan lebih pendek dari 50 total).


Peluang tangan rantai panjang

Setelah Anda meyakinkan diri sendiri bahwa panjang rantai maksimum harus kurang dari atau sama dengan 50 untuk berhasil, dan hanya ada satu rantai panjang di setiap rangkaian, kita dapat menghitung probabilitas untuk melewati tantangan:

Beberapa matematika lagi

Jadi apa yang kita butuhkan untuk mengetahui probabilitas rantai panjang?

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

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

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

Mengingat ini, jumlah permutasi yang mengandung rantai panjang yang tepat aku: (>50)


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

Seperti yang sudah kita ketahui, hanya ada satu kasus di mana ada rantai dengan panjang > 50, sehingga peluang sukses dihitung dengan rumus ini:

Hasil

31,18% - probabilitas bahwa ukuran rantai terpanjang akan kurang dari 50 dan masing-masing tahanan akan dapat menemukan tablet mereka, dengan batas 50 upaya.

Peluang semua tahanan akan menemukan piring mereka 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). Merah berarti semua "kegagalan" (kurva yang diberikan di sini hanyalah plot 1/l). Warna hijau berarti "berhasil" (perhitungannya sedikit lebih rumit untuk bagian grafik ini, karena ada beberapa cara untuk menentukan panjang maksimum <50). Общая вероятность складывается из зеленых столбцов в 31.18% шанс на спасение.


Nomor harmonik (bagian artikel ini untuk geeks)

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


Mari kita hitung batasnya jika alih-alih 100a kotak kita memiliki arbitrer sejumlah besar kotak (misalkan kita memiliki total 2n kotak).


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

Dengan bertambahnya jumlah narapidana, jika pengawas mengizinkan narapidana untuk membuka setengah dari semua kotak, maka peluang keselamatan cenderung 30,685%

(Jika Anda membuat keputusan di mana para tahanan menebak kotak secara acak, maka ketika jumlah tahanan meningkat, kemungkinan diselamatkan cenderung nol!)

pertanyaan tambahan

Ada yang masih ingat pertanyaan tambahannya? Apa yang bisa dilakukan rekan kita yang 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 dia tidak perlu mengganti tablet sama sekali, atau mengubahnya sehingga rantai terpanjang tidak menjadi lebih dari 50. Namun, jika dia menemukan rantai yang lebih panjang dari 50 kotak, yang harus dia lakukan hanyalah menukar isi dua kotak dari rantai itu untuk memecah rantai itu menjadi dua rantai yang lebih pendek.

Sebagai hasil dari strategi ini, tidak akan ada rantai panjang dan semua tahanan dijamin menemukan tanda dan keselamatan mereka. Jadi, dengan menukar dua tanda, kami mengurangi kemungkinan keselamatan hingga 100%!


Ingatlah bahwa volume balok (atau kotak biasa) sama dengan hasil kali panjang, lebar, dan tingginya. Jika kotak Anda berbentuk persegi panjang atau persegi, yang perlu Anda ketahui hanyalah panjang, lebar, dan tingginya. Untuk mendapatkan volume, perlu untuk mengalikan hasil pengukuran. Rumus perhitungan dalam bentuk singkatan sering disajikan sebagai berikut: V \u003d L x W x H.
Contoh soal: "Jika panjang kotak adalah 10 cm, lebarnya 4 cm, dan tingginya 5 cm, berapa volumenya?"
V = L x W x H
V = 10cmx4cmx5cm
V \u003d 200 cm 3
"Tinggi" kotak dapat disebut sebagai "kedalaman". Misalnya, tugas dapat berisi informasi berikut: "Panjang kotak adalah 10 cm, lebar 4 cm, dan kedalaman 5 cm."

2
Ukur panjang kotak tersebut. Jika Anda melihat kotak dari atas, itu akan muncul di depan mata Anda dalam bentuk persegi panjang. Panjang kotak akan menjadi sisi terpanjang dari persegi panjang ini. Catat hasil pengukuran sisi ini sebagai nilai parameter "panjang".
Pastikan untuk menggunakan satuan ukuran yang sama saat melakukan pengukuran. Jika Anda mengukur satu sisi dalam sentimeter, maka sisi lainnya juga harus diukur dalam sentimeter.

3
Ukur lebar kotak. Lebar kotak akan diwakili oleh sisi lain yang lebih pendek dari persegi panjang yang terlihat dari atas. Jika Anda menghubungkan sisi-sisi kotak yang diukur panjang dan lebarnya secara visual, maka mereka akan muncul dalam bentuk huruf "G". Catat nilai pengukuran terakhir sebagai "lebar".
Lebar selalu merupakan sisi terpendek dari kotak.

4
Ukur tinggi kotak tersebut. Ini adalah parameter terakhir yang belum Anda ukur. Ini mewakili jarak dari tepi atas kotak ke bawah. Catat nilai pengukuran ini sebagai "tinggi".
Tergantung di sisi mana Anda meletakkan kotak, sisi tertentu yang Anda tentukan sebagai "panjang", "lebar" atau "tinggi" mungkin berbeda. Namun, tidak masalah, Anda hanya perlu pengukuran dari tiga sisi yang berbeda.

5
Kalikan hasil dari ketiga pengukuran tersebut. Seperti yang telah disebutkan, rumus untuk menghitung volume adalah sebagai berikut: V = Panjang x Lebar x Tinggi; oleh karena itu, untuk mendapatkan volume, Anda hanya perlu mengalikan ketiga sisinya. Pastikan untuk memasukkan satuan yang Anda gunakan dalam perhitungan Anda sehingga Anda tidak lupa apa arti nilai yang Anda dapatkan.

6
Saat menunjukkan unit volume, jangan lupa untuk menunjukkan kekuatan ketiga " 3 ". Volume yang dihitung memiliki ekspresi numerik, tetapi tanpa indikasi unit pengukuran yang benar, perhitungan Anda tidak akan berarti. Untuk mencerminkan unit volume dengan benar, mereka harus ditentukan dalam kubus. Misalnya, jika semua sisi diukur dalam sentimeter, maka satuan volume akan ditentukan sebagai "cm3".
Contoh soal: "Jika sebuah kotak memiliki panjang 2 m, lebar 1 m, dan tinggi 3 m, berapa volumenya?"
V = L x W x H
V = 2m x 1m x 4m
V \u003d 8 m 3
Catatan: Menentukan satuan kubik volume memungkinkan Anda memahami berapa banyak kubus yang dapat ditempatkan di dalam kotak. Jika kita mengacu pada contoh sebelumnya, ini berarti delapan meter kubik ditempatkan dalam sebuah kotak.

Perhitungan volume kotak bentuk lain

Tentukan volume silinder. Silinder adalah tabung bundar dengan lingkaran di kedua ujungnya. Untuk menentukan volume tabung, digunakan rumus: V = x r 2 x h, di mana = 3,14, r adalah jari-jari sisi bundar silinder, dan h adalah tingginya.
Untuk menentukan volume kerucut, atau piramida dengan alas bundar, rumus yang sama digunakan, tetapi dikalikan dengan 1/3. Artinya, volume kerucut dihitung dengan rumus: V = 1/3 (π x r 2 x h)

2
Tentukan volume piramida tersebut! Piramida adalah bangun datar yang alasnya rata dan sisi-sisinya konvergen pada satu titik. Untuk menentukan volume piramida, Anda perlu mengambil 1/3 produk dari luas alas dan tingginya. Artinya, rumus perhitungannya adalah sebagai berikut: Volume piramida = 1/3 (Luas alas x Tinggi).
Dalam kebanyakan kasus, piramida memiliki dasar persegi atau persegi panjang. Dalam situasi seperti itu, luas alas dihitung dengan mengalikan panjang alas dengan lebar.

Untuk menentukan volume kotak dengan bentuk kompleks, tambahkan volume masing-masing bagiannya. Misalnya, Anda mungkin perlu mengukur volume kotak yang berbentuk seperti huruf "L". Dalam hal ini, kotak akan memiliki lebih banyak sisi untuk diukur. Jika Anda memecah kotak ini menjadi dua bagian, Anda dapat mengukur volume kedua bagian ini dengan cara standar, lalu menambahkan nilai yang dihasilkan. Dalam kasus kotak berbentuk L, bagian yang lebih panjang dapat dianggap sebagai kotak persegi panjang yang terpisah, dan bagian yang lebih pendek sebagai kotak persegi (atau hampir persegi) yang melekat padanya.
Jika kotak Anda memiliki bentuk yang sangat kompleks, ketahuilah bahwa ada banyak cara untuk menentukan volume benda dengan bentuk apa pun.

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

    Ketik 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; begin Put_Line("Masukkan dua bilangan bulat pada satu baris dan tekan Enter."); put("->"); Mendapatkan); Dapatkan (B); --Masukkan 2 angka jika A > B lalu Put(Item =>; A, Width =>; 1); put("lebih besar dari"); Put(Item => B, Lebar => 1); elif A< B then Put(Item =>A, Lebar => 1); put("kurang dari"); Put(Item => B, Lebar => 1); else Put("Angka yang dimasukkan sama!"); berakhir jika; akhir utama;

    Tiga bilangan bulat diberikan. Temukan yang terbesar dari mereka (program harus menghasilkan tepat satu bilangan bulat). Yang terbesar dalam masalah ini dipahami sebagai angka yang tidak kurang dari yang lain.


  • -> 1 2 3
    Maksimum dari 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( "Masukkan tiga bilangan bulat pada satu baris dan tekan Enter."); Masukan("->"); Mendapatkan); Dapatkan (B) ; Dapatkan (C); --Masukkan tiga bilangan bulat maks:=A; --bawaan kami menganggap bahwa angka A adalah maksimum jika B > maks maka --Jika B lebih besar dari maksimum, maka maks:=B; --jumlah maksimum adalah B berakhir jika ; jika C > maks maka --Jika C lebih besar dari maksimum, maka maks:=C; --jumlah maksimum adalah C berakhir jika ; Taruh( "Maksimum 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; begin Put_Line("Masukkan tiga bilangan bulat pada satu baris dan tekan Enter."); put("->"); Mendapatkan); Dapatkan (B); Dapatkan (C); --Masukkan tiga bilangan bulat maks:= A; --secara default, kita asumsikan bahwa angka A adalah maksimum jika B > max maka --Jika B lebih besar dari maksimum, maka max:= B; --jumlah maksimum adalah B end jika; jika C > max maka --Jika C lebih besar dari max, maka max:= C; --jumlah maksimum sama dengan C end jika; Put("Maksimum tiga angka:" & Integer"image(max)); end main;

    Diberikan tiga bilangan asli A, B, C. Tentukan apakah ada segitiga dengan sisi-sisi ini. Jika segitiga itu ada, cetak pesan bahwa segitiga dengan sisi seperti itu ada, jika tidak, cetak bahwa segitiga itu tidak ada.

  • Ketik tiga sisi segitiga dan tekan Enter.
    -> 3 4 5
    Sebuah segitiga dengan sisi 3, 4, 5 ada.
  • Segitiga adalah tiga titik yang tidak terletak pada garis yang sama. Segitiga hanya ada jika jumlah dua sisinya lebih besar dari yang ketiga.

  • dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; --Untuk membaca bilangan bulat dengan Ada.Text_IO ; gunakan Ada.Text_IO ; --Untuk menampilkan string prosedur utama adalah a, b, c: Integer; mulai Put_Line( "Masukkan tiga sisi segitiga dan tekan Enter.Enter."); Masukan("->"); Mendapatkan); Dapatkan (b) ; Dapatkan (c); --Bacalah sisi-sisi segitiga jika a + b > c dan kemudian b + c > a dan kemudian c + a > b maka --Periksa semua kondisi dalam satu baris Taruh( "Segitiga dengan Sisi"& Integer"image(a) & "," & Integer"image(b) & "," & Integer"image(c) & " ada" ); else Put( "Segitiga dengan Sisi"& Integer"image(a) & "," & Integer"image(b) & "," & Integer"image(c) & " tidak ada" ); end if ; end main;

    dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; --Untuk membaca bilangan bulat dengan Ada.Text_IO; gunakan Ada.Text_IO; --Untuk mencetak string prosedur main adalah a, b, c: Integer; begin Put_Line("Masukkan ketiga sisi segitiga dan tekan Enter.Enter."); put("->"); mendapatkan); dapatkan(b); dapatkan(c); --Baca 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" & Bilangan Bulat"gambar(a) & " ," & Integer"image(b) & "," & Integer"image(c) & " ada"); else Put("Segitiga dengan sisi" & Integer"image(a) & "," & Integer"image( b) & "," & Integer"gambar(c) & " tidak ada"); berakhir jika; akhir utama;

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

  • Ketik 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( "Masukkan tiga bilangan bulat dan tekan Enter."); Masukan("->"); Mendapatkan); Dapatkan (B) ; Dapatkan (C); jika A = B dan kemudian A = C maka --Jika ketiga nomor 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 ); lain --Jika sebuah nomor yang sama Tidak Put(Item => 0 , Lebar => 1 ); berakhir jika ; akhirUtama;

    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; begin Put_Line("Masukkan tiga bilangan bulat dan tekan Enter."); put("->"); Mendapatkan); Dapatkan (B); Dapatkan (C); jika A = B dan kemudian A = C maka --Jika ketiga angka cocok dengan Put(Item => 3, Width => 1); elsif A = B atau A = C atau B = C maka --Jika dua angka cocok dengan Put(Item => 2, Width => 1); else --Jika tidak ada angka yang sama Put(Item => 0, Width => 1); berakhir jika; akhirUtama;

    Benteng catur bergerak secara horizontal atau vertikal. Diberikan dua berbagai sel papan catur, tentukan apakah benteng dapat berpindah dari sel pertama ke sel kedua dalam satu gerakan. Program menerima sebagai masukan empat angka dari 1 sampai 8 masing-masing, menentukan nomor kolom dan nomor baris, pertama untuk sel pertama, kemudian untuk sel kedua. Program harus mencetak "YA" jika memungkinkan untuk mencapai sel kedua dari sel pertama dengan memindahkan benteng, atau "TIDAK" sebaliknya.


  • 4 4
    5 5
    TIDAK
  • ); Taruh() ; Mendapatkan); Dapatkan (B) ; Taruh() ; Dapatkan (C); Dapatkan (D); jika A = C atau B = D maka Put("YA" ); else Put("TIDAK" ); berakhir jika ; akhirUtama;

    dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; dengan Ada.Text_IO; gunakan Ada.Text_IO; procedure Main adalah subtype checkBoard adalah Integer range 1.8; A, B, C, D: papan centang; begin Put_Line("Masukkan nomor kolom dan baris kedua sel:"); Put("Masukkan nomor kolom dan baris untuk sel pertama dan tekan: "); Mendapatkan); Dapatkan (B); Put("Masukkan nomor kolom dan baris untuk sel kedua dan tekan: "); Dapatkan (C); Dapatkan (D); jika A = C atau B = D maka Put("YA"); else Put("TIDAK"); berakhir jika; akhirUtama;

    Raja catur bergerak secara horizontal, vertikal dan diagonal, tetapi hanya 1 kotak. Diberikan dua sel berbeda di papan catur, tentukan apakah raja dapat berpindah dari sel pertama ke sel kedua dalam satu gerakan. Program menerima sebagai masukan empat angka dari 1 sampai 8 masing-masing, menentukan nomor kolom dan nomor baris, pertama untuk sel pertama, kemudian untuk sel kedua. Program harus mencetak "YA" jika memungkinkan untuk sampai ke sel kedua dari sel pertama dengan gerakan raja, atau "TIDAK" sebaliknya.

  • Masukkan nomor kolom dan baris untuk dua sel:
    Masukkan nomor kolom dan baris untuk sel pertama dan tekan: 4 4
    Masukkan nomor kolom dan baris untuk sel kedua dan tekan: 5 5
    YA
  • "Masukkan nomor kolom dan baris untuk dua sel:"); Taruh( "Masukkan nomor kolom dan baris untuk sel pertama dan tekan: "); Mendapatkan); Dapatkan (B) ; Taruh( "Masukkan nomor kolom dan baris untuk sel kedua dan tekan: "); Dapatkan (C); Dapatkan (D); jika abs (A - C)<= 1 and then abs (B - D) <= 1 then -- perintah abs() mengembalikan yang absolut -- nilai (modulus) bilangan Put("YA"); else Put("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 Integer range 1.8; A, B, C, D: papan centang; begin Put_Line("Masukkan nomor kolom dan baris kedua sel:"); Put("Masukkan nomor kolom dan baris untuk sel pertama dan tekan: "); Mendapatkan); Dapatkan (B); Put("Masukkan nomor kolom dan baris untuk sel kedua dan tekan: "); Dapatkan (C); Dapatkan (D); jika abs(A - C)<= 1 and then abs(B - D) <= 1 then -- команда abs() возвращает абсолютное --значение (модуль) числа Put("ДА"); else Put("НЕТ"); end if; end main;

    Uskup catur bergerak secara diagonal. Diberikan dua sel papan catur yang berbeda, tentukan apakah uskup dapat berpindah dari sel pertama ke sel kedua dalam satu gerakan. Program menerima sebagai masukan empat angka dari 1 sampai 8 masing-masing, menentukan nomor kolom dan nomor baris, pertama untuk sel pertama, kemudian untuk sel kedua. Program harus menampilkan "YA" jika memungkinkan untuk sampai ke sel kedua dari sel pertama dengan gerakan uskup, atau "Tidak" sebaliknya.

  • Masukkan nomor kolom dan baris untuk dua sel:
    Masukkan nomor kolom dan baris untuk sel pertama dan tekan: 4 4
    Masukkan nomor kolom dan baris untuk sel kedua dan tekan: 5 5
    YA
  • dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; dengan Ada.Text_IO ; gunakan Ada.Text_IO ; procedure main adalah subtype checkBoard adalah Integer range 1 ..8 ; A, B, C, D: papan centang; mulai Put_Line( "Masukkan nomor kolom dan baris untuk dua sel:"); Taruh( "Masukkan nomor kolom dan baris untuk sel pertama dan tekan: "); Mendapatkan); Dapatkan (B) ; Taruh( "Masukkan nomor kolom dan baris untuk sel kedua dan tekan: "); Dapatkan (C); Dapatkan (D); jika abs (a - c) = abs (b - d) maka Put("YA" ); else Put("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 Integer range 1.8; A, B, C, D: papan centang; begin Put_Line("Masukkan nomor kolom dan baris kedua sel:"); Put("Masukkan nomor kolom dan baris untuk sel pertama dan tekan: "); Mendapatkan); Dapatkan (B); Put("Masukkan nomor kolom dan baris untuk sel kedua dan tekan: "); Dapatkan (C); Dapatkan (D); jika abs(a - c) = abs(b - d) maka Put("YA"); else Put("TIDAK"); berakhir jika; akhir utama;

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

    Format data masukan:
    Program menerima sebagai masukan empat angka dari 1 sampai 8 masing-masing, menentukan nomor kolom dan nomor baris, pertama untuk sel pertama, kemudian untuk sel kedua.
    Format output:
    Program harus menampilkan YA jika dimungkinkan untuk berpindah dari sel pertama ke sel kedua dengan langkah ratu, atau TIDAK sebaliknya.

    Contoh 1:
    Masukkan nomor kolom dan baris untuk dua sel:
    Masukkan nomor kolom dan baris untuk sel pertama dan tekan: 1 1
    Masukkan nomor kolom dan baris untuk sel kedua dan tekan: 2 2
    YA

    Contoh 2:
    Masukkan nomor kolom dan baris untuk dua sel:
    Masukkan nomor kolom dan baris untuk sel pertama dan tekan: 1 1
    Masukkan nomor kolom dan baris untuk sel kedua dan tekan: 2 3
    TIDAK

  • dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; dengan Ada.Text_IO ; gunakan Ada.Text_IO ; procedure Main adalah subtype checkBoard adalah Integer range 1 ..8 ; A, B, C, D: papan centang; mulai Put_Line( "Masukkan nomor kolom dan baris untuk dua sel:"); Taruh( "Masukkan nomor kolom dan baris untuk sel pertama dan tekan: "); Mendapatkan); Dapatkan (B) ; Taruh( "Masukkan nomor kolom dan baris untuk sel kedua dan tekan: "); Dapatkan (C); Dapatkan (D); jika abs (A - C) = abs (B - D) atau A = D atau B = C maka Put("YA" ); else Put("TIDAK" ); berakhir jika ; akhirUtama;

    dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; dengan Ada.Text_IO; gunakan Ada.Text_IO; procedure Main adalah subtype checkBoard adalah Integer range 1.8; A, B, C, D: papan centang; begin Put_Line("Masukkan nomor kolom dan baris kedua sel:"); Put("Masukkan nomor kolom dan baris untuk sel pertama dan tekan: "); Mendapatkan); Dapatkan (B); Put("Masukkan nomor kolom dan baris untuk sel kedua dan tekan: "); Dapatkan (C); Dapatkan (D); jika abs(A - C) = abs(B - D) atau A = D atau B = C maka Put("YA"); else Put("TIDAK"); berakhir jika; akhirUtama;

    Kuda catur bergerak dalam huruf "G" - dua kotak secara vertikal ke segala arah dan satu kotak secara horizontal, atau sebaliknya. Diberikan dua sel papan catur yang berbeda, tentukan apakah ksatria dapat berpindah dari sel pertama ke sel kedua dalam satu gerakan. Program menerima sebagai masukan empat angka dari 1 sampai 8 masing-masing, menentukan nomor kolom dan nomor baris, pertama untuk sel pertama, kemudian untuk sel kedua. Program harus menampilkan YA jika ksatria dapat berpindah dari sel pertama ke sel kedua, atau TIDAK jika tidak.

    Contoh 1:
    Masukkan nomor kolom dan baris untuk dua sel:
    Masukkan nomor kolom dan baris untuk sel pertama dan tekan: 1 1
    Masukkan nomor kolom dan baris untuk sel kedua dan tekan: 1 4
    TIDAK

    Contoh 2:
    Masukkan nomor kolom dan baris untuk dua sel:
    Masukkan nomor kolom dan baris untuk sel pertama dan tekan: 1 1
    Masukkan nomor kolom dan baris untuk sel kedua dan tekan: 8 8
    TIDAK

  • dengan Ada.Text_IO ; gunakan Ada.Text_IO ; dengan Ada.Integer_Text_IO ; gunakan Ada.Integer_Text_IO ; procedure main adalah subtype checkBoard adalah Integer range 1 ..8 ; A, B, C, D: Bilangan Bulat; mulai Put_Line( "Masukkan nomor kolom dan baris untuk dua sel:"); Taruh( "Masukkan nomor kolom dan baris untuk sel pertama dan tekan: "); Mendapatkan); Dapatkan (B) ; Taruh( "Masukkan nomor kolom dan baris untuk sel kedua dan tekan: "); Dapatkan (C); Dapatkan (D); jika abs (A - C) = 2 dan kemudian abs (B - D) = 1 maka Put("YA" ); elsif abs (A - C) = 1 lalu abs (B - D) = 2 lalu Put("YA" ); else Put("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 Integer range 1.8; A, B, C, D: Bilangan Bulat; begin Put_Line("Masukkan nomor kolom dan baris kedua sel:"); Put("Masukkan nomor kolom dan baris untuk sel pertama dan tekan: "); Mendapatkan); Dapatkan (B); Put("Masukkan nomor kolom dan baris untuk sel kedua dan tekan: "); Dapatkan (C); Dapatkan (D); jika abs(A - C) = 2 dan kemudian abs(B - D) = 1 maka Put("YA"); elsif abs(A - C) = 1 lalu abs(B - D) = 2 lalu Put("YA"); else Put("TIDAK"); berakhir jika; akhir utama;

    Cokelat berbentuk persegi panjang yang dibagi menjadi irisan N×M. Cokelat dapat dipecah sekali dalam garis lurus menjadi dua bagian. Tentukan apakah tepat K irisan dapat dipatahkan 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
    YA

    Contoh 2:
    Jumlah irisan horizontal: 2
    Jumlah irisan vertikal: 10
    Berapa banyak irisan yang harus 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 Put( "Jumlah irisan horizontal:"); Dapatkan (N) ; Taruh( "Jumlah irisan vertikal:"); Dapatkan (M) ; Taruh( "Berapa banyak irisan yang harus dipisahkan:"); Dapatkan (K) ; jika K > M * N maka --Jika sebatang coklat diminta untuk dipotong lebih dari sebatang coklat itu sendiri put("TIDAK"); elsif K rem N = 0 dan kemudian K >= N maka - Putus secara horizontal Put("YA"); elsif K rem M = 0 lalu K >= M maka - Putus secara vertikal Put("YA"); else Put("TIDAK" ); berakhir jika ; akhirUtama;

    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; begin Put("Jumlah irisan horizontal: "); Dapatkan (N); Put("Jumlah irisan vertikal: "); Dapatkan (M); Put("Berapa banyak irisan yang akan dipisahkan: "); Dapatkan (K); jika K > M * N maka --Jika sebatang coklat diminta untuk putus lebih dari batang coklat itu sendiri Put("TIDAK"); elsif K rem N = 0 lalu K >= N lalu -- Putus secara horizontal Put("YA"); elsif K rem M = 0 lalu K >= M lalu -- Putus secara vertikal Put("YA"); else Put("TIDAK"); berakhir jika; akhirUtama;

    Yasha berenang di kolam berukuran N × M meter dan lelah. Pada titik ini, ia menemukan dirinya X meter dari salah satu tepian panjang (tidak harus yang terdekat) dan Y meter dari salah satu tepian pendek. Berapa jarak minimum yang harus Yasha berenang untuk keluar dari kolam ke samping? Program menerima masukan angka N, M, X, Y. Program akan 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 setidaknya 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; -- Mendeklarasikan 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 - tepi pendek, M - tepi panjang: -- X - Jarak ke salah satu sisi panjang -- Y - Jarak ke salah satu sisi pendek Tmp: Bilangan bulat; mulai Put( "Lebar Kolam:"); Dapatkan (N) ; Taruh( "Panjang Kolam:"); Dapatkan (M) ; Taruh( "Jarak dari Yasha ke sisi yang panjang:"); Dapatkan (X) ; Taruh( "Jarak dari Yasha ke sisi pendek:"); Dapatkan (Y) ; jika N > M maka --Jika sisi-sisinya tercampur selama input, maka kami mengubah tempatnya: Tmp:=M; --Simpan panjang M ke variabel sementara M:=N; --Menetapkan variabel M nilai baru N:=Tmp; --Kembalikan panjang M dalam variabel N berakhir jika ; Tmp:=X; --Asumsikan jarak minimum adalah X jika abs(N-X)< X then --Jika jarak ke rusuk panjang kedua kurang dari X, maka Tmp:= N - X; --jarak minimum sama dengan jarak ke sisi panjang kedua berakhir jika ; jika kamu< Tmp then --Jika jarak ke tepi pendek kurang dari yang ditemukan di atas -- minimal, maka Tmp:=Y; --Jarak minimum adalah Y berakhir jika ; jika abs (M - Y)< Tmp then --Jika Anda berenang lebih dekat ke sisi pendek kedua, maka Tmp:= perut (M - Y) ; --jarak minimum sama dengan jarak ke langkan pendek kedua berakhir jika ; Taruh( "Kamu harus berenang setidaknya untuk keluar dari kolam:"); Put(Item => Tmp, Lebar => 1 ); akhirUtama;

    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 - langkan pendek, M - langkan panjang: -- X - Jarak ke salah satu langkan panjang -- Y - Jarak ke salah satu langkan pendek Tmp: Integer; mulai Put("Lebar Kolam: "); Dapatkan (N); Put("Panjang kolam : "); Dapatkan (M); Put("Jarak dari Yasha ke sisi panjang: "); Dapatkan (X); Put("Jarak dari Yasha ke tepi terpendek: "); Dapatkan (Y); jika N > M maka --Jika ujung-ujungnya tercampur selama input, maka kita ubah tempatnya: Tmp:= M; --Simpan panjang M ke dalam variabel sementara M:= N; --Menetapkan nilai baru ke variabel M N:= Tmp; --Kembalikan panjang M dalam variabel N end jika; Tmp:=X; --Asumsikan jarak minimum adalah X jika abs(N - X)< 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 =>Tmp, Lebar => 1); akhirUtama;

    Jam elektronik menunjukkan waktu dalam format h:mm:ss (00:00:00 hingga 23:59:59), yaitu, pertama jumlah jam dicatat, kemudian dua digit jumlah menit adalah wajib, maka jumlah detik dua digit adalah wajib. Jumlah menit dan detik, jika perlu, diisi ke nomor dua digit nol. N detik telah berlalu sejak awal hari. Keluarkan apa yang ditunjukkan jam. Inputnya adalah bilangan asli N, tidak melebihi 10 7 (10000000). Keluarkan jawaban dari masalah.

    Contoh masukan 1:
    3602
    Contoh keluaran 1:
    1:00:02

    Contoh masukan 2:
    129700
    Contoh keluaran 2:
    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: Long_Integer; mulai Dapatkan(N) ; j:= N / 3600 ; - Kami mendapatkan jam. Sisa pembagian dibuang N:= N - j * 3600 ; --Dapatkan sisa detik (minus jam) jika h > 24 maka --Karena jam tidak dapat menunjukkan > 24, kami menempatkan semuanya dalam bentuk yang dapat dibaca h:= h rem 24 ; --Sisa pembagian dengan 24 akan memberikan jumlah jam yang tepat elsif h = 24 maka h:= 0 ; berakhir jika ; m:= N / 60 ; --Dapatkan menit s:= N rem 60 ; --Dapatkan detik Put(Item => h, Lebar => 1 ); Taruh(":"); --Jam keluaran dan ":" jika saya< 10 then --Jika jumlah menit kurang dari 10, keluarkan 0 . di depan Put(Item => 0 , Lebar => 1 ); berakhir jika ; Put(Item => m, Lebar => 1 ); Taruh(":"); --Menit keluaran dan ":" jika saya< 10 then --Jika jumlah detik kurang dari 10, keluarkan 0 . di depan Put(Item => 0 , Lebar => 1 ); berakhir jika ; Put(Item => s, Lebar => 1 ); --Output detik akhir Main;

    dengan Ada.Long_Integer_Text_IO; gunakan Ada.Long_Integer_Text_IO; dengan Ada.Text_IO; gunakan Ada.Text_IO; prosedur Main adalah subtipe Sub_LI adalah rentang Long_Integer 1..10000000; N: Sub_LI; h, m, s: Long_Integer; mulai Dapatkan(N); j:= N / 3600; - Kami mendapatkan jam. Sisa pembagian dibuang N:= N - h * 3600; --Dapatkan sisa detik (dikurangi jam) jika h > 24 maka --Karena jam tidak dapat membaca > 24, masukkan semuanya ke dalam bentuk yang dapat dibaca h:= h rem 24; --Sisa pembagian dengan 24 akan memberikan jumlah jam yang tepat jika h = 24 maka h:= 0; berakhir jika; m:= N / 60; --Dapatkan menit s:= N rem 60; --Dapatkan detik Put(Item => h, Lebar => 1); Taruh(":"); --Jam keluaran dan ":" jika m< 10 then --Если количество минут меньше 10, выводим ведущий 0 Put(Item =>0, Lebar => 1); berakhir jika; Put(Item => m, Lebar => 1); Taruh(":"); --Menit keluaran dan ":" jika s< 10 then --Если количество секунд меньше 10, выводим ведущий 0 Put(Item =>0, Lebar => 1); berakhir jika; Put(Item => s, Lebar => 1); --Output detik akhir Main;

  • Tiga nomor diberikan. Atur mereka dalam urutan menaik.
  • Contoh masukan:
    1 2 1
    Contoh keluaran:
    1 1 2
  • 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, tengah, maks: Integer; mulai Dapatkan(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 ; --Mencari nilai maksimum maks:=A; jika B > maks maka maks:= B; berakhir jika ; jika C > maks maka maks:= C; berakhir jika ; --Mencari nilai rata-rata tengah:=A; jika B > min dan B< max then mid:= B; end if ; if C >menit dan C< max then mid:= C; end if ; Put(Item =>min, Lebar => 1 ); taruh(" "); Put(Item => tengah, lebar => 1 ); taruh(" "); Put(Item => maks, Lebar => 1 ); akhirUtama;

    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, tengah, maks: Integer; mulai Dapatkan(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; jika C > maks maka maks:= C; berakhir jika; --Mencari nilai rata-rata mid:= A; jika B > min dan B< max then mid:= B; end if; if C >menit dan C< max then mid:= C; end if; Put(Item =>min, Lebar => 1); taruh(" "); Put(Item => tengah, lebar => 1); taruh(" "); Put(Item => maks, Lebar => 1); akhirUtama;

    Ada dua kotak, yang pertama adalah A1×B1×C1, yang kedua adalah A2×B2×C2. Tentukan apakah salah satu dari kotak-kotak ini dapat ditempatkan di dalam kotak yang lain, asalkan kotak-kotak itu hanya dapat diputar 90 derajat di sekitar tepinya. Program menerima angka A1, B1, C1, A2, B2, C2 sebagai input. Program harus menampilkan salah satu baris berikut:
    - "Kotak sama" jika kotaknya sama,
    - "Kotak pertama kurang dari satu detik"Jika kotak pertama dapat ditempatkan di kotak kedua,
    - "Kotak pertama lebih dari satu detik" jika kotak kedua dapat ditempatkan di dalam yang pertama.

    Contoh 1:
    Dimensi kotak pertama: 1 2 3
    Dimensi kotak kedua: 3 2 1
    Kotak sama

    Contoh 2:
    Dimensi kotak pertama: 2 2 3
    Dimensi kotak kedua: 3 2 1
    Kotak pertama lebih besar dari yang 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, tengah, tmp: Integer; mulai Dapatkan(A1) ; Dapatkan(B1) ; Dapatkan(C1) ; Dapatkan(A2) ; Dapatkan(B2) ; Dapatkan(C2) ; --Bawa wajah sejajar dengan panjang A1 => A2, B1 => B2, C1 => C2: --A1 dan A2 adalah yang terpanjang, C1 dan C2 adalah yang terpendek -- "Putar" kotak pertama: min:=A1; tengah:=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 ; A1:=mnt; B1:=pertengahan; C1:=maks; -- "Putar" kotak kedua: min:=A2; tengah:=B2; maks:=C2; jika B2< min then mid:= min; min:= B2; end if ; if C2 < min then max:= min; min:= C2; end if ; if mid >maks lalu tmp:= pertengahan; pertengahan:=maks; maks:=tmp; berakhir jika ; A2:=mnt; B2:=tengah; C2:=maks; --Memeriksa korespondensi kotak dan menampilkan hasilnya: jika A1 = A2 dan kemudian B1 = B2 dan kemudian C1 = C2 maka Put_Line("Kotak-kotaknya sama" ); elsif A1 >= A2 lalu B1 >= B2 lalu C1 >= C2 lalu Put_Line( "Kotak pertama lebih besar dari yang kedua"); Elsif A1<= A2 and then B1 <= B2 and then C1 <= C2 then Put_Line("Kotak pertama lebih kecil dari yang kedua"); 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 A1, B1, C1, A2, B2, C2: Integer; min, maks, tengah, tmp: Integer; mulai Dapatkan(A1); Dapatkan (B1); Dapatkan (C1); Dapatkan (A2); Dapatkan (B2); Dapatkan (C2); --Sejajarkan sisi-sisinya dengan panjang A1 => A2, B1 => B2, C1 => C2: --A1 dan A2 - terpanjang, C1 dan C2 - terpendek -- "Putar" kotak pertama: min := A1 ; tengah:=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; A1:=mnt; B1:=pertengahan; C1:=maks; -- "Putar" kotak kedua: min:= A2; tengah:=B2; maks:=C2; jika B2< min then mid:= min; min:= B2; end if; if C2 < min then max:= min; min:= C2; end if; if mid >maks lalu tmp:= pertengahan; pertengahan:=maks; maks:=tmp; berakhir jika; A2:=mnt; B2:=tengah; C2:=maks; --Periksa apakah kotak cocok dan keluarkan hasilnya: jika A1 = A2 dan kemudian B1 = B2 dan kemudian C1 = C2 lalu Put_Line("Kotak sama"); elsif A1 >= A2 lalu B1 >= B2 lalu C1 >= C2 lalu Put_Line("Kotak pertama lebih besar dari kedua"); Elsif A1<= A2 and then B1 <= B2 and then C1 <= C2 then Put_Line("Первая коробка меньше второй"); end if; end main;

    Buat program yang menghitung biaya percakapan telepon jarak jauh (harga satu menit ditentukan oleh jarak ke kota tempat pelanggan berada). Data awal program adalah kode area dan durasi panggilan. Di bawah ini adalah kode beberapa kota dan tampilan layar yang disarankan saat program berjalan:

  • Hitung biaya percakapan telepon.
    Masukkan data awal:
    Kode kota -> 423
    Durasi (menit bilangan bulat) -> 3
    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: Bilangan Bulat; mulai Put_Line ("Perhitungan biaya percakapan telepon.") ; Put_Line ("Masukkan data awal:") ; Taruh ("Kode kota ->") ; Mendapatkan ( Kode ) ; Taruh ("Durasi (menit bilangan bulat) ->") ; Mendapatkan ( len ) ; kasus Kode adalah Kapan 423 => Put_Line ("Kota Vladivostok") ; Put_Line ("Harga satu menit: 4 rubel.") ; Taruh ("Biaya panggilan:") ; Taruh ( Barang => len * 4 , Lebar=> 1 ) ; Put_Line ("gosok.") ; Kapan 095 => Put_Line ("kota Moskow") ; Put_Line ("Harga satu menit: 2 rubel.") ; Taruh ("Biaya panggilan:") ; Taruh ( Barang => len * 2 , Lebar=> 1 ) ; Put_Line ("gosok.") ; Kapan 815 => Put_Line ("Kota: Murmansk") ; Put_Line ("Harga satu menit: 3 rubel.") ; Taruh ("Biaya panggilan:") ; Taruh ( Barang => len * 3 , Lebar=> 1 ) ; Put_Line ("gosok.") ; Kapan 846 => Put_Line ("Kota Samara") ; Put_Line ("Harga satu menit: 1 gosok.") ; Taruh ("Biaya panggilan:") ; Taruh ( Item => len, Lebar => 1 ) ; Put_Line ("gosok.") ; Kapan yang lain=> Letakkan ("Tidak ada kota dengan kode ini di database! Coba lagi.") ; akhir kasus; akhir utama;

    dengan Ada.Integer_Text_IO; gunakan Ada.Integer_Text_IO; dengan Ada.Text_IO; gunakan Ada.Text_IO; prosedur Utama adalah Kode, Len: Integer; begin Put_Line("Menghitung biaya panggilan telepon."); Put_Line("Masukkan data awal :"); Put("Kode kota -> "); ambil kode); Put("Durasi (menit bilangan bulat) -> "); 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."); ketika 095 => Put_Line("Kota: Moskow"); Put_Line("Harga per menit: 2 rubel."); Put("Biaya panggilan: "); Put(Item => len * 2, Lebar => 1); Put_Line("gosok."); ketika 815 => Put_Line("Kota: Murmansk"); Put_Line("Harga per menit: 3 rubel."); Put("Biaya panggilan: "); Put(Item => len * 3, Lebar => 1); Put_Line("gosok."); ketika 846 => Put_Line("Kota: Samara"); Put_Line("Harga per menit: 1 gosok."); Put("Biaya panggilan: "); Put(Item => len, Lebar => 1); Put_Line("gosok."); when others => Put("Tidak ada kota dengan kode ini di database! Coba lagi."); kasus akhir; akhirUtama;

Bagian ini menjelaskan secara singkat operator jika dan kasus, fungsi perut() dan algoritma untuk menukar variabel.

Definisi.

Ini adalah segi enam yang alasnya dua persegi yang sama, dan sisi-sisinya adalah persegi panjang yang sama

rusuk samping- Ini sisi umum dua wajah sisi yang berdekatan

Tinggi Prisma- ini adalah potongan tegak lurus terhadap alas prisma

Diagonal Prisma- segmen yang menghubungkan dua simpul dari basis yang tidak memiliki wajah yang sama

Bidang diagonal adalah bidang yang melalui diagonal prisma dan rusuk samping

Bagian diagonal - batas-batas perpotongan prisma dan bidang diagonal. Bagian diagonal prisma segi empat beraturan adalah persegi panjang

Bagian tegak lurus (bagian ortogonal)- ini adalah perpotongan prisma dan bidang yang ditarik tegak lurus terhadap sisi-sisinya

Unsur-unsur prisma segi empat beraturan

Gambar tersebut menunjukkan dua prisma segi empat biasa, yang ditandai dengan huruf yang sesuai:

  • Basa ABCD dan A 1 B 1 C 1 D 1 sama besar dan sejajar
  • Wajah samping AA 1 D 1 D, AA 1 B 1 B, BB 1 C 1 C dan CC 1 D 1 D yang masing-masing berbentuk persegi panjang
  • Permukaan samping- jumlah luas semua sisi sisi prisma
  • Permukaan total - jumlah luas semua alas dan permukaan samping (jumlah luas permukaan samping dan alas)
  • Rusuk samping AA 1 , BB 1 , CC 1 dan DD 1 .
  • Diagonal B 1 D
  • Basis diagonal BD
  • Bagian diagonal BB 1 D 1 D
  • Bagian tegak lurus A 2 B 2 C 2 D 2 .

Sifat-sifat prisma segi empat beraturan

  • Basis adalah dua persegi yang sama
  • Basisnya sejajar satu sama lain
  • Sisi-sisinya berbentuk persegi panjang.
  • Sisi wajah sama satu sama lain
  • Wajah samping tegak lurus dengan alas
  • Tulang rusuk lateral sejajar satu sama lain dan sama besar
  • Penampang tegak lurus terhadap semua rusuk sisi dan sejajar dengan alas
  • sudut bagian tegak lurus- lurus
  • Bagian diagonal prisma segi empat beraturan adalah persegi panjang
  • Tegak lurus (bagian ortogonal) sejajar dengan alas

Rumus prisma segi empat beraturan

Petunjuk untuk memecahkan masalah

Saat memecahkan masalah pada topik " benar prisma segi empat " menyiratkan bahwa:

Prisma yang benar- sebuah prisma yang alasnya terletak poligon beraturan, dan sisi-sisinya tegak lurus terhadap bidang alas. Artinya, prisma segi empat biasa berisi di alasnya kotak. (lihat di atas sifat-sifat prisma segi empat beraturan) Catatan. Ini adalah bagian dari pelajaran dengan tugas-tugas dalam geometri (bagian geometri padat - prisma). Berikut adalah tugas-tugas yang menyebabkan kesulitan dalam menyelesaikannya. Jika Anda perlu menyelesaikan masalah dalam geometri, yang tidak ada di sini - tulis di forum. Untuk menunjukkan tindakan mengekstraksi akar pangkat dua simbol yang digunakan dalam pemecahan masalah√ .

Tugas.

Pada sebuah prisma segi empat beraturan, luas alasnya 144 cm 2 dan tingginya 14 cm. Hitunglah diagonal prisma dan luasnya permukaan penuh.

Keputusan.
Segi empat beraturan adalah persegi.
Dengan demikian, sisi alasnya akan sama dengan

144 = 12cm.
Dari mana diagonal alasnya berasal? prisma segiempat akan sama dengan
√(12 2 + 12 2 ) = √288 = 12√2

Diagonal prisma kanan bentuk dengan diagonal alas dan tinggi prisma segitiga siku-siku. Dengan demikian, menurut teorema Pythagoras, diagonal prisma segi empat beraturan yang diberikan akan sama dengan:
((12√2) 2 + 14 2 ) = 22 cm

Menjawab: 22 cm

Tugas

Hitunglah luas prisma segi empat beraturan jika diagonalnya 5 cm dan diagonal sisi sisinya 4 cm.

Keputusan.
Karena alas prisma segi empat beraturan adalah persegi, maka sisi alasnya (dilambangkan dengan a) ditemukan oleh teorema Pythagoras:

A2 + a2 = 5 2
2a 2 = 25
a = 12,5

Ketinggian sisi muka (dilambangkan sebagai h) kemudian akan sama dengan:

H 2 + 12,5 \u003d 4 2
jam 2 + 12,5 = 16
j 2 \u003d 3.5
h = 3,5

Luas permukaan total akan sama dengan jumlah luas permukaan lateral dan dua kali luas alas

S = 2a 2 + 4ah
S = 25 + 4√12,5 * 3,5
S = 25 + 4√43,75
S = 25 + 4√(175/4)
S = 25 + 4√(7*25/4)
S \u003d 25 + 10√7 51,46 cm 2.

Jawaban: 25 + 10√7 51,46 cm 2.

Mobil dengan transmisi manual yang disingkat transmisi manual, hingga saat ini berjumlah mayoritas mutlak antara kendaraan lain dengan berbeda.

Selain itu, kotak mekanis (manual) tetap menjadi perangkat yang cukup umum untuk mengubah dan mentransmisikan torsi mesin saat ini. Selanjutnya, kita akan berbicara tentang bagaimana "mekanik" diatur dan bekerja, seperti apa skema gearbox jenis ini, serta apa kelebihan dan kekurangan dari solusi ini.

Baca di artikel ini

Diagram dan fitur transmisi manual

Pertama-tama, jenis gearbox ini disebut mekanis karena fakta bahwa unit semacam itu melibatkan pemindahan gigi manual. Dengan kata lain, pada mobil dengan transmisi manual, pengemudi sendiri yang mengganti persneling.

Kami pergi lebih jauh. Kotak "mekanik" diinjak, yaitu torsi berubah dalam langkah. Banyak pengendara tahu bahwa gearbox sebenarnya memiliki roda gigi dan poros, tetapi tidak semua orang mengerti cara kerja unit.

Jadi, panggung (juga merupakan transmisi) adalah sepasang roda gigi (gigi penggerak dan penggerak) yang berinteraksi satu sama lain. Setiap tahap tersebut memberikan rotasi dengan satu atau lain kecepatan sudut, yaitu, ia memiliki rasio roda giginya sendiri.

Di bawah rasio roda gigi harus dipahami sebagai rasio jumlah gigi roda gigi yang digerakkan dengan jumlah gigi pada roda gigi penggerak. Dalam hal ini, tahapan kotak yang berbeda menerima rasio roda gigi yang berbeda. Roda gigi terendah (gigi rendah) memiliki rasio roda gigi terbesar, dan paling banyak langkah tinggi(upshift) memiliki rasio gigi terkecil.

Menjadi jelas bahwa jumlah langkah sama dengan jumlah roda gigi pada kotak tertentu (gearbox empat kecepatan, lima kecepatan, dll.) sebelumnya 4 kecepatan kotak mekanik gigi secara bertahap memudar ke latar belakang.

Perangkat transmisi manual

Jadi, meskipun ada banyak desain kotak seperti itu dengan fitur-fitur tertentu, namun, tahap awal dua jenis utama dapat dibedakan:

  • gearbox tiga poros;
  • kotak dua poros;

Gearbox manual tiga poros biasanya dipasang pada mobil berpenggerak roda belakang, sedangkan gearbox dua poros ditempatkan pada mobil penumpang berpenggerak roda depan. Pada saat yang sama, perangkat gearbox mekanis dari tipe pertama dan kedua dapat sangat berbeda.

Mari kita mulai dengan kotak mekanis tiga poros. Kotak ini berisi:

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

Roda gigi dengan sinkronisasi dipasang pada poros. Mekanisme perpindahan gigi juga disertakan dalam gearbox. Ditentukan elemen penyusun terletak di rumah gearbox, yang juga disebut rumah gearbox.

Tugas poros penggerak adalah membuat sambungan dengan kopling. Poros penggerak memiliki slot untuk cakram kopling. Adapun torsi, torsi yang ditentukan dari poros input ditransmisikan melalui roda gigi, yang terikat secara kaku dengannya.

Mempengaruhi kerja poros perantara, poros ini terletak sejajar dengan poros input gearbox, sekelompok roda gigi dipasang di atasnya, yang berada dalam ikatan yang kaku. Pada gilirannya, poros yang digerakkan dipasang pada sumbu yang sama dengan poros penggerak.

Instalasi semacam itu diimplementasikan menggunakan bantalan ujung pada poros penggerak. Bantalan ini termasuk poros yang digerakkan. Kelompok roda gigi (gear block) pada poros yang digerakkan tidak memiliki ikatan yang kaku dengan poros itu sendiri dan oleh karena itu berputar bebas di atasnya. Dalam hal ini, kelompok roda gigi dari poros perantara, poros yang digerakkan dan roda gigi dari poros penggerak berada dalam ikatan yang konstan.

Sinkronisasi (kopling sinkronisasi) 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 gaya gesekan.

Sinkronisasi berada dalam ikatan yang kaku dengan poros yang digerakkan, dan juga memiliki kemampuan untuk bergerak di sepanjang poros dalam arah memanjang karena sambungan spline. Gearbox modern memiliki cengkeraman sinkronisasi di semua roda gigi.

Jika kita mempertimbangkan mekanisme perpindahan gigi pada gearbox tiga poros, seringkali mekanisme ini dipasang pada bodi unit. Desainnya mencakup tuas kontrol, penggeser, dan garpu.

Badan kotak (kotak engkol) terbuat dari paduan aluminium atau magnesium, perlu untuk memasang poros dengan roda gigi dan mekanisme, serta sejumlah bagian lainnya. Ada juga oli roda gigi (gearbox oil) di housing gearbox.

  • Untuk memahami cara kerja gearbox mekanis (manual) tipe tiga poros, mari umumnya Mari kita lihat cara kerjanya. Saat tuas persneling pada posisi netral, tidak ada transmisi torsi dari mesin ke roda penggerak kendaraan.

Setelah pengemudi menggerakkan tuas, garpu akan menggerakkan kopling sinkronisasi dari satu atau beberapa gigi lainnya. Sinkronisasi kemudian akan menyelaraskan kecepatan sudut gigi yang diinginkan dan poros yang digerakkan. Kemudian cincin roda gigi kopling akan terhubung dengan cincin roda gigi serupa, yang akan memastikan bahwa roda gigi terkunci pada poros yang digerakkan.

Kami juga menambahkan bahwa gigi mundur mobil disediakan oleh gigi mundur gearbox. Dalam hal ini, gigi idle mundur yang dipasang pada gandar terpisah memungkinkan arah putaran dibalik.

Gearbox manual dua poros: perangkat dan prinsip operasi

Setelah berurusan dengan apa yang terdiri dari gearbox tiga poros, mari beralih ke gearbox dua poros. Tipe ini Gearbox memiliki dua poros di perangkatnya: primer dan sekunder. Poros input adalah yang mengemudi, yang sekunder adalah yang digerakkan. Roda gigi dan sinkronisasi dipasang pada poros. Juga di bak mesin kotak adalah roda gigi utama dan diferensial.

Poros penggerak bertanggung jawab untuk menghubungkan dengan kopling, dan ada juga blok roda gigi pada poros dalam ikatan yang kaku dengan poros. Poros yang digerakkan terletak sejajar dengan poros penggerak, sedangkan roda gigi poros yang digerakkan berada dalam ikatan konstan dengan roda gigi poros penggerak, dan juga berputar bebas pada poros itu sendiri.

Juga, roda gigi penggerak dari roda gigi utama dipasang dengan kaku pada poros yang digerakkan, dan kopling sinkronisasi terletak di antara roda gigi poros yang digerakkan. Kami menambahkan, untuk mengurangi ukuran girboks, serta menambah jumlah gir, di girboks modern, 2 atau bahkan 3 poros seringkali dapat dipasang alih-alih satu poros yang digerakkan.

Pada setiap poros tersebut, roda gigi dari roda gigi utama dipasang secara kaku, sedangkan roda gigi tersebut memiliki ikatan yang kaku dengan roda gigi yang digerakkan. Ternyata desainnya benar-benar mengimplementasikan 3 roda gigi utama.

Roda gigi utama itu sendiri, serta diferensial pada perangkat gearbox, mengirimkan torsi dari poros sekunder ke roda penggerak. Dalam hal ini, diferensial juga dapat memberikan rotasi roda seperti itu ketika roda penggerak berputar pada kecepatan sudut yang berbeda.

Adapun mekanisme perpindahan gigi, pada gearbox dua poros dikeluarkan secara terpisah, yaitu di luar bodi. Kotak terhubung ke mekanisme switching dengan kabel atau batang khusus. Koneksi yang paling umum adalah dengan kabel.

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

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

Selanjutnya, tuas bergerak secara longitudinal, dan gaya mengalir ke kabel perpindahan gigi. Tuas yang sesuai secara horizontal menggerakkan batang dengan garpu, garpu pada batang menggantikan sinkronisasi, yang menyebabkan pemblokiran roda gigi poros yang digerakkan.

Akhirnya, kami mencatat bahwa juga kotak mekanis jenis yang berbeda memiliki perangkat pemblokiran tambahan yang mencegah masuknya dua roda gigi pada saat yang sama atau pelepasan roda gigi yang tidak terduga.

Baca juga

Menekan kopling sebelum menghidupkan mesin: kapan harus menekan kopling dan dalam hal apa tidak disarankan untuk melakukannya. Petunjuk Bermanfaat dan rekomendasi.

  • Penyebab perpindahan gigi yang sulit pada mesin yang sedang berjalan. Oli transmisi dan level di gearbox, keausan sinkronisasi dan roda gigi kotak, kopling.