ABA


"בעיות קומפילציה בנושא רשימה(List) בשפת c"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #13927 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13927
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   11:09   16.02.07   
אל הפורום  
  בעיות קומפילציה בנושא רשימה(List) בשפת c  
 
   אשמחח אם תעזרו לי בבעיות שהתגלו ובעבודה עם המיקום של הרשימה(p1,p2,p3)
צירפתי את קבצי המקור בראר
אני יודע שלא השתמשתי נכון בפונקציה, אשמח אם תתקנו אותי
הכוונה שלי:
לאתחל שני רשימות L1 ו L2 - לבנות אותם מהתחלה ושיהיו בהם ערכים
והפונקציה מזג_רשימות(L1,L2) תמזג בניהם בהתאמה, תכניס את L2 אחרי L1 (שירשור)

הקוד של התכנית הראשית (פה הבעיות):


#include <stdio.h>

#include "listD.h"

int main()

{

list_type L1,L2;

list_build(&L1);

list_build(&L2);

pour_list(L1,L2)

{

list_info_type x,y;

list_type L1,L2,L3;

pos_type p1,p2,p3;

p1=list_next(L1,list_anchor(L1));

p2=list_next(L2,list_anchor(L2));

list_init(&l3);

p3=list_anchor(L3);

while (p1!=list_end(L1)&&p2!=list_end(L2))

{

list_retrieve(L1,P1,&x);

list_retrieve(L2,P2,&y);

if(x<y)

{

list_insert(&L3,P3,x);

p1=list_next(L1,P1);

p3=list_next(L3,P3);

}

else if(y<x)

{

list_insert(&L3,P3,y);

p2=list_next(L2,P2);

p3=list_next(L3,P3);

else{

list_insert(&L3,p3,x);

p1=list_next(L1,P1);

p2=list_next(L2,P2);

p3=list_next(L3,P3);

}

if(p1==list_end(L1))

{

while(p2!=list_end(L2))

{

list_retrieve(L2,P2,&y);

list_insert(L3,p3,y);

p2=list_next(L2,P2);

p3=list_next(L3,P3);

}

}

else while(P1!=list_end(L1))

{

list_retrieve(L1,P1,&y);

list_insert(L3,p3,y);

p1=list_next(L1,P1);

p3==list_next(L3,P3);

}

return L3;

}

return 0;

}

קבצי המקור:



                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  OK , אני לא עובד עם C, אני עובד עם רשימות בפסקל, אבל אנסה: FireAngel 16.02.07 13:59 1

       
FireAngel

דרג אמינות חבר זה
   13:59   16.02.07   
אל הפורום  
  1. OK , אני לא עובד עם C, אני עובד עם רשימות בפסקל, אבל אנסה:  
בתגובה להודעה מספר 0
 
   אז ככה, אני ארשום לך דברים מהותיים "שצעקו" לי:
1. בתוכנית הראשית (ב-main), מזה list_build?
אין דבר כזה בממשק העברי (אולי זה משהו של C).

2. ב-ELSE הלפני האחרון :


else{

list_insert(&L3,p3,x);

p1=list_next(L1,P1);

p2=list_next(L2,P2);

p3=list_next(L3,P3);

}


למה קידמת גם את p1 וגם את p2? או שתכניס את y או שתקדם רק את p1.

3. ה-IF..ELSE האחרון, הוא מיותר, כיוון שהתנאי בלולאת ה-WHILE "שומר" עליך ולא נותן להכנס אם זה סוף רשימה.
שואל למה? כי בתנאי אתה אומר "כל עוד p2 שונה מסוף-רשימה(L1) בצע".
כנ"ל לגבי ה-WHILE השני.
לכן תוריד את ה-IF..ELSE המיותרים האלה. הנה מה שאני מתכוון:


if(p1==list_end(L1))

{

4. אני לא יודע איך זה ב-C, אבל איך הפונקציה pour_list "משתלבת" בתוך ה-Main?
לא קראת לה, לא כלום והיא משתלבת ואין לי מושג למה.

====

אזכיר שוב, אני לא מתכנת ב-C.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net