ABA


"אשמח לעזרה עם רשימה מקושרת בC"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10689 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10689
asco88 
חבר מתאריך 17.6.04
26757 הודעות, דרג אמינות חבר זה
   14:06   10.05.12   
אל הפורום  
  אשמח לעזרה עם רשימה מקושרת בC  
 
הפונקציה:

// make a purchase by one team of one player
void OrderPlayer (node *lHead, team teamS{TEAMS}, int TeamNumber, int pRol, int pPay)
{
node *temp;

if (teamS.budjet < pPay) // checking if the team have the amount of money they are willing to pay
printf ("Sorry, this team doesn't have much money!\n");

else // if the team have enough money in order to pay the specified amount
{
while(lHead != NULL) // keep printing while there're still more nodes to print
if ((lHead -> rol == pRol) && (lHead -> price <= pPay)) // test if current player fits the requirements
{
temp = (node*) malloc (sizeof (node)); // create new node to keep the player address
temp = lHead; // keep current player's node

temp -> tnext = teamS{TeamNumber}.players; // updating temp's next to be the team's players pointer
teamS{TeamNumber}.players = temp; // putting the temp instead of the older players pointer of the team

teamS{TeamNumber}.budjet -= pPay; // updating the team's balance after the purchase

printf ("%s", temp -> name);
return;
}
else
lHead = lHead -> next;
}
}

(במקום סוגריים מסולסלים, אמורים להיות מרובעים בתוך הקוד)

עכשיו הבעיה היא כזו
אפשר לראות שאחד הפרמטרים הוא מערך בשם teamS, שבעצם מקבל רשימת קבוצות בעלות פרמטרים שונים, אחד הפרמטרים הוא מצביע לאיבר כמו הlHead באותה פונקציה.
אם אני יוצר את הרשימה כמו שעשיתי פה, כלומר teamS{TeamNumber}.players = temp

פשוט לא קורה כלום, עקבתי אחרי כל שלב, ופשוט כלום לא קורה פה.
לעומת זאת, אם במקום מערך, אני משתמש במשתנה בודד, זה עובד.

יש לכם מושג למה זה ככה?
תודה רבה


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  איך מוגדר הטיפוס team? TheKid 10.05.12 15:36 1
     ככה: asco88  10.05.12 18:05 2
         שמע תנסה להעיף את הTEAMS מתוך הסוגריים TheKid 10.05.12 19:33 3
             אותו דבר.. asco88  10.05.12 20:20 4
  בכ''א הצלחתי בסוף לפתור את הבעייה asco88  13.05.12 00:11 5

       
TheKid לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.10.07
17978 הודעות, 1 פידבק, 2 נקודות
   15:36   10.05.12   
אל הפורום  
  1. איך מוגדר הטיפוס team?  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות, דרג אמינות חבר זה
   18:05   10.05.12   
אל הפורום  
  2. ככה:  
בתגובה להודעה מספר 1
 

// struct of each node in the list of teams
typedef struct team
{
int budjet;
struct node *players;
} team;

תודה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TheKid לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.10.07
17978 הודעות, 1 פידבק, 2 נקודות
   19:33   10.05.12   
אל הפורום  
  3. שמע תנסה להעיף את הTEAMS מתוך הסוגריים  
בתגובה להודעה מספר 2
 
   שאתה מעביר את המערך לפונקציה..
אני חושש שזו הבעיה
כלומר ככה:

void OrderPlayer (node *lHead, team teamS[], int TeamNumber, int pRol, int pPay)

אבל בכלל הייתי ממליץ להעביר שם by pointer
ולא ככה

כלומר ככה

void OrderPlayer (node *lHead, team *teamS, int TeamNumber, int pRol, int pPay)

מכיוון שלא קראתי את כל הפונקציה אני לא יודע איזה שיטה עדיפה לך

אז כדאי שתבדוק


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות, דרג אמינות חבר זה
   20:20   10.05.12   
אל הפורום  
  4. אותו דבר..  
בתגובה להודעה מספר 3
 
תראה, הוספתי פה צילום מסך של חלון הAutos שלי
http://www.yourgalleries.net/images/7753386615.png

ביחד עם התוכנית באותו רגע, ניסיתי קצת לשחק עם הקוד, אבל הבעיה נשארת.
אני מעוניין בעצם, שמשתנה הplayers תחת teamS יהפוך להיות אותו דבר כמו lHead, שנמצא 4 שורות מעליו.
ניסיתי בעצם לעבוד כמו שעובדים עם יצירה חדשה של כל NODE, אולי אני פשוט טועה ולא ככה עובדים עם זה?
תודה רבה.

תודה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות, דרג אמינות חבר זה
   00:11   13.05.12   
אל הפורום  
  5. בכ''א הצלחתי בסוף לפתור את הבעייה  
בתגובה להודעה מספר 0
 
בסוף יצרתי מערך של 12 פוינטרים מאותו סוג של השחקן, שכל אחד מהווה מצביע לראש הרשימה של קבוצה מסוימת (לפי מספר סידורי). פחות יעיל, אבל לפחות זה עובד
את שאר הנתונים של הקבוצה הכנסתי במערך נפרד.


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

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

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



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