Rumah >pembangunan bahagian belakang >C++ >Semak sama ada nombor berakhir dengan nombor lain
Cabaran pengaturcaraan biasa ialah menentukan sama ada nombor berakhir dengan nombor lain. Untuk menyelesaikan masalah ini, anda perlu mengenal pasti digit terakhir nombor yang diberikan dan menyemak sama ada ia sepadan dengan nombor lain. Banyak aplikasi, termasuk pemprosesan data, manipulasi rentetan dan analisis berangka, sering melibatkan operasi sedemikian. Kaedah pengaturcaraan termasuk menukar nombor kepada rentetan, aritmetik modulo, dan penggunaan operator logik digunakan untuk menyelesaikan cabaran ini. Topik ini harus menarik minat pemula dan pengaturcara pertengahan yang ingin menjadi lebih baik dalam memanipulasi nombor dan menyelesaikan masalah algoritma.
Terdapat banyak cara untuk menyemak sama ada nombor berakhir dengan nombor lain. Berikut adalah dua kaedah biasa -
Gunakan operator modulo (%)
Gunakan penukaran rentetan
Jika dua nombor dibahagikan, pengendali modulo mengembalikan bakinya. Menggunakan operator modulo, kita boleh menentukan sama ada satu nombor berakhir dengan nombor lain, menggunakan nombor kedua sebagai pembahagi. Jika hasilnya sama dengan nombor kedua, nombor pertama berakhir dengan nombor kedua.
Pengendali matematik yang biasa digunakan dipanggil operator modulo, yang mengembalikan baki operasi bahagi dan diwakili oleh simbol %. Aplikasi yang berguna ialah menggunakan operator modulo untuk mengesahkan sama ada satu nombor berakhir dengan nombor lain.
Kita boleh menggunakan operator modulo untuk mendapatkan nilai yang tinggal selepas membahagikan satu nombor "n" dengan nombor lain "m" untuk menentukan sama ada kedua-dua nombor itu berturut-turut. Jika bakinya sama dengan m, maka n berakhir dengan m. Jika ia tidak sama dengan m, maka ia tidak.
Sintaks kaedah ini adalah seperti berikut −
Fungsi untuk menyemak sama ada nombor berakhir dengan nombor lain
bool endsWith(int number, int ending) { int digits = floor(log10(ending)) + 1;
Dapatkan bilangan digit nombor yang berakhir
int divisor = pow(10, digits);
Kira pembahagi
int remainder = number % divisor;
Kira baki
return remainder == ending; }
Kembalikan benar jika bakinya sama dengan nombor pengakhiran
Di sini, nombor ialah nombor asal dan berakhir ialah nombor untuk menyemak sama ada ia berada di hujung nombor. Ungkapan floor(log10(berakhir)) + 1 mengira bilangan digit dalam berakhir, manakala pow(10, digit) mengira pembahagi. Baki nombor dibahagikan dengan divisor kemudiannya dikira menggunakan operator modulo %. Jika bakinya sama dengan berakhir, fungsi itu kembali benar, menunjukkan bahawa nombor berakhir dengan berakhir.
modulo digunakan dalam prosedur C++ berikut untuk menentukan sama ada integer berakhir dengan nombor lain −
Langkah 1 - Masukkan nombor dan akhir Nombor, dua nombor yang hendak dibandingkan.
Langkah 2 - Gunakan operator modulo (%) untuk mengira baki nombor dibahagikan dengan 10.
Langkah 3 − Kembalikan benar jika nombor berakhir dengan digit akhir dan bakinya sama dengan digit akhir.
Langkah 4 - Jika tidak, bahagikan nombor dengan 10 dan ulangi langkah 1-2 sehingga nombor itu sama dengan 0.
Langkah 5 - Jika gelung berakhir tanpa padanan, nombor itu tidak berakhir dengan hujung Num, jadi palsu dikembalikan.
Contoh menggunakan operator modulo untuk menyemak sama ada satu nombor berakhir dengan nombor lain −
Dalam contoh ini, fungsi endsWith menerima dua nombor parameter integer dan berakhir. Kemudian gunakan operator modulo % untuk menentukan sama ada digit terakhir nombor adalah sama dengan berakhir. Jika ya, fungsi mengembalikan benar, jika tidak ia mengembalikan palsu.
Sebelum memanggil kaedah endsWith, kami terlebih dahulu menentukan nombor dan berakhir dalam fungsi utama. Jika kaedah kembali benar, kami mencetak mesej yang menyatakan bahawa nombor itu berakhir dengan berakhir. Jika tidak, cetak mesej yang menyatakan bahawa nombor itu tidak berakhir dengan berakhir.
Adalah penting untuk ambil perhatian bahawa ini hanyalah contoh yang sangat mudah, terdapat banyak cara yang berbeza (seperti kaedah manipulasi rentetan) untuk menentukan sama ada sesuatu nombor berakhir dengan nombor lain. Pengendali modulo ialah teknik yang popular dan berkesan.
#include <iostream> using namespace std; bool endsWith(int number, int ending) { return (number % 10) == ending; // Check if last digit is equal to ending } int main() { int number = 12345; int ending = 5; if (endsWith(number, ending)) { cout << number << " ends with " << ending << endl; } else { cout << number << " does not end with " << ending << endl; } return 0; }
12345 ends with 5
Menggunakan fungsi manipulasi rentetan, teknik ini menyemak sama ada hujung dua integer sepadan dengan menukarnya kepada rentetan. Pendekatan biasa ialah menggunakan fungsi to_string() untuk menukar nombor kepada rentetan dan kemudian cari sama ada beberapa aksara terakhir rentetan pertama sepadan dengan beberapa aksara terakhir rentetan kedua.
Berikut ialah sintaks untuk kaedah penukaran rentetan dalam C++ yang menyemak sama ada nombor berakhir dengan nombor lain, tanpa kod sebenar:
Tukar nombor kepada rentetan
string num1_str = to_string(num1); string num2_str = to_string(num2);
Periksa sama ada beberapa aksara terakhir rentetan adalah sama
bool ends_with = num1_str.substr(num1_str.size() - num2_str.size()) == num2_str;
Berikut ialah algoritma C++ untuk menentukan sama ada nombor berakhir dengan nombor lain −
Langkah 1 - Mulakan dengan mencipta rentetan untuk dua integer ini.
Langkah 2 - Katakan integer kedua dipanggil n, tentukan panjangnya.
步骤 3 - 如果第一个数字的长度小于 n,则返回 false。
步骤 4 − 将 substr 方法应用于第一个数字,以提取最后 n 位数字。
第五步 - 使用stoi方法将第二个数字和检索到的子字符串转换为整数。比较这两个整数
步骤6 - 如果它们相等,则返回true。如果不相等,则返回false。
使用 to_string() 函数将这两个数字转换为字符串。然后使用 substr() 函数提取第一个字符串的最后几个字符,使其与第二个字符串的长度相匹配。然后使用 == 运算符将这些提取的字符与第二个字符串进行比较。
#include <iostream> #include <string> using namespace std; int main() { int num1 = 123456; int num2 = 56; string str1 = to_string(num1); string str2 = to_string(num2); if (str1.substr(str1.length() - str2.length()) == str2) { cout << "Number 1 ends with number 2" << endl; } else { cout << "Number 1 does not end with number 2" << endl; } return 0; }
Number 1 ends with number 2
总之,使用substr()函数比较每个字符串的最后几个字符,或者使用模运算来分离每个数字的最后几位数并直接比较它们,这两种方法都可以判断一个数字是否以另一个数字结尾。这两种策略都很有效,并且可以使用基本的C++编程结构来实践。许多需要模式匹配的数值和计算应用都可以从这个任务中受益。
Atas ialah kandungan terperinci Semak sama ada nombor berakhir dengan nombor lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!