עבור לתוכן

צריך עזרה בתכנות תרגיל ב C

Featured Replies

פורסם

שלום לכולם..

מדובר במשחק בול פגיעה...

יש לי תוכנית מסוימת בנויה עם PROTTYPES ו MAIN ..כאשר אני אמור לכתוב את תוכן 8 הפונקציות הנתונות ללא שום מגע בתוכנית ה MAIN

הנתונה...

ישבתי ימים רבים על התרגיל אח יש מספר בעיות...

הראשונה היא בפונקצייה הראשונה כאשר יש בעיות בין הקריאה ככל הנראה של המחרוזת מהמשתמש...

צירפתי את שני הקבצים..

תודה למי שעוזר......

[attachment deleted by admin]

פורסם

שלום לך

אם הבנתי נכון,ת'התחלה לפחות..,אתה אמור לקלוט מחרוזת מהמשתמש שתישמר ב-strRequest(המוגדרת בMAIN, ולא הבנתי למה יש צורך במחרוזת בגודל 256 :nixweiss:, למה לא מספיק מקסימום 5 לפי המילה הארוכה CHECK???)

בכל אופן

void GetRequest(char strInp[])      //קולטת מחרוזת עם בקשת המשתמש
{
char strInp aa[256]={0};
printf ("please enter:\n CHECK\n ALL\n QUIT\n");
scanf("%s",strInp);


}

למה אתה מגדיר שוב מחרוזת בתוך הפונ'?

char strInp aa[256]={0};

-האם הגדרת כאן מחרוזת ששמה strInp aa??מזתומרת? הרי א"א שם בעל 2 מילים ורווח?..

נראלי שצריך להוריד את שורת ההגדרה בפונ' ואז בעית הקריאה תיפתר

[br]פורסם בתאריך: 2.01.2009 בשעה 02:29:23


int Same(char str1[],char str2[])	// בודקת שוויון מחרוזות 
{
char strRequest[256]={0};
int same=0 ;
int i;
strcmp (strRequest,STR_CHECK);

//if (strcmp==0)
// same=1 ;
// return same;

}

אם צריך לבדוק אם 2 המחרוזות שנשלחו כפרמטרים שוות או לא,לא הבנתי מה עשית.. למה מוגדר I ? ולמה SAME? נראלי זה עוד בעיה להגדיר משתנה בשם הפונ', char strRequest[256]={0}; -לא נראלי שזה אפשרי להצהיר ככה במחרוזת,ואם הגדרת כאן ואתה הכנסת ערכה אז למה משווה אותה?

בשביל להשוות בין 2 המחרוזות שקיבל ,מה יותר פשוט מבדיקה:

[br]פורסם בתאריך: 2.01.2009 בשעה 02:46:34




if strcmp(str1,str2)
return 1
else
return 0

[br]פורסם בתאריך: 2.01.2009 בשעה 03:00:27


אני מקווה שעזרתי במשו וסליחה אם נשמעתי ככה מעפנה, זה השעה ללכת :sleep:
פורסם
  • מחבר

תודה רבה על העזרה...

לגבי גודל המחרוזת כפי ששמת לב בMAIN זה משהו שנתון לי...ואסור לי לשנות...באמת שאני לא יודע למה הכריזו שם על מחרוזת כזו ארוכה..

אז ככה : לגבי char strInp aa[256]={0}; לא התכוונתי לשלוח את זה כך... זה פשוט נסיון שעשיתי ונשאר בטעות בקובץ ..בכל אופן..

אם אני מגדיר מחרוזת שוב בתוך הפונקציה זה לא אמור להוות בעיה נכון?

לגב int same=0 ; זה גם כן על דרך שחשבתי התחלה אך בסוף לא השתמשתי בהם...שוב השארתי אותם כי זה לא אמור להפריע ורציתי למחוק רק בסוף

int i;

בכל אופן ביצעתי את השינויים...אך עדיין יש בעיות..לא משנה מה אני מקליד לו הוא ניגש לפונקציה וכותב לי תקליד 4 ספרות...

עידכנתי את הקובץ..

תודה!

פורסם
  • מחבר

?

פורסם

?

אני בחורה דתיה שומרת תורה ומצוות ובין היתר גם שבת, נא להתחשב... :)

אם אני מגדיר מחרוזת שוב בתוך הפונקציה זה לא אמור להוות בעיה נכון?

זה בעיה כשזה שם זהה לפרמטר שנשלח לפונ' זו.

לא משנה מה אני מקליד לו הוא ניגש לפונקציה וכותב לי תקליד 4 ספרות...

מז'תומרת? ' וכותב לי תקליד 4 ספרות ' איפה??

טוב אלך לבדוק איך זה נתקע שם...

פורסם

בואינה הוא עבר לך קימפול כי לי הראה כמה בעיות...

והיה חסר include>string.h< לפקודה strcmp

שמת לב גם שמבדיל בין אותיות קטנות לגדולות ז"א strcmp מבדיל בין all ל-ALL

וטעות שלי ,בפונ' שמשווה בין 2 מחרוזות אם רוצים שיחזיר 1 כששוות ואחרת 0 אז צריך להחליף בreturn כך:

  if (strcmp(str1,str2))
return 0 ;
else
return 1 ;

כי strcmp מחזיר 0 כאשר המחרוזות שוות

תקן את זה,נראלי זה עשה בעיה...

פורסם
  • מחבר

שוב תודה על התגובה...ומצטער על הלחץ...

לגבי ההשוואה בין 2 המחרוזות שמתי לב לזה ..אבל תודה...

וכן הוא עובר לי קימפול...

פורסם
  • מחבר

טוב תודה בכל אופן על הניסיונות..

כבר לא ממש הכרחי לפתור את זה..

תודה לך.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים