מציג תוצאות 1 עד 5 מתוך 5

אשכול: מבחן מעשי גאמ"א

  1. #1
    משתמש רשום משתמש מתחיל

    פרטי משתמש

    ברירת מחדל מבחן מעשי גאמ"א

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

  2. #2
    משתמש רשום

    פרטי משתמש

    ברירת מחדל

    משולש פסקל

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

    לכן,




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

    קוד:
    static void Main(string[] args)
            {
                Console.Write("Index in pascal triangle: ");
                int i = int.Parse(Console.ReadLine());
                Console.WriteLine("Value in pascal triangle by index: " + ValueInPascalTriangleByIndex(i));
            }
            static int ValueInPascalTriangleByIndex(int i)
            {
                int pos = 1;
                int r = 0;
                int c = 0;
                while (pos != i)
                {
                    if (r == c)
                    {
                        r++;
                        c = 0;
                    }
                    else
                    {
                        c++;
                    }
                    pos++;
                }
                return (Factorial(r) / (Factorial(c) * Factorial(r - c)));
            }
            static int Factorial(int n)
            {
                if (n == 0)
                {
                    return 1;
                }
                return n * Factorial(n - 1);
            }
    מקווה שתשיג פה עוד שאלות לדוגמא שגם אני יוכל לפתור

  3. #3
    משתמש רשום משתמש מתחיל

    פרטי משתמש

    ברירת מחדל

    ציטוט פורסם במקור על ידי igngaea צפה בהודעה
    משולש פסקל

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

    לכן,




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

    קוד:
    static void Main(string[] args)
            {
                Console.Write("Index in pascal triangle: ");
                int i = int.Parse(Console.ReadLine());
                Console.WriteLine("Value in pascal triangle by index: " + ValueInPascalTriangleByIndex(i));
            }
            static int ValueInPascalTriangleByIndex(int i)
            {
                int pos = 1;
                int r = 0;
                int c = 0;
                while (pos != i)
                {
                    if (r == c)
                    {
                        r++;
                        c = 0;
                    }
                    else
                    {
                        c++;
                    }
                    pos++;
                }
                return (Factorial(r) / (Factorial(c) * Factorial(r - c)));
            }
            static int Factorial(int n)
            {
                if (n == 0)
                {
                    return 1;
                }
                return n * Factorial(n - 1);
            }
    מקווה שתשיג פה עוד שאלות לדוגמא שגם אני יוכל לפתור
    תודה .
    עוד, מישהו ?

  4. #4
    משתמש רשום

    פרטי משתמש

    ברירת מחדל

    ציטוט פורסם במקור על ידי igngaea צפה בהודעה
    משולש פסקל

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

    לכן,




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

    קוד:
    static void Main(string[] args)
            {
                Console.Write("Index in pascal triangle: ");
                int i = int.Parse(Console.ReadLine());
                Console.WriteLine("Value in pascal triangle by index: " + ValueInPascalTriangleByIndex(i));
            }
            static int ValueInPascalTriangleByIndex(int i)
            {
                int pos = 1;
                int r = 0;
                int c = 0;
                while (pos != i)
                {
                    if (r == c)
                    {
                        r++;
                        c = 0;
                    }
                    else
                    {
                        c++;
                    }
                    pos++;
                }
                return (Factorial(r) / (Factorial(c) * Factorial(r - c)));
            }
            static int Factorial(int n)
            {
                if (n == 0)
                {
                    return 1;
                }
                return n * Factorial(n - 1);
            }
    מקווה שתשיג פה עוד שאלות לדוגמא שגם אני יוכל לפתור
    אני לא יודע למה אני עושה את זה כרגע ב2 בבוקר, אבל סתם חיפשתי מידע על גאמ"א וראיתי את התרגיל שנתת.
    ישבתי עליו כמה דקות ואחרי רעיון אחד שהיה לי, שכשל לגמרי לצערי.
    בכל זאת לאחר מכן מצאתי פתרון שלדעתי יוצא מעט יותר פשוט, לאנשים העתידיים שקוראים את השאלה הזאת.

    הנה הקוד: (כתבתי אותו תחילה בפייתון ואז שכתבתי אותו ב#C בגלל שראיתי שזה מה שאתם משתמשים בו בפוסט הזה. סלחו לי אם זה לא יתקמפל, אני כתבתי אותו על מאק ולא יצא לי להוריד כלי שמריץ קוד #C.)
    קוד:
    public static void main(String[]args){
    	Console.Write("Index in pascal triangle: ");
    	int i = int.Parse(Console.ReadLine());
    	
    	int[] yx = i2xy(i);
    	int value = valueAtIndex(yx[0], yx[1]); 
    
    
    	Console.WriteLine("Value in pascal triangle by index: " + value)
    }
    
    
    public static int valueAtIndex(y, x){
    	if (x == 0 || x == y)
    		return 1;
    	
    	return valueAtIndex(y-1, x) + valueAtIndex(y-1, x-1)
    }
    
    
    public static int[] i2xy(i){
    	int rowLen = 1;
    	int count = 0;
    
    
    	while (i > 0){
    		i = i - rowLen;
    		rowLen++;
    		count++;
    	}
    
    
    	if (i == 0)
    		return [c-1, c-1];
    	
    	if (i < 0)
    		return [c-1, c-1+i];
    }

    מעט הסבר:
    אני התייחסתי על המשולש כאל מעין מטריצה (טבלה), כאשר קורדינטות קוקודה הן [0,0] וקורדיטות קוקודה השני הן [n,n] (כאשר n מבטא את גודל צלע המשולש).

    לפי הגדרת המשולש הפסקלי, כל איבר מורכב מסכום האיבר שנמצא מעליו עם האיבר שנמצא משמאלו ל האיבר שנמצא מעליו.
    כלומר אם נקח את האיבר [3,6], הוא מורכב מסכום האיברים [3,5] ו-[2,5].
    גם האיברים אשר מרכיבים את [3,6] מורכבים כל אחד מעוד שני האיברים שמעליהם. וגם הם מורכבים מעוד שניים שמעליהם.
    ניתן לזהות כאן דפוס רקורסיבי, לכן נכתוב לכך פונקציה רקורסיבית.
    כאשר נרצה לחשב את סכומו של איבר מסוים פשוט נקרא לפונקציה הרקורסיבית על 2 האיברים שמעליו.

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

    כתוצאה מכך, כאשר נגיע לדפנות, 'התמוטטות' הרקורסיה תתחיל וכל פעם סכום 2 איברים יתקבל, עד שקריאות הרקורסיה יגמרו.

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

  5. #5
    משתמש רשום

    פרטי משתמש

    ברירת מחדל

    שלום,
    ניתן לפתור את השאלה באופן יעיל יותר מבחינת זמן הריצה. שים לב שפתרת את השאלה ב-(O(i. ניתן לפתור את השאלה ב-(O(i^0.5 על ידי כתיבת לולאת ה-while שלך כך:

    קוד:
    int pos = 0
    int r = 1
    int c = 0
    while(1){
          pos += r
          if(pos > i){
                  pos -= r
                  break;
          }
          r += 1
    }
    c = i - pos + 1
    return (Factorial(r) / (Factorial(c) * Factorial(r - c)));
    בנוסף, הסיבוכיות זיכרון שלך היא (O(i^0.5 ואפשר לשפר את זה ל-(O(1 אם תחשב עצרת בצורה לא רקורסיבית
    נערך לאחרונה על ידי אריאל, 05-01-2017 בשעה 09:57

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

Users Browsing this Thread

כרגע 1 משתמשים צופים באשכול זה. (0 חברים ו 1 אורחים )

ביקרו באשכול זה : 16

הרשאות

  • אתה לא יכול לפרסם אשכולות חדשים
  • אתה לא יכול לפרסם תגובות
  • אתה לא יכול לצרף קבצים להודעותיך
  • אתה לא יכול לערוך את הודעותיך
  •  
אודות Emath
האתר Emath הינו יוזמה פרטית והוקם בתחילת שנת 2008 .
מטרתנו הינה למנף את הישגי התלמידים למתמטיקה ופיסיקה בארץ בכלל ובפרט בקרב תלמידי התיכון .
אנו מספקים מספר כלים שרובם חינמים, ביניהם פורום עזרה במתמטיקה ופיסיקה הגדול מסוגו בארץ, מאגר סיכומים, מרתונים בוידאו, פתרונות לבגרויות ועוד.
כלים אלו, מאפשרים לכל אחד, ללא תלות במעמדו או במיקומו, ללמוד, לתרגל ולהתמקצע על-מנת להתכונן בצורה מיטבית לבגרות במתמטיקה או פיסיקה .

לכל שאלה ניתן ליצור איתנו קשר
הצטרפו אלינו