58. Ikkita gap berilgan. Ular nechta umumiy belgilarga egaligini aniqlovchi funksiya tuzing.
Ikkita gap berilgan va ularning nechta umumiy belgilarga ega ekanligini topish uchun, quyidagi C++ funksiyasi yozilishi mumkin:
C++
#include
#include
#include
#include
using namespace std;
int count_common_words(string text1, string text2) {
vector words1, words2;
string word;
// 1-ga matndan so'zlar ro'yxatini yaratamiz
for (char c : text1) {
if (isalnum(c)) {
word += tolower(c);
}
else if (!word.empty()) {
words1.push_back(word);
word = "";
}
}
if (!word.empty()) {
words1.push_back(word);
}
// 2-ga matndan so'zlar ro'yxatini yaratamiz
word = "";
for (char c : text2) {
if (isalnum(c)) {
word += tolower(c);
}
else if (!word.empty()) {
words2.push_back(word);
word = "";
}
}
if (!word.empty()) {
words2.push_back(word);
}
// Umumiy so'zlar ro'yxatini yaratib, nechta ekanligini hisoblaymiz
vector common_words;
set_intersection(words1.begin(), words1.end(), words2.begin(), words2.end(), back_inserter(common_words));
return common_words.size();
}
int main() {
string text1, text2;
cout << "Enter the first text: ";
getline(cin, text1);
cout << "Enter the second text: ";
getline(cin, text2);
int count = count_common_words(text1, text2);
cout << "The texts have " << count << " common words." << endl;
return 0;
}
Bu kodda, count_common_words funksiyasi ikki gapni qabul qilib, ularning umumiy so'zlarini hisoblaydi. Ushbu funksiyada, har bir matndan so'zlar ro'yxatini yaratish uchun isalnum funksiyasi ishlatiladi. So'zlar ro'yxatlarini yaratishdan so'ng, set_intersection funksiyasi yordamida ularning umumiy elementlarini topib chiqarish uchun ularni qo'shish uchun bo's ro'yxat yaratiladi. Natijaga chiqarish uchun umumiy so'zlar sonini qaytaradi.
Asosiy funksiyada foydalanuvchidan ikki gap kiritishi so'raladi va count_common_words funksiyasini chaqiradi. Natijani konsolga chiqaradi.
Do'stlaringiz bilan baham: |