(C++) Penyataan gelung dengan syarat - manakala


Gelung dengan syarat. pernyataan while
Mengkaji gelung for, kami mengatakan bahawa jika bilangan ulangan sebarang tindakan diketahui, maka anda boleh memendekkan atur cara menggunakan operator gelung for. Tetapi bagaimana jika bilangan ulangan tidak diketahui? Dan ini berlaku agak kerap.
 
Contoh
Mengingat terjemahan nombor daripada sistem nombor perpuluhan kepada yang lain, kita perlu membahagikan nombor (dan kemudian hasil pembahagian) dengan asas sistem nombor sehingga kita mendapat sifar dalam jawapan. Berapa kali kami akan berkongsi tidak diketahui. Dan terdapat banyak program yang melaksanakan algoritma sedemikian. 

Bagaimanakah kita boleh melaksanakan algoritma jika kita tidak mengetahui bilangan lelaran yang tepat?

Untuk kes sedemikian dalam pengaturcaraan, terdapat pernyataan gelung dengan syarat. 
Dalam bahasa pengaturcaraan Python, pernyataan gelung bersyarat bermula dengan perkataan while dan mempunyai struktur berikut.
sementara (<condition>) 
{
  badan gelung
}

Seperti yang kita sedia maklum:
- syarat ialah ungkapan yang boleh menilai sama ada benar atau salah (seperti dalam pernyataan bersyarat);
- badan gelung ialah perintah yang perlu diulang, ia diinden.

Bagaimana pengendali berfungsi?
1. Pertama, program menilai keadaan dalam kurungan selepas perkataan while. Jika syarat dipenuhi (benar), maka atur cara melaksanakan pernyataan (s) yang terkandung dalam badan gelung.
2. Selepas pelaksanaan badan gelung selesai, atur cara kembali untuk menyemak keadaan dan menyemaknya semula.
3. Tindakan ini (menyemak keadaan - melaksanakan badan gelung) diulang sehingga keadaan menjadi palsu.
4. Jika syarat tidak dipenuhi serta-merta (palsu) semasa pelaksanaan pertama kenyataan ini, maka program tidak akan melaksanakan badan gelung.

Menganalisis kerja operator ini, haruslah jelas bahawa badan gelung mesti mengandungi operator yang mempengaruhi keadaan.
Contohnya, dalam gelung, nilai pembolehubah yang digunakan dalam keadaan mungkin ditambah.

Contoh program yang akan kami panggil "Silent count".
Mari jadikan program dikira sebagai ganti kita, contohnya, sehingga 10.
Program ini harus mengeluarkan frasa "Mula" dan "Selesai", dan antara tindakan ini memaparkan nombor yang sedang dikira.

Contohnya, seperti ini:
Mulakan
1 2 3 4 5 6 7 8 9 10
Selesai

Program yang menggunakan gelung while akan kelihatan seperti ini: #include<iostream> menggunakan ruang nama std; utama() { int i; cout << "Mula\n"; i = 1; manakala(i <= 10) { cout << i << " "; i++; // Operator yang mempengaruhi perubahan pembolehubah dalam keadaan } cout << "\nSelesai"; }
Dalam program ini, kami memberikan nilai kepada pembolehubah i = 1 - titik permulaan.
Selanjutnya, selagi kita mempunyai nilai pembolehubah i tidak lebih besar (iaitu, kurang daripada atau sama dengan) nilai yang kita perlukan, kita: 
 1. paparkan nilai pembolehubah i;
 2. tingkatkan nilai pembolehubah i sebanyak 1 - operator ini mempengaruhi nilai keadaan dalam kurungan. Pembolehubah i ditambah, bermakna pada satu ketika keadaan i <= 10 akan menjadi palsu. Ini akan berlaku apabila i menjadi sama dengan 11. Dalam kes ini, badan gelung tidak lagi akan dilaksanakan dan program akan melaksanakan pernyataan seterusnya selepas gelung, i.e. cout << "\nSelesai".

Tugas
Anda mesti memasukkan nombor (biar kurang daripada 3,000,000) dan tentukan bilangan digit di dalamnya.
 
Idea penyelesaian
Kita hanya perlu memotong digit terakhir secara berurutan daripada nombor (ini boleh dilakukan dengan mengurangkan nombor sebanyak 10 kali, menggunakan pembahagian integer sebanyak 10), dan setiap kali kita perlu menambah pembilang. 

Akibatnya, selepas kita memotong semua digit nombor, kita akan mendapat nombor mereka di kaunter.

Algoritma ini boleh dirumuskan seperti berikut:
Sehingga nombor itu sifar, kurangkan sebanyak 10 dan tambahkan pembilang sebanyak 1 setiap kali.
 
Program akan kelihatan seperti ini. #include<iostream> menggunakan ruang nama std; utama() { intn, kiraan; cin>> n; kiraan = 0; manakala (n != 0) { kira++; n = n / 10; } cout << "Nombor-" << n<< " mengandungi " << kira << " digit";   } Anda perlu tahu program ini dengan hati, kerana. berdasarkannya, banyak masalah lain yang berkaitan dengan pengiraan nombor mengikut digit diselesaikan.

nombor (n) counter
123 0
12 1
1 2
0 3

Tugas

Input program ialah aliran data — jujukan integer yang berakhir dengan sifar (sifar tidak termasuk dalam jujukan). Anda perlu mencari jumlah unsur jujukan ini.
 
Algoritma penyelesaian
jumlah=0 input x // masukkan nombor pertama manakala x != 0 // tanda tamat input ditetapkan dalam keadaan,  nc // iaitu sehingga anda memasukkan sifar    jumlah = jumlah + x // anda boleh melakukan sesuatu dengan nombor asal. // Anda boleh menambah semakan nombor untuk beberapa syarat, dsb.    masukan x // masukkan nombor seterusnya kts jumlah cetak //hasil keputusan