المخرج النهائي
جزء من قسم المنطق وتدفق التنفيذ في رحلة C على Coddy. الدرس 24 من 63.
التحدي
سهلأكمِل برنامج أدوات النصوص بدمج جميع الميزات التي أنشأتها في الدروس السابقة ضمن مخرجات واحدة شاملة. ينبغي أن يقوم برنامجك بما يلي:
- يطلب من المستخدم إدخال جملة قصيرة بطباعة:
Enter a sentence:متبوعة بسطر جديد، كما في الدروس السابقة - يُعرّف مصفوفة محارف باسم
sentenceتحتوي على 200 عنصر لتخزين الإدخال - يستخدم
scanfمع محدِّد التنسيق%sلقراءة كلمة واحدة من المستخدم - يخزّن الكلمة الأصلية في مصفوفة محارف منفصلة لأغراض العرض
- يحسب العدد الإجمالي للمحارف باستخدام
strlen() - يعدّ أحرف العلة بالتكرار على كل محرف والتحقق مما إذا كان يطابق أيًّا من أحرف العلة (a, e, i, o, u) بالأحرف الصغيرة والكبيرة
- يحوّل الكلمة إلى أحرف كبيرة باستخدام الدالة
toupper()ضمن حلقة - يعرض جميع النتائج بتنسيق واضح ومنظم، مع وضع كل معلومة في سطر منفصل
تذكّر تضمين الترويسة <string.h> لدوال السلاسل النصية، والترويسة <ctype.h> لدوال تحويل المحارف.
ينبغي أن تعرض مخرجاتك جميع النتائج بالتنسيق الدقيق التالي:
Enter a sentence:
Original: [word]
Characters: [count]
Vowels: [count]
Uppercase: [WORD]مهم: يتبع المحث Enter a sentence: سطر جديد، كما في الدروس السابقة. تبدأ الكلمة Original: في السطر التالي.
على سبيل المثال، إذا كان الإدخال هو:
Helloفينبغي أن تكون مخرجاتك:
Enter a sentence:
Original: Hello
Characters: 5
Vowels: 2
Uppercase: HELLOيجمع هذا التحدي النهائي كل ميزات معالجة النصوص التي طوّرتها خلال المشروع: التعامل مع الإدخال، وعدّ المحارف باستخدام strlen()، وعدّ أحرف العلة باستخدام الحلقات والعبارات الشرطية، والتحويل إلى أحرف كبيرة باستخدام toupper(). ينبغي أن يعرض البرنامج ملخصًا واضحًا ومنظمًا لنتائج تحليل النص.
جرّب بنفسك
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char sentence[200];
printf("Enter a sentence: \n");
scanf("%s", sentence);
printf("You entered: %s\n", sentence);
int length = strlen(sentence);
printf("Character count: %d\n", length);
printf("Length: %d\n", length);
int vowel_count = 0;
for (int i = 0; i < length; 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);
printf("Uppercase: ");
for (int i = 0; i < length; i++) {
printf("%c", toupper(sentence[i]));
}
printf("\n");
return 0;
}جميع دروس المنطق وتدفق التنفيذ
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسيةتدرّب بنفسك: مترجم C عبر الإنترنت