המצגת נטענת. אנא המתן

המצגת נטענת. אנא המתן

מת"מ מעבדה 7-8 רשימות.

מצגות קשורות


מצגת בנושא: "מת"מ מעבדה 7-8 רשימות."— תמליל מצגת:

1 מת"מ מעבדה 7-8 רשימות

2 תרגיל 1 מצורפת תכנית לקריאת מידע מקובץ לצמתים של רשימה מקושרת.
1. כתוב פונקציה Write_Student_To_File אשר מקבלת מצביע לצומת בודד ומצביע לקובץ ומדפיסה את נתוני הצומת לקובץ. 2. כתוב פונקציה FromListToFile אשר מקבלת מצביע לראש רשימה מקושרת, מצביע לקובץ ומספר שלם N ומדפיסה לקובץ את הצמתים בהם ממוצע הציונים גדול מ-N. הפונקציה נעזרת בפונקציית Write_Student_To_File. אסור להשתמש בקובץ עזר או מערך לשמירת מבנים. למשל, עבור קובץ List.txt וקריאה FromListToFile(Head,t,85); ישתנה תוכן קובץ List.txt כמו בדוגמא הקבצים List.txt ו-lab7_8_1.c מצורפים

3 תרגיל 2 בקובץ input_price.txt שמורים נתונים של מוצרים: לכל מוצר מספר שלם ומספר ממשי. התכנית קולטת ממקלדת נתונים של מוצר חדש: מספר שלם ומספר ממשי וגם מספר סידורי של המוצר החדש, ובעזרת פונקציית AddNewItem מוסיפה את נתונים המוצר החדש לקובץ המקורי במקום המצוין. typedef struct Item{ int num; float price; }*PItem; void Get_Lost(char*); void AddNewItem(char* fname, int n, PItem a); void main(){ PItem a=(PItem)malloc(sizeof(struct Item)); if(!a)Get_Lost(“Erro of memmory"); printf("Enter a number and the price\n"); scanf("%d%f",&(a->num),&(a->price)); AddNewItem("input_price.txt",3,a); _getch(); { הפונקציה מקבלת מחרוזת של שם הקובץ, מספר סידורי של הנתון החדש ופרטים של המוצר החדש. למשל, עבור קובץ input_price.txt הנתון, הקלט וה-main הנתונים, ישתנה הקובץ כמו בדוגמא הקלט: התוצאה הקבצים input_price.txt ו-lab7_8_2.c מצורפים

4 תרגיל 3 בקובץ input_price1.txt שמורים נתונים של מוצרים )כמו בתרגיל הקודם). התכנית קולטת ממקלדת נתונים של מוצר חדש: מספר שלם ומספר ממשי וגם מספר סידורי של המוצר החדש, ובעזרת פונקציית AddNewItem מוסיפה את נתוני המוצר החדש לקובץ המקורי במקום המצוין. התכנית קוראת את הטקסט לתוך רשימה מקושרת. (התכנית מצורפת – lab7_8_3.c). כתוב פונקציית AddNewItem להוספת צומת חדש לרשימה מקושרת. הפונקציה מקבלת מספר סידורי של הצומת החדש ושני מספרים לשדות שלו. ה-prototype של הפונקציה: void AddNewItem(PItem *head,PItem *tail,int n,int a,float b); כתוב פונקציית WriteListToFile להעתקת רשימה מקושרת לקובץ. כתוב פונקציה למחיקת רשימה מקושרת והפעל אותה בתכנית. דוגמאות ההרצה והתכנית הראשית מופיעות בשקופיות הבאות הקבצים input_price1.txt ו-lab7_8_3.c מצורפים

5 תרגיל 3 – הסבר ודוגמאות התכנית קוראת את הטקסט לתוך רשימה מקושרת.
התכנית קולטת ממקלדת נתונים של מוצר חדש: מספר שלם ומספר ממשי וגם מספר סידורי של המוצר החדש פונקציית AddNewItem מוסיפה צומת חדש לרשימה מקושרת. פונקציית WriteListToFile מעתיקה רשימה מקושרת לקובץ בסוף התכנית קובץ המקור משתנה:

6 תרגיל 3 – דוגמאות הרצה void main(){ int a, n; float b;
PItem head=NULL, tail=NULL; FILE *in=fopen("input_price1.txt","r"); if(!in)Get_Lost("input file is wrong"); CreateList(&head, &tail, in); PrintList(head,"\nThe Old List:\n"); printf("\n\nEnter a number and the price\n"); scanf("%d%f", &a, &b); printf("\nEnter a place for the new item:"); scanf("%d", &n); AddNewItem(&head, &tail, n, a, b); PrintList(head,"\nThe New List:\n"); …. WriteListToFile(head, in); { תרגיל 3 – דוגמאות הרצה

7 תרגיל 4 התכנית הנתונה קוראת נתונים מקובץ ThreeLists.txt לרשימה.
typedef struct Item{ int num; struct Item* next; }Item; typedef struct List{ ….. }List; void AddAsFirst(Item* ptr, List* L); void AddAsLast(Item* ptr, List* L); void main(){ List L, Posit, Negat; FILE *in=fopen("ThreeLists.txt", "r"); if(!in)Get_Lost("input file is wrong"); L.head=L.tail=NULL; L.count=0; CreateList(&L, in); PrintList(L, "\nMy List:\n"); התכנית הנתונה קוראת נתונים מקובץ ThreeLists.txt לרשימה. הגדר סוג של מבנה הרשימה (מבנה המנהל) לפי התכנית הנתונה. כתוב פונקציית AddAsFirst להוספת צומת בתחילת הרשימה. הפונקציה מקבלת צומת להוספה ומצביע למבנה הרשימה כתוב פונקציית AddAsLast להוספת צומת בסוף הרשימה. הפונקציה מקבלת צומת להוספה ומצביע למבנה הרשימה כתוב פונקציה למחיקת רשימה מקושרת והפעל אותה בתכנית. הקבצים ThreeLists.txt ו-lab7_8_4.c מצורפים

8 תרגיל 4 - המשך void AddAsFirst(Item* ptr, List* L);
typedef struct List{ ….. }List; typedef struct Item{ int num; struct Item* next; }Item; void AddAsFirst(Item* ptr, List* L); void AddAsLast(Item* ptr, List* L); void MoveToAnotherList(List* orig, List* one, List* two); void main(){ List L, Posit, Negat; FILE *in=fopen("ThreeLists.txt", "r"); if(!in)Get_Lost("input file is wrong"); L.head=L.tail=NULL; L.count=0; ….. CreateList(&L, in); PrintList(L, "\nMy List:\n"); MoveToAnotherList(&L, &Posit, &Negat); PrintList(Posit, "\n\nThe Positive List:\n"); PrintList(Negat, "\n\nThe Negative List:\n\n"); fclose(in); } כתוב פונקציית MoveToAnotherList אשר כל צומת עם ערך חיובי מעבירה מרשימה מקורית לרשימה אחת ואת כל צומת עם ערך שלילי מעבירה לרשימה אחרת. הפונקציה משתמשת בפונקציות מהסעיפים הקודמים. שים לב: בתהליך העברת צמתים אף צומת לא נמחק – הוא "עוזב" את הרשימה המקורית ומצטרף לרשימה אחרת. הריצו את התכנית עבור שתי דוגמאות:


הורד את "ppt "מת"מ מעבדה 7-8 רשימות.

מצגות קשורות


מודעות Google