עמוד 1 מתוך 2 1 2 אחרוןאחרון
מציג תוצאות 1 עד 15 מתוך 18

אשכול: אלגוריתמים שכיחים שמומלץ לקרוא לפני מבחנים

  1. #1
    הסמל האישי שלnirgt אסיסטנט חבר Emath בכיר

    פרטי משתמש

    ברירת מחדל אלגוריתמים שכיחים שמומלץ לקרוא לפני מבחנים

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

    אז נתחיל

    שאלה: האם קיימות ספרות זהות בשני מספרים:

    פתרון בלולאה אחת בקוד C:
    קוד:
    temp=num2 while(!num1 && !found) { (!num2)?num1/=10,num2=temp:(num1%10=num2%10)?found=True:(num1%10!=num2%10)?num2/=10:0; }
    תשובה בשפה עילית מדור רביעי (C# או JAVA):
    קוד:
    while(!found && num1) { num2=temp; while(num2 && !found) { if(num1%10==num2%10) found=true; else num2/=10; } if(!found) num1/=10; }
    החלפה בין מספרים:
    קוד:
    if(a>b) { a=a+b; b=a-b; a=a-b; }
    שאלת אריחים: נתונים שני סוגי אריחים: A וB. נתון כי A קטן מB. יש לרצף קו שאורכו N. התוכנית קולטת את אורך האריכים ואת אורך הקו לריצוף ופולטת את מספר האריחים המנימלי הנדרש לרצף את הקו. דוגמא: A=3, B=4 N=22 פלט 2 אריחים מסוג A ו4 מסוג B.
    קוד:
    input fot A b and N tempN=N; while((N%B)*A +(N/B)*B!=tempN) { N--; } output: num of A: N%B num of B: N/B
    טוב זה הכל לפוסט הזה. מקווה שהכל מובן. מי שרוצה לשאול שאלות יכול לפנות אלי בפרטי
    נערך לאחרונה על ידי nirgt, 10-12-2011 בשעה 11:41
    "דקה אחת של הצלחה יכולה לממן שנות כישלון רבות."
    - רוברט בראונינג

  2. #2
    הסמל האישי שלnirgt אסיסטנט חבר Emath בכיר

    פרטי משתמש

    ברירת מחדל

    אני ממש לא זוכר אם יש את זה בבגרויות אבל הנה כמה שיטות לספור ביטים דלוקים:
    קוד:
    for(i=0;i<=16;i++) { if(num&1==1) count++; num=num>>1 }
    קוד:
    for(i=0;i<=16;i++) { count+=num%2; num/=2; }
    קוד:
    for(i=0;i<16;i++) { count+=num&1; num/=2 }
    קוד:
    int shift=num&1; while(num>0) { x>>=1; shift=shift^(x^1); }
    מקווה שמובן
    "דקה אחת של הצלחה יכולה לממן שנות כישלון רבות."
    - רוברט בראונינג

  3. #3
    הסמל האישי שלnirgt אסיסטנט חבר Emath בכיר

    פרטי משתמש

    ברירת מחדל

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

  4. #4
    הסמל האישי שלgilas מדריכה ויועצת חבר Emath בכיר

    פרטי משתמש

    ברירת מחדל

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

  5. #5
    הסמל האישי שלnirgt אסיסטנט חבר Emath בכיר

    פרטי משתמש

    ברירת מחדל

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

    קודם כל נניח כי קיימת מחלקה עם הערכים Info ו Next.

    בנייה רשימה מקושרת:
    קוד:
    Node p=new Node(info,null); for(int i=0;i<10;i++) { Node temp=new Node(info,null); p.setNext(temp); p=temp; }
    מעבר על רשימה מקושרת:
    קוד:
    Node p=List.getFirst(); while(p.getNext()!=null) { console.writeline(p.getInfo()); p=p.getNext(); }
    הכנסה ממויינת:
    קוד:
    Node p=List.GetFirst(); Node NewNode=Node(NewInfo,null); while(NewNode.GetInfo()<p.GetNext().GetInfo()) { p=p.getNext(); } NewNode.setNext(p.GetNext()); p.SetNext(NewNode);
    הערות:
    1.הקוד לא עבר הידור (Debug) לכן יתכנו שגיאות תחביר וכו'.
    2. ברשימה מקושרת תמיד צריך להיות משתנה שישמור את תחילת הרשימה. אם איבר זה נאבד כל הרשימה נאבדת יחד איתו!

    שבת שלום
    "דקה אחת של הצלחה יכולה לממן שנות כישלון רבות."
    - רוברט בראונינג

  6. #6
    הסמל האישי שלtototomer1 אסיסטנט חבר Emath מתקדם

    פרטי משתמש

    ברירת מחדל

    מונה ספרות:

    קוד:
    [LEFT]import java.util.Scanner;
    
    
    public class digits_counter {
    	
    	static Scanner reader = new Scanner(System.in);
    	public static void main(String[] args)
    	{
    		System.out.println("Enter a number");
    		int x = reader.nextInt();
    		int count=1;
    		
    		while (x>=10) {
    			x=x/10;
    			count++;
    		}
    		System.out.println("The number contains " +count +" digits.");
    	}
    
    
    }[\LEFT]
    סוכם ספרות:

    קוד:
    [LEFT]import java.util.*;
    
    
    public class digits_sum {
    	
    	static Scanner reader = new Scanner(System.in);
    	public static void main(String[] args)
    	{
    		Long x,y,z;
    		System.out.println("Enter a number");
    		x = reader.nextLong();
    		z = x;
    		int sum = 0;
    		for (int i=1; i<=10; i++)
    		{
    			y = z%10;
    			z = z/10;
    			sum += y;
    		}
    		System.out.println("The sum of the digits of " +x +" is: " +sum);
    	}
    }[\LEFT]

    אתם גם מוזמנים לבקש אלגוריתמים
    אהבתי Planche אהב \ אהבו את התגובה
     
    בברכה, תומר

    עזרו לכם? תגידו תודה/תעשו "אהבתי" - זה לא עולה כסף

  7. #7
    הסמל האישי שלtototomer1 אסיסטנט חבר Emath מתקדם

    פרטי משתמש

    ברירת מחדל

    הנה אלגוריתם למספר בחזקה כלשהי:

    קוד:
    [LEFT]    public static int NumPower(int num, int exponent) {
        	
        	int i=1;
        	int num2=num;
        	while (i<exponent)
        	{
        		num*=num2;
        		i++;
        	}
        	System.out.print(num);
        	return num;
        }[\LEFT]
    אלגוריתם יעיל לבדיקה האם מספר הוא ראשוני:

    קוד:
    [LEFT]    public static boolean isPrime(int num) {
        	if (num<=1)
        		return false;
        	else if (num<4)
        		return true;
        	else if (num%2==0)
        		return false;
        	else if (num<9)
        		return true;
        	else if (num%3==0)
        		return false;
        	else {
        		for (int i=5; i<=(int)Math.sqrt(num); i+=6)
        		{
        			if ((num%i==0) || (num%(i+2) == 0))
        				return false;
        		}
        		return true;
        	}
        }[\LEFT]



    סכום ספרות סופי של מספר:

    קוד:
    [LEFT]    public static int finalDigitsSum(int n) {
        	
        	int sum=0;
        	if (n<10)
        		sum=n;
        	else if (n>=10) {
        		while (n>=10) {
        			sum+=n%10;
        			n=n/10;
        		}
        		sum+=n;
        	}
        	
        	if (sum==10)
        		sum=1;
        	else if (sum>10)
        		sum=finalDigitsSum(sum);
        	return sum;
        }[\LEFT]
    למשל עבור 188 הוא יחזיר 8 (1+8+8=17, 1+7=8).
    אהבתי Planche אהב \ אהבו את התגובה
     
    בברכה, תומר

    עזרו לכם? תגידו תודה/תעשו "אהבתי" - זה לא עולה כסף

  8. #8
    הסמל האישי שלtototomer1 אסיסטנט חבר Emath מתקדם

    פרטי משתמש

    ברירת מחדל

    עצרת של מספר:

    קוד:
    [LEFT]public class factorial {
    	
    	static Scanner reader = new Scanner(System.in);   
        public static void main(String[] args)
        {
        	System.out.println("Enter a number.");
        	int num = reader.nextInt();
        	
        	int factorial = 1;
        	for(int i=1; i<=num; i++)
        	{
        		factorial *= i;
        	}
        	System.out.println("The factorial of the number is: " +factorial);
        }
    }[\LEFT]
    אהבתי Planche אהב \ אהבו את התגובה
     
    בברכה, תומר

    עזרו לכם? תגידו תודה/תעשו "אהבתי" - זה לא עולה כסף

  9. #9
    הסמל האישי שלtototomer1 אסיסטנט חבר Emath מתקדם

    פרטי משתמש

    ברירת מחדל

    הנה עוד משהו שיכול לעזור לכם (שימו לב להבדלים).

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

    קוד:
    public static void stringReversal1(String s) { for (int i=s.length()-1; i>=0; i--) System.out.print(s.charAt(i)); }

    פעולה שמקבלת מחרוזת ומחזירה אותה הפוכה:

    קוד:
    public static String stringReversal2(String s) { String s2=""; for (int i=s.length()-1; i>=0; i--) s2+=s.charAt(i); return s2; }

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

    עזרו לכם? תגידו תודה/תעשו "אהבתי" - זה לא עולה כסף

  10. #10
    הסמל האישי שלtototomer1 אסיסטנט חבר Emath מתקדם

    פרטי משתמש

    ברירת מחדל

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

    למישהו יש בקשות ספציפיות?
    בברכה, תומר

    עזרו לכם? תגידו תודה/תעשו "אהבתי" - זה לא עולה כסף

  11. #11
    משתמש רשום חבר Emath מתקדם

    פרטי משתמש

    ברירת מחדל

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

  12. #12
    הסמל האישי שלtototomer1 אסיסטנט חבר Emath מתקדם

    פרטי משתמש

    ברירת מחדל

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

    עזרו לכם? תגידו תודה/תעשו "אהבתי" - זה לא עולה כסף

  13. #13
    משתמש רשום חבר Emath מתקדם

    פרטי משתמש

    ברירת מחדל

    התכוונתי \sqrt[n]{a} כאשר n\neq 2

  14. #14
    הסמל האישי שלomeromer אסיסטנט חבר Emath מתקדם

    פרטי משתמש

    ברירת מחדל

    בעקרון זה הולך משהו כזה:
    שרוצים שורש ריבועי של x:
    לוקחים מספר ניחוש כלשהו (נמוך יותר מx), נקרא לו a
    עכשיו נעשה את הממוצע של \frac{x}{a} ושל a:
    a = \frac{\frac{x}{a} + a}{2}

    חזרה על התהליך מספר רב של פעמים תגרום לדיוק גבוהה יותר

    קוד בפייתון:
    קוד:
    def sqr(x):
        x = float(x)
        a = x/2
        for i in range(0, 500):
            a = ((x / a) + a)/2
        return a
    נערך לאחרונה על ידי omeromer, 28-05-2012 בשעה 19:14

  15. #15
    הסמל האישי שלtototomer1 אסיסטנט חבר Emath מתקדם

    פרטי משתמש

    ברירת מחדל

    ציטוט פורסם במקור על ידי the-myst צפה בהודעה
    התכוונתי \sqrt[n]{a} כאשר n\neq 2
    מעניין.. זה משהו שעוד לא יצא לי לחשוב עליו..
    בכל אופן הנה תוכנית שמציגה על המסך את השורש של מספר שנקלט:

    קוד:
    import java.util.*; public class squareRoot { static Scanner reader = new Scanner(System.in); public static void main(String[] args) { System.out.println("Enter a number."); double num = reader.nextDouble(); double x = (int)(Math.random()*(num+1)); double newx=0; for (int i=1; i<=20; i++) { newx = (x+num/x)/2; x = num/newx; } System.out.println("The square root of " +num +" is: " +x); } }
    ולגבי שורש שהוא לא שורש ריבועי - אני אבדוק אם אפשר לחשב גם את זה
    נערך לאחרונה על ידי tototomer1, 28-05-2012 בשעה 19:14
    בברכה, תומר

    עזרו לכם? תגידו תודה/תעשו "אהבתי" - זה לא עולה כסף

עמוד 1 מתוך 2 1 2 אחרוןאחרון

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

Users Browsing this Thread

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

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

הרשאות

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

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