למה להשתמש במערך של מבנים?
שקול מקרה שבו אנחנו צריכים לאחסן את הנתונים של 5 תלמידים. אנו יכולים לאחסן אותו באמצעות המבנה כפי שניתן להלן.
#include struct student { char name[20]; int id; float marks; }; void main() { struct student s1,s2,s3; int dummy; printf('Enter the name, id, and marks of student 1 '); scanf('%s %d %f',s1.name,&s1.id,&s1.marks); scanf('%c',&dummy); printf('Enter the name, id, and marks of student 2 '); scanf('%s %d %f',s2.name,&s2.id,&s2.marks); scanf('%c',&dummy); printf('Enter the name, id, and marks of student 3 '); scanf('%s %d %f',s3.name,&s3.id,&s3.marks); scanf('%c',&dummy); printf('Printing the details.... '); printf('%s %d %f ',s1.name,s1.id,s1.marks); printf('%s %d %f ',s2.name,s2.id,s2.marks); printf('%s %d %f ',s3.name,s3.id,s3.marks); }
תְפוּקָה
Enter the name, id, and marks of student 1 James 90 90 Enter the name, id, and marks of student 2 Adoms 90 90 Enter the name, id, and marks of student 3 Nick 90 90 Printing the details.... James 90 90.000000 Adoms 90 90.000000 Nick 90 90.000000
בתכנית לעיל, שמרנו נתונים של 3 תלמידים במבנה. עם זאת, מורכבות התכנית תגדל אם יהיו 20 תלמידים. במקרה כזה, נצטרך להכריז על 20 משתני מבנה שונים ולאחסן אותם אחד אחד. זה תמיד יהיה קשה מכיוון שנצטרך להכריז על משתנה בכל פעם שנוסיף תלמיד. לזכור את השם של כל המשתנים היא גם משימה מסובכת מאוד. עם זאת, c מאפשרת לנו להכריז על מערך של מבנים באמצעותו נוכל להימנע מהכרזה על משתני המבנה השונים; במקום זאת נוכל ליצור אוסף המכיל את כל המבנים המאחסנים מידע של ישויות שונות.
מערך מבנים ב-C
מערך של מבנים ב ג ניתן להגדיר כאוסף של משתני מבנים מרובים כאשר כל משתנה מכיל מידע על ישויות שונות. המערך של מבנים ב-C משמשים לאחסון מידע על ישויות מרובות מסוגי נתונים שונים. מערך המבנים ידוע גם כאוסף המבנים.
בוא נראה דוגמה למערך של מבנים המאחסן מידע של 5 תלמידים ומדפיס אותו.
#include #include struct student{ int rollno; char name[10]; }; int main(){ int i; struct student st[5]; printf('Enter Records of 5 students'); for(i=0;i<5;i++){ printf(' enter rollno:'); scanf('%d',&st[i].rollno); name:'); scanf('%s',&st[i].name); } printf(' student information list:'); for(i="0;i<5;i++){" printf(' rollno:%d, name:%s',st[i].rollno,st[i].name); return 0; < pre> <p> <strong>Output:</strong> </p> <pre> Enter Records of 5 students Enter Rollno:1 Enter Name:Sonoo Enter Rollno:2 Enter Name:Ratan Enter Rollno:3 Enter Name:Vimal Enter Rollno:4 Enter Name:James Enter Rollno:5 Enter Name:Sarfraz Student Information List: Rollno:1, Name:Sonoo Rollno:2, Name:Ratan Rollno:3, Name:Vimal Rollno:4, Name:James Rollno:5, Name:Sarfraz </pre> <hr></5;i++){>
5;i++){>