תרגיל ב-#C

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

מנהלים: kabanist, Sir Psycho Sexy

Antrax
MTGil Wizard
הודעות: 6939
הצטרף: 20/10/2001 , 2:00
אמר/ה תודה: 0
קיבל תודה: 0
יצירת קשר:

שליחה על ידי Antrax » 23/11/2010 , 15:29

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

Banuni
TimeShifted Banana
הודעות: 3479
הצטרף: 17/1/2004 , 20:48
מיקום: אביחיל(עמק חפר)
אמר/ה תודה: 0
קיבל תודה: 0
יצירת קשר:

שליחה על ידי Banuni » 23/11/2010 , 20:29

אני לא יודע אם זה יקר (אני אפילו מאמין שכן) אבל תמיד אפשר להפוך את זה לסטרינג(עדיף לקלוט בסטרינג), לעשות מצביע שיצביע על כל תו בסטרינג ויכניס את את המספר (אסקי+48, אם אני זוכר בערך מהתיכון) לסכום, ככה הלולאה גם לא צריכה לחלק, אלא רק לקדם את המצביע עד שהוא מגיע לסוף הסטרינג...:)
Sir Psycho Sexy כתב: אני ממליץ לך לטוס להודו, בטוח גדל שם משהו שיכול להפוך אותך בחזרה לילד נורמלי.

RocketLauncher
Dead On Craft
הודעות: 979
הצטרף: 14/12/2007 , 17:36
מיקום: תל אביב
אמר/ה תודה: 0
קיבל תודה: 0

שליחה על ידי RocketLauncher » 23/11/2010 , 22:21

Banuni כתב:אני לא יודע אם זה יקר (אני אפילו מאמין שכן) אבל תמיד אפשר להפוך את זה לסטרינג(עדיף לקלוט בסטרינג), לעשות מצביע שיצביע על כל תו בסטרינג ויכניס את את המספר (אסקי+48, אם אני זוכר בערך מהתיכון) לסכום, ככה הלולאה גם לא צריכה לחלק, אלא רק לקדם את המצביע עד שהוא מגיע לסוף הסטרינג...:)
רעיון נחמד, אפילו לא צריך ascii, פשוט parse לתו.
kabanist כתב:אתה נוהג בזמנך הפנוי לקרוא את דפי זהב? אם כן, אל תספר לי את הסוף!

Soul
Aether Blaster
הודעות: 1732
הצטרף: 21/6/2007 , 11:57
אמר/ה תודה: 0
קיבל תודה: 0

שליחה על ידי Soul » 24/11/2010 , 1:24

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

Antrax
MTGil Wizard
הודעות: 6939
הצטרף: 20/10/2001 , 2:00
אמר/ה תודה: 0
קיבל תודה: 0
יצירת קשר:

שליחה על ידי Antrax » 24/11/2010 , 9:21

ביטים זה אכן הכיוון הנכון לסעיף א'.
ב' לא קשור לא' בשום צורה.
נא לא לשלוח לי יותר מה"פ אחת בכל פעם. לפני השליחה, מומלץ לעיין בחוקי הפורום ובשיטת האימות אם עוד לא קראתם אותם.

יובל
MTGil Wizard
הודעות: 1393
הצטרף: 28/9/2002 , 2:00
מיקום: אבן-יהודה
אמר/ה תודה: 0
קיבל תודה: 0
יצירת קשר:

שליחה על ידי יובל » 24/11/2010 , 15:20

אה נו. יש את העניין הזה של לעשות שיפט שמאלה או שיפט ימינה לביטים. זה הכיוון נראה לי...
אס מעוין זה שיט-רר!

Antrax
MTGil Wizard
הודעות: 6939
הצטרף: 20/10/2001 , 2:00
אמר/ה תודה: 0
קיבל תודה: 0
יצירת קשר:

שליחה על ידי Antrax » 26/11/2010 , 9:54

טוב, הרגתי אתכם. בואו ננסה משהו אחר: כתבו תוכנית שמקבלת מספר בין 0 ל999 ומחזירה את סכום הספרות שלו. בתוכנית אסור להשתמש בפעולות חשבוניות בכלל.
נא לא לשלוח לי יותר מה"פ אחת בכל פעם. לפני השליחה, מומלץ לעיין בחוקי הפורום ובשיטת האימות אם עוד לא קראתם אותם.

RocketLauncher
Dead On Craft
הודעות: 979
הצטרף: 14/12/2007 , 17:36
מיקום: תל אביב
אמר/ה תודה: 0
קיבל תודה: 0

שליחה על ידי RocketLauncher » 26/11/2010 , 11:26

מותר להשתמש ב-sum של מערך מספרים?
kabanist כתב:אתה נוהג בזמנך הפנוי לקרוא את דפי זהב? אם כן, אל תספר לי את הסוף!

Soul
Aether Blaster
הודעות: 1732
הצטרף: 21/6/2007 , 11:57
אמר/ה תודה: 0
קיבל תודה: 0

שליחה על ידי Soul » 26/11/2010 , 13:53

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

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

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

אם אתה מתכוון למערך שיכיל את הסכומים של הספרות ואז פשוט sum[n][size=0]a[/size] מכיל את סכום הספרות של n - זה עובד... אבל זה יכול להיות יקר במשאבים שזה תופס... בייחוד כשננסה להמיר את זה למשהו שעובד עם כמות גדולה יותר של ספרות שלא לדבר על להכין את הטבלה הזו מראש בשביל המספרים האלה.

Antrax
MTGil Wizard
הודעות: 6939
הצטרף: 20/10/2001 , 2:00
אמר/ה תודה: 0
קיבל תודה: 0
יצירת קשר:

שליחה על ידי Antrax » 27/11/2010 , 8:56

האופציה האחרונה ששמואל ציין היא מה שחשבתי עליו. מערך עם אלף כניסות שכל אחת מכילה סכום שחסום ב27 = 1000 בתים של זכרון = כלום.
חמושים בידע הזה, עכשיו סעיף ב' אמור להיות קל מאד.
נא לא לשלוח לי יותר מה"פ אחת בכל פעם. לפני השליחה, מומלץ לעיין בחוקי הפורום ובשיטת האימות אם עוד לא קראתם אותם.

RocketLauncher
Dead On Craft
הודעות: 979
הצטרף: 14/12/2007 , 17:36
מיקום: תל אביב
אמר/ה תודה: 0
קיבל תודה: 0

שליחה על ידי RocketLauncher » 27/11/2010 , 12:26

אתה יכול לבבקשה להסביר את המשפט "סכום שחסום ב-27"?
kabanist כתב:אתה נוהג בזמנך הפנוי לקרוא את דפי זהב? אם כן, אל תספר לי את הסוף!

Antrax
MTGil Wizard
הודעות: 6939
הצטרף: 20/10/2001 , 2:00
אמר/ה תודה: 0
קיבל תודה: 0
יצירת קשר:

שליחה על ידי Antrax » 27/11/2010 , 14:56

מה סכום הספרות המקסימלי של מספר בין 0 ל999?
נא לא לשלוח לי יותר מה"פ אחת בכל פעם. לפני השליחה, מומלץ לעיין בחוקי הפורום ובשיטת האימות אם עוד לא קראתם אותם.

Soul
Aether Blaster
הודעות: 1732
הצטרף: 21/6/2007 , 11:57
אמר/ה תודה: 0
קיבל תודה: 0

שליחה על ידי Soul » 27/11/2010 , 20:47

מגניב. אז לגבי ב' אם חושבים על זה באופן ישיר זה:

קוד: בחירת הכל

// divMod( int number , int divider ,int &div ,int &mod )

const short SUM_3_DIGITS[] =
[
// ... digit sums for numbers 0 up to 999
];

int n=123456789;

int mod = 0;
int sum = 0;

while ( n > 0 )
{
	divMod( n , 1000 , n, mod );
	sum += SUM_3_DIGITS[mod];
}

Antrax
MTGil Wizard
הודעות: 6939
הצטרף: 20/10/2001 , 2:00
אמר/ה תודה: 0
קיבל תודה: 0
יצירת קשר:

שליחה על ידי Antrax » 28/11/2010 , 8:07

כן. ולמעשה אתה יכול להמשיך באותו אופן ולבנות מערך עד 9999 או 99999, ובכל פעם להקריב קצת יותר זכרון בשביל פחות ופחות איטרציות לולאה.
נא לא לשלוח לי יותר מה"פ אחת בכל פעם. לפני השליחה, מומלץ לעיין בחוקי הפורום ובשיטת האימות אם עוד לא קראתם אותם.

YonatanH
MTGil Apprentice
הודעות: 78
הצטרף: 27/7/2009 , 0:00
מיקום: זכרון יעקב
אמר/ה תודה: 0
קיבל תודה: 0

שליחה על ידי YonatanH » 10/12/2010 , 21:08

אתה לא מבין איך אני מת על התרגיל הזה. שנה שעברה המורה נתן את התרגיל מול הכיתה והראשון שכותב את זה על נייר מקבל 100. זה היה יחסית קל.

אתה כיתה י?
רן כתב:Day of Judgment. בגלל שווגים לא מתים, הם רק מתחלפים.

שלח תגובה