פרויקט: הגדרת מבנה איש קשר
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 50 מתוך 63.
אתגר
קלתבנו כלי פשוט להזנת אנשי קשר, שמדגים כיצד מבנים יכולים לארגן נתונים קשורים ביישומים מהעולם האמיתי.
צרו תוכנית C שמגדירה מבנה Contact לאחסון פרטי קשר. התוכנית שלכם צריכה:
- להגדיר מבנה
structבשםContactעם האיברים הבאים:- מערך תווים
nameבגודל 50 לאחסון שם איש הקשר - מערך תווים
phoneבגודל 20 לאחסון מספר הטלפון של איש הקשר - מערך תווים
emailבגודל 40 לאחסון כתובת האימייל של איש הקשר - מספר שלם
ageלאחסון הגיל של איש הקשר
- מערך תווים
- בפונקציה הראשית:
- ליצור משתנה
Contactבשםperson - לקרוא את ערכי הקלט הבאים ולהקצות אותם לאיברי המבנה באמצעות אופרטור הנקודה:
- לקרוא מחרוזת עבור השם ולהקצות אותה ל-
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:
- להדפיס את אורך השם באמצעות
- ליצור משתנה
האתגר הזה בודק את ההבנה שלכם בהגדרת מבנה, בהצהרה על איברים עם טיפוסי נתונים וגדלים מתאימים, בגישה לאיברי מבנה באמצעות אופרטור הנקודה, באימות קלט ובשימוש בפונקציות מחרוזת כמו strlen() עם איברי מבנה. תתרגלו יצירת מבנה נתונים שימושי שיכול לשמש בסיס למערכת לניהול אנשי קשר.
נסו בעצמכם
#include <stdio.h>
#include <string.h>
// TODO: הגדירו כאן את המבנה 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;
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1יסודות המצביעים
מהו מצביע?הכרזה על מצביעיםאופרטור לקיחת הכתובת (&)אופרטור ביטול ההפניה (*)מצביעי NULLסיכום: יסודות המצביעים2מצביעים ומערכים
שמות מערכים כמצביעיםאיברי מערך ומצביעיםאריתמטיקה של מצביעיםהשוואת מצביעיםסיכום: מעבר על מערך באמצעות מצביעים5מצביעים ופונקציות
העברה לפי ערךהעברת מצביעים לפונקציותשינוי משתנים באמצעות מצביעיםדוגמה קלאסית: החלפההעברת מערכים לפונקציותחזרה: ארגומנטים של מצביעי פונקציה3מערכי תווים ומחרוזות
מחרוזות כמערכי charתו הסיום nullקלט מחרוזת באמצעות scanfשימוש ב־strlen()שימוש ב־strcpy()שימוש ב־strcat()שימוש ב־strcmp()סיכום: פונקציות מחרוזת בסיסיות6ניהול זיכרון
זיכרון מחסנית לעומת ערימההקצאה דינמית - malloc()שימוש ב-sizeof() להקצאהבדיקת כישלון בהקצאהשחרור זיכרון באמצעות free()הקצאה באמצעות calloc()סיכום: מערך דינמי9פרויקט: רישום איש קשר פשוט
פרויקט: הגדרת מבנה איש קשרפונקציה ליצירת איש קשרתרגלו בעצמכם: קומפיילר C אונליין