مشروع: تعريف Struct جهة الاتصال
جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 50 من 63.
التحدي
سهلستقوم ببناء أداة بسيطة لإدخال جهات الاتصال توضح كيف يمكن للهياكل (structs) تنظيم البيانات ذات الصلة في التطبيقات الواقعية.
قم بإنشاء برنامج بلغة C يحدد هيكل Contact لتخزين معلومات الاتصال. يجب أن يقوم برنامجك بما يلي:
- تعريف
structباسمContactمع الأعضاء التاليين:- مصفوفة أحرف
nameبحجم 50 لتخزين اسم جهة الاتصال - مصفوفة أحرف
phoneبحجم 20 لتخزين رقم هاتف جهة الاتصال - مصفوفة أحرف
emailبحجم 40 لتخزين البريد الإلكتروني لجهة الاتصال - عدد صحيح
ageلتخزين عمر جهة الاتصال
- مصفوفة أحرف
- في الدالة الرئيسية (main function):
- إنشاء متغير من نوع
Contactباسمperson - قراءة قيم المدخلات التالية وتعيينها لأعضاء الهيكل باستخدام عامل النقطة (dot operator):
- قراءة سلسلة نصية للاسم وتعيينها لـ
person.name - قراءة سلسلة نصية لرقم الهاتف وتعيينها لـ
person.phone - قراءة سلسلة نصية للبريد الإلكتروني وتعيينها لـ
person.email - قراءة عدد صحيح للعمر وتعيينه لـ
person.age
- قراءة سلسلة نصية للاسم وتعيينها لـ
- بعد قراءة جميع القيم، قم بإجراء فحوصات التحقق التالية:
- إذا كان العمر أقل من 0 أو أكبر من 120، اطبع
Invalid ageوأنهِ البرنامج - إذا كان طول رقم الهاتف أقل من 10 أحرف، اطبع
Invalid phone numberوأنهِ البرنامج
- إذا كان العمر أقل من 0 أو أكبر من 120، اطبع
- إذا نجحت جميع عمليات التحقق، اطبع معلومات الاتصال بهذا التنسيق الدقيق:
Contact Information:Name: [name]Phone: [phone]Email: [email]Age: [age]
- حساب وطباعة معلومات إضافية:
- اطبع طول الاسم باستخدام
strlen()بالتنسيق:Name length: [length] - حدد فئة العمر واطبعها:
- إذا كان العمر بين 0 و 17:
Category: Minor - إذا كان العمر بين 18 و 64:
Category: Adult - إذا كان العمر 65 أو أكثر:
Category: Senior
- إذا كان العمر بين 0 و 17:
- اطبع طول الاسم باستخدام
- إنشاء متغير من نوع
يختبر هذا التحدي فهمك لتعريف الهياكل (struct)، والتصريح عن الأعضاء بأنواع بيانات وأحجام مناسبة، والوصول إلى أعضاء الهيكل باستخدام عامل النقطة، والتحقق من صحة المدخلات، واستخدام دوال السلاسل النصية مثل strlen() مع أعضاء الهيكل. ستتدرب على إنشاء هيكل بيانات عملي يمكن أن يكون بمثابة أساس لنظام إدارة جهات الاتصال.
جرّب بنفسك
#include <stdio.h>
#include <string.h>
// TODO: قم بتعريف هيكل (struct) باسم Contact هنا
int main() {
// TODO: قم بإنشاء متغير من نوع Contact باسم person
// قراءة قيم المدخلات
scanf("%s", /* TODO: التعيين لـ person.name */);
scanf("%s", /* TODO: التعيين لـ person.phone */);
scanf("%s", /* TODO: التعيين لـ person.email */);
scanf("%d", /* TODO: التعيين لـ person.age */);
// TODO: اكتب كود التحقق والإخراج أدناه
return 0;
}جميع دروس Logic & Flow
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية6إدارة الذاكرة
ذاكرة Stack مقابل Heapالتخصيص الديناميكي - malloc()استخدام sizeof() للتخصيصالتحقق من فشل التخصيصتحرير الذاكرة باستخدام free()التخصيص باستخدام calloc()ملخص: المصفوفة الديناميكية9مشروع: إدخال جهة اتصال بسيطة
مشروع: تعريف Struct جهة الاتصالدالة لإنشاء جهة اتصال