עבור לתוכן

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

Featured Replies

פורסם

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

אם מביאים לי מספר ולא אומרים לי מה האורך שלו.. איך אני מוצא את המאות שלו איך אני מוצא את העשרות שלו ואיך את היחידות?

כדרך אגב מה עוד יכולים להכניס div וMod חוץ מלמצוא יחידות עשרות ומאות.. אני זוכר שהיה שאלות שהיה צריך נגיד למצוא זוגי/אי זוגי והיו גם משתמשים בזה.. יש עוד דברים שבדרך כלל שואלים על זה?

פורסם

יהי n מספר שלם רב ספרתי בבסיס ספירה z

הספרה ה-i של n היא (בפסאודוקוד)

digit[i]=(n/(z^(i-1))) % z

הערה, אם מחפשים את הספרה ה-i במספר שיש פה פחות מ-i ספרות התוצאה תהיה 0.

אפרופו בסיסי ספירה, הנה תרגיל בתכנות שעושה שימוש ב-div וב-mod.

התוכנה תקלוט מהמשתמש 3 ערכים, בסיס ספירה ראשון, מספר ובסיס ספירה שני. בסיסי המניה יהיו מספרים שלמים בין 2 ל-10, המספר חייב להיות חוקי לפי הבסיס הראשון (לדוגמא - המספר 4523 לא חוקי בבסיס 5 או פחות). אם אחד מערכי הקלט שגויים - התוכנה תדפיס error ותצא. באם ערכי הקלט תקינים התוכנה תמיר את המספר מבסיס הספירה הראשון לבסיס השני ותדפיס אותו.

פורסם
  • מחבר

חח לא הבנתי כלום..

קודם כל שכחתי לרשום שאני עושה פסקל.. ולא C

זה אמור להיות על כל אחד משהו פשוט.. כמו div 10 mod 10 או משהו כזה.. ואז אתה רושם את זה וזה מביא לך את היחידות במספר..

פורסם

אם יש A/B אז MOD זה השארית ו DIV זה השלם

אם המידע הזה לא מספיק לך זה מזה לא המקצוע בשבילך.

פורסם
  • מחבר

מה לא מקצוע בשבילי.. יש לי כבר 99 ו97 ב3 יחידות ראשונות..

פשוט עבר שנה ושכחתי את הmod..

נגיד Mod 10 למספר 58.. כמה זה? 2?

פורסם

נראה לי זה משהו כזה:

div זה כמה פעמים מספר מסוים נכנס במספר אחר... נגיד:

6 div 4

שווה 1, כי 4 נכנס פעם אחת ב6...

אז נגיד יש את המספר 30, עושים לו

30 div 10

ונקבל ש10 נכנס 3 פעמים ב30... אז העשרות זה 3....

יש את הפקודה Mod שהיא נותנת לנו את השארית... אם מספר מסוים יכנס X פעמים במספר אחר, מה תיהיה השארית?

נגיד יש שוב את הקוד:

6 mod 4

השארית יהיה 2... 4 נכנס פעם אחת ב6, ונשאר 2 שארית...

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

270 div 10

יתן לנו 27...

ואז אם נעשה:

27 mod 10

יהיה 7, כי 10 נכנס פעמיים ב27, ויש שארית של 7...

אז בעקרון נראה לי שלאחדות צריך לעשות:

X mod 10

[X הוא המספר שאנו מחפשים למצוא לו את הספרות]

לעשרות צריך לעשות :

X div 10

את התוצאה להכניס למשתנה אחר נגיד I [נראה לי הפקודה זה := ואז:

I mod 10

למאות צריך למצוא:

X div 10 := I
I div 10 := Z
Z mod 10

לאלפים צריך להמשיך ככה... או מקסימום לעשות לולאה של DIV ובסוף לשים פקודת MOD אחת....

גם אני לא זוכר פסקל כל כך אבל נראה לי שזה הסגנון...

פורסם
  • מחבר

מעולה אחי.. זה בדיוק מה שהתכוונתי!

עכשיו יש קטעים שרושמים div 10 ואחכך mod 10..

אני חייב להכניס כמו שאמרת לI? או שאני יכול לרשום את זה רצוף? div 10 mod 10

פורסם

מעולה אחי.. זה בדיוק מה שהתכוונתי!

עכשיו יש קטעים שרושמים div 10 ואחכך mod 10..

אני חייב להכניס כמו שאמרת לI? או שאני יכול לרשום את זה רצוף? div 10 mod 10

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

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

X div 10
X mod 10

ונגיד X זה 23, התוצאה הסופית תיהיה 3 ולא 2, כי אמנם X דיב 10 יתן 2, אבל X עדיין נשאר 23 ולא השתנה ל2... אבל נראה לי אפשר לעשות:

X div 10 :=X

ואז הX הקודם [23] ימחק מהזכרון ויהפוך ל2...

מקסימום תנסה ותבדוק... עוד חצי דקה של עבודה לא תעשה כלום לאף אחד.... ;)

פורסם
  • מחבר

סבבה נזכרתי.. צודק..

אממ יש לי עוד כמה שאלות.. למי שעשה את ה2 יחידות האחרונות..

בטיפוס נתונים מופשט.. צריך לעשות פעולות ממשק..

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

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

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

פורסם

עידן, אתה נתת לבחור דגים במקום לתת לו חכה...

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

להלן הפתרון הכללי שהצעתי מיושם בשפת c כי הפעם האחרונה שנגעתי בפסקל היה לפני יותר מ-10 שנים ואני לא רוצה לעשות בושות (לא הידרתי את התוכנית ואין שום ערובה שהיא עובדת)

// utility function - raises an integer base to an integer power
long intPow (long base, long exp) {
int result = 1;

for (int i=0; i<exp;i++)
result = result * base;

return result; // function will also return 1 if given a negative exponent
}

void main () {
long n = GIVENNUMBER; // the number needed to be deconstructed into digits, we assume it is in base z
int z = GIVENBASE; // the counting base of that number
int digits[MAXDIGITS]; // an array to store the digits - position 0 is the least significant digit and so on
for (int i=0;i<MAXDIGITS;i++)
digits[i] = (n/intPow(z,i)) % z; // deconstruction function digit after digit
}

ארכיון

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

דיונים חדשים