المخرج النهائي
جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 24 من 63.
التحدي
سهلأكمل برنامج أدوات النص الخاص بك من خلال دمج جميع الميزات التي قمت ببنائها في الدروس السابقة في مخرج واحد شامل. يجب أن يقوم برنامجك بما يلي:
- مطالبة المستخدم بإدخال جملة قصيرة عن طريق طباعة:
Enter a sentence:(بدون سطر جديد في النهاية — استخدمprintf("Enter a sentence: ")، وليسprintf("Enter a sentence: \n")) - الإعلان عن مصفوفة أحرف (character array) باسم
sentenceتحتوي على 200 عنصر لتخزين المدخلات - استخدام
scanfمع محدد التنسيق%sلقراءة كلمة واحدة من المستخدم - تخزين الكلمة الأصلية في مصفوفة أحرف منفصلة لأغراض العرض
- حساب العدد الإجمالي للأحرف باستخدام
strlen() - عد الحروف المتحركة (vowels) من خلال المرور على كل حرف والتحقق مما إذا كان يطابق أي حرف متحرك (a, e, i, o, u) في كل من الحالتين الصغيرة والكبيرة
- تحويل الكلمة إلى أحرف كبيرة باستخدام دالة
toupper()داخل حلقة تكرارية (loop) - عرض جميع النتائج بتنسيق نظيف ومنظم مع وضع كل معلومة في سطر منفصل
تذكر تضمين ملف الترويسة <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: ");
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;
}جميع دروس Logic & Flow
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية