تحديات برمجيةالتحدي الثاني - حل التمرين الرابع بلغة C++
المطلوب
قم بإنشاء برنامج يطلب من المستخدم إدخال ثلاث نصوص و يخزنهم في ثلاث متغيرات نصية هي S1
, S2
و S3
و بعدها ينفذ التالي:
- يخبره ما إن كان دمج
S1
معS2
يساويS3
أم لا. - يخبره ما إن كان
S1
يمثل جزء منS2
أو يساويه ( أيS1 == s2
). - إذا كان طول
S1
أكبر من طولS2
قم بإضافة نصS2
علىS1
و خزن الناتج في متغير نصي جديد إسمهS4
. - إذا كان طول
S2
أكبر من طولS1
قم بإضافة نصS1
علىS2
و خزن الناتج في متغير نصي جديد إسمهS4
. - يخبره ما إن كان
S2
يمثل جزء من ثاني نصف فيS1
. - يعرض له الأحرف الموجودة في أول نصف في
S1
.
الحل بلغة C++
#include <iostream>
#include <string>
int main() {
std::string S1, S2, S3, S4="";
std::cout << "Enter S1: ";
getline(std::cin, S1);
std::cout << "Enter S2: ";
getline(std::cin, S2);
std::cout << "Enter S3: ";
getline(std::cin, S3);
std::cout << "---------------------------------------\n";
// Part 1
std::cout << "The concatenation of S1 and S2 is equal S3? "
<< ((S3 == (S1 + S2)) ? "True" : "False")
<< "\n";
// Part 2
std::cout << "S1 is part of S2 or S1=S2? "
<< ((S2.find(S1, 0) != std::string::npos) ? "True" : "False")
<< "\n";
// Part 3
if (S1.length() > S2.length()) {
S4 = S2 + S1;
}
// Part 4
if (S2.length() > S1.length()) {
S4 = S1 + S2;
}
// Part 5
std::cout << "S2 is part of the second half of S1? "
<< ((S1.find(S2, S1.length() / 2) != std::string::npos) ? "True" : "False")
<< "\n";
// Part 6
std::cout << "The first half characters of S1 are: ";
for (int i = 0; i < S1.length() / 2; i++) {
std::cout << S1[i];
}
char end; std::cin >> end;
return 0;
}
#include <iostream>
#include <string>
int main() {
std::string S1, S2, S3, S4="";
std::cout << "Enter S1: ";
getline(std::cin, S1);
std::cout << "Enter S2: ";
getline(std::cin, S2);
std::cout << "Enter S3: ";
getline(std::cin, S3);
std::cout << "---------------------------------------\n";
// Part 1
std::cout << "The concatenation of S1 and S2 is equal S3? "
<< ((S3 == (S1 + S2)) ? "True" : "False")
<< "\n";
// Part 2
std::cout << "S1 is part of S2 or S1=S2? "
<< ((S2.find(S1, 0) != std::string::npos) ? "True" : "False")
<< "\n";
// Part 3
if (S1.length() > S2.length()) {
S4 = S2 + S1;
}
// Part 4
if (S2.length() > S1.length()) {
S4 = S1 + S2;
}
// Part 5
std::cout << "S2 is part of the second half of S1? "
<< ((S1.find(S2, S1.length() / 2) != std::string::npos) ? "True" : "False")
<< "\n";
// Part 6
std::cout << "The first half characters of S1 are: ";
for (int i = 0; i < S1.length() / 2; i++) {
std::cout << S1[i];
}
char end; std::cin >> end;
return 0;
}
سنحصل على النتيجة التالية في حال تم إدخال نفس القيم التي تم تعليمها باللون الأصفر عند التشغيل.
Enter S1: Mhamad
Enter S2: Harmush
Enter S3: MhamadHarmush
---------------------------------------
The concatenation of S1 and S2 is equal S3? True
S1 is part of S2 or S1=S2? False
S2 is part of the second half of S1? False
The first half characters of S1 are: Mha
Enter S2: Harmush
Enter S3: MhamadHarmush
---------------------------------------
The concatenation of S1 and S2 is equal S3? True
S1 is part of S2 or S1=S2? False
S2 is part of the second half of S1? False
The first half characters of S1 are: Mha