130 likes | 143 Vues
תרגול 13 חזרה. Exam example 8. לפניך מימוש חלקי של שלוש מחלקות: Davar ,Test5 ו - . Stam. public class Davar extends Stam { private int y; public int getY () { return y; } public void setY ( int y) { this .y = y;}
E N D
תרגול 13 חזרה
Exam example 8 לפניך מימוש חלקי של שלוש מחלקות:Davar ,Test5 ו - .Stam public class DavarextendsStam { private inty; public intgetY() { return y; } public void setY(int y) { this.y = y;} publicDavar() { super(); this.y = 0; } publicDavar(char c) { super(c); this.y = 0; } // Davar publicDavar(char c, intnum) { super(c); this.y = num; } // Davar public String toString() { return"Davar: " + super.toString(); } } // class Davar public class Stam { private char x; public Stam() { this.x = '*'; } publicStam (char c) { this.x = c; } publicStamgetStam() { returnthis; } public String toString() { return"x = "+ this.x; } publicboolean isStam1 (Stam other) { returnthis.x == other.x ; } // isStam1 public booleanisStam2 (Stam other) { return this.equals(other); } // isStam2 public void same (Stam other) { if (this.isStam1(other)) System.out.println(this + " same1 as " + other); else System.out.println(this + " not same1 as " + other); if (this.isStam2(other)) System.out.println(this + " same2 as " + other); else System.out.println(this + " not same2 as " + other); } // same public void print() { System.out.println(this.toString()); } public void print (Stam other) { this.same(other); } } //class Stam
Exam example 8, cont. public class Test5 { public static void main(String[ ] args) { Stam[ ] s = new Stam[6]; s[0] = new Stam(); s[1] = new Davar(); s[2] = new Stam( 'b‘ ); s[3] = new Davar( 'b‘ ); s[4] = new Davar( 'a', 0); s[5]=s[2].getStam(); for(int i=0; i< 6; i++) s[i].print(); s[1].print(s[0]); s[2].print(s[5]); s[3].print(s[4]); } // main } // class Test א. הצג את המערך s אחרי ביצוע הקטע הבא: ב. רשום את פלט הלולאה. ג. מהו פלט הקטע ?
Exam example 8- solution א. תוכן מערך S לאחר ביצוע קטע של פעולה ראשית :
Exam example 8- solution,cont. ב. פלט לולאת FOR : ג. פלט הקטע הוא : Davar: x = * same1 as x = * Davar: x = * not same2 as x = * x = b same1 as x = b x = b same2 as x = b Davar: x = b not same1 as Davar: x = a Davar: x = b not same2 as Davar: x = a
{a,b,c}n כתבו את הפונקציה הרקורסיבית abc(int n) אשר מקבלת מספר n ומדפיסה למסך את כל המילים מעל האותיות {a,b,c} באורך n. הערה: ניתן לכתוב פונקציית עזר רקורסיבית במידת הצורך. לדוגמא: עבור נקבל: aaa aab aac aba abb abc aca acb acc baa bab bac bba ccc bbb bbc bca bcb bcc caa cab cac cba cbb cbc cca ccb
פתרון publicstaticvoidabc(int n) { abc(n, ""); } publicstaticvoidabc(int n, String s) { if (n == 0) System.out.println(s); else for (char c = 'a'; c <= 'c'; c++) abc(n-1, s+c); } publicstaticvoid main(String[] args) { abc(3); {
פתרון • publicstaticint change(int sum, int[] coins) • } • returnchange(sum, coins, 0); • { • publicstaticint change(int sum, int[] coins, int first) • } • if(sum == 0) • return1; • elseif (sum>0 && first < coins.length) • return change(sum-coins[first], coins, first) • + change(sum, coins, first+1); • else • return0; • {