מבוא לתכנות ב- JAVA תרגול 12

מסמכים קשורים
מבוא לתכנות ב- JAVA תרגול 11

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

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

מבוא לתכנות ב- JAVA תרגול 7

מהוא לתכנות ב- JAVA מעבדה 3

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

תרגול 1

מבוא למדעי המחשב

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

Microsoft Word - c_SimA_MoedA2006.doc

מבוא למדעי המחשב

מבוא למדעי המחשב - חובלים

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

Microsoft Word B

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

מבוא למדעי המחשב - חובלים

הגשה תוך שבוע בשעת התרגול

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

מבוא למדעי המחשב

PowerPoint Presentation

PowerPoint Presentation

מבוא למדעי המחשב

שאלהIgal : מערכים דו מימדיים רקורסיה:

מבוא למדעי המחשב

Slide 1

PowerPoint Presentation

Slide 1

שאלהIgal : מערכים דו מימדיים רקורסיה:

Tutorial 11

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

PowerPoint Presentation

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

PRESENTATION NAME

מבוא למדעי המחשב

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

שאלהIgal : מערכים דו מימדיים רקורסיה:

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

Microsoft Word - c_SimA_MoedB2005.doc

Slide 1

Microsoft Word - pitaron222Java_2007.doc

Microsoft PowerPoint - rec3.ppt

תרגול 1

מס' סידורי: ת.ז.: עמוד 1 מתוך 20 בחינה בתוכנה 1 סמסטר ב', מועד א',תשס"ט 5/7/2009 וולף, ליאור ליאור שפירא, נעמה מאיר, מתי שמרת הוראות )נא לקרוא!( משך ה

PowerPoint Presentation

Slide 1

תוכנה 1 אביב תשע"ח תרגיל מספר 8 אוספים גנריים ו- framework collection הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת ה

תרגול 1

הגשה תוך שבוע בשעת התרגול

תרגול מס' 7: תרגילים מתקדמים ברקורסיה

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

Slide 1

Slide 1

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

Microsoft Word - דוגמאות ב

סדנת תכנות ב C/C++

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

תרגול 1

Slide 1

מבוא למדעי המחשב

Slide 1

Microsoft PowerPoint - rec1.ppt

PowerPoint Presentation

תרגול 3 - מערכים

PowerPoint Presentation

מצגת של PowerPoint

דף נגזרות ואינטגרלים לשאלון 608 כללים למציאת נגזרת של פונקציה: n 1. y' n x n, y הנגזרת x.1 נכפול בחזקה )נרשום אותה משמאל ל- (. x א. נחסר אחד מהחזקה. ב

Slide 1

מקביליות

Programming

תורת הקומפילציה

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

Slide 1

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

מבוא למדעי המחשב, סמסטר א', תשס"ח תרגול מס' 2

אוניברסיטת תל אביב - בית הספר למדעי המחשב מבוא מורחב למדעי המחשב, אביב 2019 תרגיל בית מספר - 2 להגשה עד 02/04/2019 בשעה 23:55 קיראו בעיון את הנחיות הע

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

PowerPoint Presentation

PowerPoint Presentation

מקביליות

איטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodl

Slide 1

יוםראשון, 02 ליולי 2014 סמסטר סוף מבחן )236703( עצמים מונחה תכנות - א' מועד 2014, אביב סמסטר קמחי יחיאל ד"ר מרצה: מסינג מיטל עבדאלקאדר, כרם גלעד, ערן

תרגול מס' 7 – חזרה על MST ואלגוריתם Dijkstra

עבודת בית מספר 5: מבני נתונים מבוא למדעי המחשב, סמסטר א' תשע"ט מבוא למדעי המחשב סמסטר א' תשע"ט צוות העבודה: מרצה אחראי: יוחאי טוויטו מתרגלים אחראים: א

Slide 1

תכנות מונחה עצמים א' – תש"ע

אנליזה מתקדמת

תרגיל בית מספר 1#

<4D F736F F D20EEF9E5E5E0E5FA20E3E9F4F8F0F6E9E0ECE9E5FA2E646F63>

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

מתכונת עיצוב 3013

מקביליות

מס' ת"ז מס' מחברת מבחן בקורס מבוא מורחב למדעי המחשב CS1001.py ביה"ס למדעי המחשב, אונ' תל אביב סמסטר א' , מועד ב, 23/3/2018 מרצים: דניאל דויטש,

תרגיל בית מספר 1#

תרגיל בית מספר 1#

תמליל:

מבוא לתכנות ב- JAVA תרגול 12

מספרים גדולים במהלך הקורס ראינו את הטיפוס long לייצוג מספרים שלמים גדולים יותר מאשר.int אולם, ייצוג זה מוגבל ולא מאפשר לייצג מספרים בני 20 ספרות ומעלה. אחת השיטות לממש מספרים שלמים גדולים עם מספר ספרות שאינו מוגבל היא בעזרת רשימות מקושרות. למשל המספר 49867349855739457385646546945 ניתן לייצוג באופן הבא: 4 9 8... 5 null

מספרים גדולים כתבו שיטה רקורסיבית המקבלת שני מספרים גדולים המיוצגים ע"י רשימות. הפונקציה תקבל את הקודקוד הראשון מכל רשימה ותחזיר כפלט: 1 אם המספר הראשון גדול מהמספר השני (1-) אם המספר הראשון קטן מהמספר השני 0 אם המספרים שווים ניתן להניח ששני המספרים הם מאותו אורך public static int comparebignumbers(node<integer> n1, Node<Integer> n2) n1 5 n2 9 8... 5 null 5 7 4... 2 null

השוואת מספרים גדולים public static int comparebignumbers(node<integer> n1, Node<Integer> n2){ if (n1 == null && n2 == null){ return 0; if (n1.getdata() < n2.getdata()){ return -1; if (n1.getdata() > n2.getdata()){ return 1; return comparebignumbers(n1.getnext(), n2.getnext());

השוואת מספרים גדולים public static int comparebignumbers(node<integer> n1, Node<Integer> n2){ if (n1 == null && n2 == null){ return 0; if (n1.getdata() < n2.getdata()){ return -1; if (n1.getdata() > n2.getdata()){ return 1; return comparebignumbers(n1.getnext(), n2.getnext());

פולינום לפניך המחלקה Term שמייצגת איבר בפולינום public class Term { private int coef; private int degree; public Term(int coef, int degree){ this.coef = coef; this.degree = degree; Getters and setters

פולינום ניתן לייצג פולינום ע"י רשימה מקושרת באופן הבא: כל איבר ברשימה מטיפוס Term שומר מקדם בשדה coef ומעריך בשדה.degree איברי הפולינום מסודרים בסדר יורד לפי המעריך כאשר המעריך הגדול מופיע בראש הרשימה. כל מעריך מופיע ברשימה לכל היותר פעם אחת. למשל הפולינום 5x 4 + 3x 7 + 6 מיוצג ע"י הרשימה 3 7 5 4 6 0 null public static List<Term> add(list<term> pol1, List<Term> pol2) כתבו את השיטה: המקבלת 2 פולינומים ומחזירה את הפולינום המתקבל ע"י חיבור 2 הפולינומים

חיבור פולינומים public static List<Term> add(list<term> pol1, List<Term> pol2){ List<Term> res = new List<Term>(); Node<Term> p1 = pol1.getfirst(); Node<Term> p2 = pol2.getfirst(); Node<Term> p3 = res.getfirst(); נתקדם עד אשר סיימנו לסרוק לפחות את אחד הפולינומים while(p1!= null && p2!= null){ if (p1.getdata().getdegree() > p2.getdata().getdegree()){ p3 = res.insert(p3, p1.getdata()); p1 = p1.getnext(); else if (p1.getdata().getdegree() < p2.getdata().getdegree()){ p3 = res.insert(p3, p2.getdata()); p2 = p2.getnext(); else{ while(p1!= null){ p3 = res.insert(p3, p1.getdata()); p1 = p1.getnext(); while(p2!= null){ return res; איך נתייחס כאשר מעריך הראשון גדול מהשני בהתאמת אינדקסים ולהיפך? Term t = new Term(p1.getData().getCoeff() + p2.getdata().getcoeff(), p1.getdata().getdegree()); p3 = res.insert(p3, t); וכשהמעריכים שווים בהתאמת אינדקסים? p1 = p1.getnext(); p2 = p2.getnext(); אולי משהו נשאר? p3 = res.insert(p3, p2.getdata()); p2 = p2.getnext();

חיבור פולינומים public static List<Term> add(list<term> pol1, List<Term> pol2){ List<Term> res = new List<Term>(); Node<Term> p1 = pol1.getfirst(); Node<Term> p2 = pol2.getfirst(); Node<Term> p3 = res.getfirst(); נתקדם עד אשר סיימנו לסרוק לפחות את אחד הפולינומים while(p1!= null && p2!= null){ if (p1.getdata().getdegree() > p2.getdata().getdegree()){ p3 = res.insert(p3, p1.getdata()); p1 = p1.getnext(); else if (p1.getdata().getdegree() < p2.getdata().getdegree()){ p3 = res.insert(p3, p2.getdata()); p2 = p2.getnext(); else{ Term t = new Term(p1.getData().getCoeff() + p2.getdata().getcoeff(), p1.getdata().getdegree()); p3 = res.insert(p3, t); p1 = p1.getnext(); p2 = p2.getnext(); while(p1!= null){ p3 = res.insert(p3, p1.getdata()); p1 = p1.getnext(); while(p2!= null){ p3 = res.insert(p3, p2.getdata()); p2 = p2.getnext(); return res;

תרגיל: מציאת האיבר שמופיע הכי הרבה ברשימה ממשו את הפונקציה maxoccelement המקבלת רשימה של מספרים ומחזירה את המספר שמופיע הכי הרבה פעמים ברשימה public static Integer maxoccelement(list<integer> ls){ רעיון? נספור עבור כל מופע כמה פעמים הוא מופיע ברשימה וכך נדע מי המקסימלי טיפ כדאי לרשום פונקציית עזר שמקבלת את הרשימה ומספר ובודקת כמה פעמים הוא מופיע ברשימה 1 2 1 3 null האיבר שמופיע הכי הרבה הוא 1

נתחיל בכתיבת פונקציית עזר public static int countocc(list<integer> ls, Integer val){ int ans = 0; if (ls == null){ return 0; for (Node<Integer> p = ls.getfirst(); p!= null; p = p.getnext()){ if (p.getdata().equals(val)){ ans++; return ans;

פתרון public static Integer maxoccelement(list<integer> ls){ if (ls == null ls.isempty()){ return null; int maxocc = countocc(ls, ls.getfirst().getdata()); Integer element = ls.getfirst().getdata(); נחזיק p.getnext()){ משתנה= p עזר null; שיהיה =! שווהp למספר המופעים ls.getfirst(); של= p האיבר הראשון (Node<Integer> ומצביע אליו for int temp = countocc(ls, במשתנה עזר נוסף p.getdata()); נבדוק את מופעי כל השאר ונשווה למקסימלי בכל עת. temp){ אם> נמצא גדול if (maxocc ממנו, maxocc = temp; המצביע שיכוון אל הגדול. element = p.getdata(); נחליף את return element;

פתרון public static Integer maxoccelement(list<integer> ls){ if (ls == null ls.isempty()){ return null; int maxocc = countocc(ls, ls.getfirst().getdata()); Integer element = ls.getfirst().getdata(); for (Node<Integer> p = ls.getfirst(); p!= null; p = p.getnext()){ int temp = countocc(ls, p.getdata()); if (maxocc < temp){ maxocc = temp; element = p.getdata(); return element;

תרגיל: הסרת כפילויות ברשימה ממשו את הפונקציה removeduplicates שבהינתן רשימה מסירה את כל המופעים הכפולים של איברים ברשימה כך שבסיום הפעולה כל איבר ברשימה יופיע בדיוק פעם אחת public static void removeduplicates(list<integer> ls){ רעיון? 2 מצביעים, 2 לולאות )מקוננות( עבור כל איבר שפוגשים נבדוק הלאה ממנו האם יש זהה לו, אם כן נעיף אותו!

פתרון: הסרת כפילויות ברשימה public static void removeduplicates(list<integer> ls){ if (ls == null){ return; for (Node<Integer> p = ls.getfirst(); p!= null; p = p.getnext()){ Node<Integer> q = p.getnext(); while (q!= null){ if (p.getdata().equals(q.getdata())){ q = ls.remove(q); else{ q = q.getnext();

תרגיל: הפרש בין 2 רשימות ממשו את הפונקציה listsminus המקבלת 2 רשימות ls1,ls2 ומחזירה רשימה שאיבריה הם כל האיברים מהרשימה ls1 שאינם מופיעים בls2 public static List<Integer> listsminus(list<integer> ls1, List<Integer> ls2){...

תרגיל: הפרש בין 2 רשימות ממשו את הפונקציה listsminus המקבלת 2 רשימות ls1,ls2 ומחזירה רשימה שאיבריה הם כל האיברים מהרשימה ls1 שאינם מופיעים בls2 public static List<Integer> listsminus(list<integer> ls1, List<Integer> ls2){... private static boolean contains(list<integer> ls, Integer data) { for (Node<Integer> p = ls.getfirst(); p!= null; p = p.getnext()){ if (p.getdata().equals(data)){ return true; return false; פונקציית עזר שמקבלת רשימה ומספר ובודקת אם הוא קיים ברשימה

פתרון public static List<Integer> listsminus(list<integer> ls1, List<Integer> ls2){ List<Integer> ans = new List<Integer>(); Node<Integer> pos = null; for (Node<Integer> p = ls1.getfirst(); p!= null; p = p.getnext()){ p.getdata())){ עזר לרוץ על הרשימה (!contains(ls2, if הראשונה. נגדיר מצביע לרשימה חדשה אותו נחזיר ומצביע pos = ans.insert(pos, p.getdata()); נממש קוד שרץ על הרשימה הראשונה ובודק עבור כל איבר אם הוא קיים ברשימה השניה, אם לא נוסיף אותו לרשימה החדשה. איך נבדוק? באמצעות פונקצית העזר שיממשנו בשקופית הקודמת ומופיעה גם פה מטה return ans; private static boolean contains(list<integer> ls, Integer data) { for (Node<Integer> p = ls.getfirst(); p!= null; p = p.getnext()){ if (p.getdata().equals(data)){ return true; return false;

פתרון public static List<Integer> listsminus(list<integer> ls1, List<Integer> ls2){ List<Integer> ans = new List<Integer>(); Node<Integer> pos = null; for (Node<Integer> p = ls1.getfirst(); p!= null; p = p.getnext()){ if (!contains(ls2, p.getdata())){ pos = ans.insert(pos, p.getdata()); return ans; private static boolean contains(list<integer> ls, Integer data) { for (Node<Integer> p = ls.getfirst(); p!= null; p = p.getnext()){ if (p.getdata().equals(data)){ return true; return false;