שפת C - עזרה בהבנת משימת הגשה - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שפת C - עזרה בהבנת משימת הגשה


sharonp

Recommended Posts

היי, בוקר טוב ! :-*

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

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

tlmtd5eo4ngz.jpg

jei4ymn1bdtm.jpg

תודה לעוזרים ויום נעים

קישור לתוכן
שתף באתרים אחרים

וואו שאלה ארוכה...

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

אח"כ אתה יכול לגשת לתווים שונים במחרוזת כמו לאיברים במערך.

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

אתה יכול פשוט לעבור על הקלט איבר-איבר בעזרת לולאת FOR ובכל פעם לבצע את הפעולה שאתה רוצה על תו בודד.

ברגע שהגעת לאחד התוים שהגדירו לך אתה יודע שמתחיל תת-חלק חדש במחרוזת.

למשל אתה יכול לדעת שאתה צריך להתייחס לאיברים הראשונים (משמאל לימין) כמספר כל עוד לא הגעת ל-W או L וכו'.

קישור לתוכן
שתף באתרים אחרים

כן השאלה לא קצרה.. כל התוכן מבלבל

אז אתה אומר לקלוט את כל האיברים (מספרים ואותיות) לתוך תאים של מערך חד מימדי והתנאי עצירה יהיה כשזה מגיע לערך ריק (איך מנסחים תנאי עצירה כזה? אני זוכר משהו בסגנון של '/ ' אבל ברח לי מהראש).

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

אין דרך אחרת ליישם את זה חוץ ממערך?

קישור לתוכן
שתף באתרים אחרים

אין כזה דבר "ערך ריק". אתה קורא עד שאתה מגיע לתו כלשהו שמבחינתך מסיים את סוף הקלט הנוכחי - לדוגמה, תו רווח או תו ירידת שורה.

אפשר לעשות את זה ידנית, או באמצעות פונקציות מובנות כמו scanf/gets/fgets.

קישור לתוכן
שתף באתרים אחרים

מישהו אמר לי שהוא לא השתמש בכלל במערכים והוא עשה את זה עם לולאת while אינסופית ו-switch בתוכו. אני לא הבנתי איך בדיוק אפשר לעשות את זה ככה, עזרה!

קישור לתוכן
שתף באתרים אחרים

למעט המספר הראשון (שאותו קולטים ב-scanf נפרד מחוץ ללולאה), כל הפקודות בנויות באותו אופן - תו ולאחר מכן מספר (או במקרה של הפקודה L, תו+מספר+תו+מספר).

הדרך שאותו מישהו כנראה משתמש בה היא לקרוא תו אחד, לבדוק לאיזה פקודה הוא מתאים, ואז בהתאם לפקודה לקרוא את המשך הקלט (שוב, באמצעות scanf). את זה כמובן עושים בלולאה עד שנגמר הקלט.

קישור לתוכן
שתף באתרים אחרים

מצטער אני בדר"כ יותר חד מזה אבל הפעם אני פשוט לא מבין איך לעשות את זה :nixweiss:

את הסכום ההתחלתי אתה קולט לפני שאתה נכנס בכלל ללולאת WHILE ואז בלולאה הזו אתה עושה בתחילתה קליטה נוספת לאות ואז יוצר קייסים שבכל קייס קליטה למספר שעליו תתבצע הפקודה של אותה אות, ושוב הלולאה חוזרת על עצמה קולטת אות נוספת ומחפשת את הקייס המתאים וכו' וכו'?

אני לא מבין איך לבצע את זה, אתה יכול להראות לי מן קוד כללי כזה 'בגדול'?

קישור לתוכן
שתף באתרים אחרים


scanf("%f", &firstAmount);
while (1)
{
c = getchar();
switch(c) {
case 'W':
scanf("%f", &amount);
// code to handle withdraw
break;
case 'D':
scanf("%f", &amount);
// code to handle deposit
break;
case 'L':
scanf("%fI%f", &amount, &percentage);
// code to handle loan
break;
}
}

וכו' וכו'. יש מבין?

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...