التحويل إلى أحرف كبيرة
جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 23 من 63.
التحدي
سهلقم بتوسيع برنامج أداة النص المساعدة الخاص بك من الدرس السابق لإضافة وظيفة التحويل إلى أحرف كبيرة (uppercase). يجب أن يقوم برنامجك بما يلي:
- مطالبة المستخدم بإدخال جملة قصيرة عن طريق طباعة:
Enter a sentence:(بدون سطر جديد في النهاية) - الإعلان عن مصفوفة أحرف (character array) تسمى
sentenceتحتوي على 200 عنصر لتخزين المدخلات - استخدام
scanfمع محدد التنسيق%sلقراءة كلمة واحدة من المستخدم - طباعة الكلمة المخزنة بالتنسيق:
You entered: [word] - استخدام
strlen()لحساب العدد الإجمالي للأحرف في الكلمة - طباعة عدد الأحرف بالتنسيق:
Character count: [count] - طباعة الطول باستخدام
strlen()بالتنسيق:Length: [length] - التكرار عبر كل حرف في الكلمة باستخدام حلقة (loop) لعد الحروف المتحركة (vowels)
- لكل حرف، تحقق مما إذا كان حرفاً متحركاً (a, e, i, o, u) سواء كان صغيراً أو كبيراً
- الاحتفاظ بعداد جاري للحروف المتحركة التي تم العثور عليها
- طباعة عدد الحروف المتحركة بالتنسيق:
Vowel count: [count] - طباعة
Uppercase:ثم استخدام حلقة لتحويل وطباعة كل حرف في الكلمة إلى أحرف كبيرة باستخدام دالةtoupper()
تذكر تضمين ملف الترويسة <string.h> لاستخدام دالة strlen() وملف الترويسة <ctype.h> لاستخدام دالة toupper().
حول toupper():
دالة toupper() من <ctype.h> تقوم بتحويل حرف واحد إلى ما يعادله من الأحرف الكبيرة. إذا كان الحرف كبيراً بالفعل أو لم يكن حرفاً، فسيتم إرجاعه دون تغيير.
مثال: toupper('a') تعيد 'A'، و toupper('Z') تعيد 'Z'.
يمكنك استخدامها داخل حلقة لتحويل كل حرف على حدة: printf("%c", toupper(sentence[i]));
هام: رسالة المطالبة Enter a sentence: يجب ألا يتبعها سطر جديد. استخدم printf("Enter a sentence: "); بدون \n.
يجب أن يعرض مخرجك النتائج بالتنسيق التالي:
Enter a sentence: You entered: [word]
Character count: [count]
Length: [length]
Vowel count: [count]
Uppercase: [WORD]على سبيل المثال، إذا كانت المدخلات هي:
Programmingيجب أن يكون مخرجك:
Enter a sentence: You entered: Programming
Character count: 11
Length: 11
Vowel count: 3
Uppercase: PROGRAMMINGيبني هذا التحدي على الدرس السابق من خلال إضافة وظيفة التحويل إلى أحرف كبيرة باستخدام دالة toupper() من مكتبة <ctype.h>. ستحتاج إلى استخدام حلقة للتكرار عبر كل حرف في السلسلة النصية وتحويله إلى حرف كبير، ثم طباعة النتيجة المحولة.
جرّب بنفسك
#include <stdio.h>
#include <string.h>
int main() {
printf("Enter a sentence: \n");
char sentence[200];
scanf("%s", sentence);
printf("You entered: %s\n", sentence);
int char_count = strlen(sentence);
printf("Character count: %d\n", char_count);
int length = strlen(sentence);
printf("Length: %d\n", length);
int vowel_count = 0;
for (int i = 0; i < strlen(sentence); i++) {
char c = sentence[i];
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ||
c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U') {
vowel_count++;
}
}
printf("Vowel count: %d\n", vowel_count);
return 0;
}جميع دروس Logic & Flow
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية