מבוא למדעי המחשב – שפת C (234112), סמסטר אביב 2009

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

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

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

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

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

Microsoft Word - c_SimA_MoedB2005.doc

Microsoft Word - Ass1Bgu2019b_java docx

Slide 1

Slide 1

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

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

תרגול 1

Microsoft Word B

Slide 1

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

PowerPoint Presentation

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

מדריך למרצים ומתרגלים 1

תוכן העניינים

Microsoft Word - ExamA_Final_Solution.docx

Tutorial 11

שקופית 1

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

ex1-bash

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

ייבוא וייצוא של קבצי אקסל וטקסט

שאלה 2. תכנות ב - CShell

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

234114

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

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

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

תוכן העניינים

PowerPoint Presentation

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

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

PowerPoint Presentation

PowerPoint Presentation

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

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

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

PowerPoint Presentation

Slide 1

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

PRESENTATION NAME

Slide 1

Slide 1

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

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

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

מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה

Microsoft Word - c_SimA_MoedA2006.doc

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

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

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

תיק משימטיקה מגרף הנגזרת לגרף הפונקציה להנגשה פרטנית נא לפנות: כל הזכויות שמורות

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

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

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

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

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

2019 שאלות מומלצות לתרגול מס' דיפרנציאביליות של פונקציה סקלרית )המשך(. כלל השרשרת. S = ( x, y, z) z = x + 3y על המשטח מצאו נקודה בה מישור משיק

T01-1page

Slide 1

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

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

מבנים בדידים וקומבינטוריקה סמסטר אביב תשע"ט מספרי רמזי תרגול 11 הגדרה: (t R = R(s, הוא המספר הטבעי הקטן ביותר כך שבכל צביעה של צלעות הגרף וכחול(, קיים

מכללת הדסה, הפקולטה למדעי המחשב מבוא לתכנות מונחה עצמים והנדסת תוכנה סמסטר א', תשע"ו תרגיל 2 תאריך אחרון להגשה: קמפוס הנביאים יום א', 29/11/2015 בשעה

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור

Slide 1

פקולטה: מחלקה: שם הקורס: קוד הקורס: מדעי הטבע מדעי המחשב ומתמטיקה מתמטיקה בדידה תאריך בחינה: _ 07/07/2015 משך הבחינה: 3 שעות סמ' _ב' מועד

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

Slide 1

PowerPoint Presentation

Microsoft Word - tips and tricks - wave 5.doc

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

PowerPoint Presentation

הוספת קישור לאתר אינטרנט תוכן ממשק בדיקת מטלות...3 איחוד אתרי קורסים...5 סל מחזור... 7 חידושים בפעילויות...8 תצורת קורס: כפתורים... 9 פורומים...10 שיפ

Slide 1

תכנות בשפת פייתון ברק גונן

Microsoft Word - tik latalmid-final

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

Microsoft Word - Sol_Moedb10-1-2,4

מועד: א בחינה סופית במתמטיקה דיסקרטית משך הבחינה: 2 1 שעות מרצה: פרופ' תאופיק מנסור תאריך: סמסטר: א תשע"ח m 2 הוראות לנבחן: )1( הבחינה מו

PowerPoint Presentation

פייתון

ביה"ס היסודי ע"ש יצחק רבין, נשר

Microsoft PowerPoint - rec3.ppt

פקולטה לחינוך מנהל סטודנטים Beit Berl College الكلية االكاديمية بيت بيرل 20/06/2016 י"ד/סיון/תשע"ו ייעוץ וירטואלי הרכבת מערכת )רישום לקורסים( באמצעות

Slide 1

WinZIP תוכנה לדחיסת קבצים ספטמבר 2007

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

HTML - Hipper Text Makeup Language

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

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

YLA Crochet Along פרויקט לסרוג יחד YLA חלק 6 בחלק 6 של לסרוג יחד זה נהפוך את שני העיגולים האחרונים לריבועים ונחבר את ארבעת הריבועים יחד לריבוע אחד גדו

תמליל:

,)234112( אביב 20172018 מבוא למדעי המחשב שפת C תרגיל בית 5 מועד הגשה: עם בונוס יום ראשון 17/06/2018 בשעה 20:00 19:3018:30 המתרגל האחראי על תרגיל זה : משרד: טאוב 410 ישראל גוטר טל' במשרד: 048294974 gisrael@cs.technion.ac.il :Email שעת קבלה רגילה: יום רביעי 9:308:30 שעות קבלה מיוחדות לשאלות על התרגיל : יום שלישי 10:309:30 5.6.2018 וביום שני 11.6.2018 חשוב לשמור את קוד אישור ההגשה שמקבלים מהמערכת כשמגישים!! אם שעות אלו אינן נוחות לכם ניתן לתאם פגישה בשעות אחרות. הוראות הגשה: לגבי שאלות 1 2 : הגשה אלקטרונית בבודדים. לגבי שאלה : 3 הגשה ידנית מודפסת בבודדים כפי שיפורט בהמשך. תרגיל שיוגש בזמן יקבל אוטומטית בונוס של 5 נקודות. תינתן הארכה אוטומטית של יום, יומיים או שלושה ימי עבודה בהתאם ללוח הזמנים )מלבד שישי ושבת( למאחרים, ללא בונוס.ההגשה פתוחה עד ליום האחרון של הארכה לשעה 20:00. חוץ ממילואים, לא יתקבלו תרגילים אחרי הארכה של שלושה ימי עבודה. כל יום מילואים = יום דחייה. על מנת לקבל את הדחייה, עליכם לשלוח באימייל למתרגל האחראי עותק של האישור המראה שהייתם במילואים. אם האישור יגיע על תרגיל זה )ישראל גוטר( אליכם בתאריך מאוחר, אז תודיעו על כך לישראל גוטר. ערעורים ניתן להגיש עד לתאריך המסומן בהודעה על מתן הציונים )כשבועיים לאחר קבלת הציון(. במידה והערעור לא יתקבל תהיה הורדה אוטומטית של הבונוס )חמש נקודות( אם התקבל כזה. עירעורים על הדפסות שגויות בפלט שלכם לא יתקבלו. עליך לבדוק את תוכנית שלך עם DiffMerge לפני הגשתך. הנחיות: אנא קרא/י את השאלות בעיון לפני שתתחיל/י בפתרונן. ניתן להניח כי הקלט תקין, אלא אם כן נאמר אחרת. שימו לב! הבדיקה תהיה אוטומטית, ולכן הקפיד/י מא דו להדפיס בדיוק בפורמט שהתבקשת ולבדוק את הפלט מול הפלט של הדוגמאות שקיבלת עם.DiffMerge o וודא/י את האותיות הגדולות והקטנות לפי הדוגמאות וההסברים בתרגיל. o הורדת שורה אחת בסוף כל שורה שהודפסה, אפילו אם היא האחרונה בתוכנית. o אין להדפיס רווחים בהתחלת שורה ובסופה. יש לבדוק את אתר ה FAQ של התרגיל לעיתים תכופות על מנת לקבל עדכונים על התרגיל.

בתרגיל זה מותר להשתמש בפונקציות מהספרייה stdio.h בלבד )בלי clrscr ו delay (. הגשה אלקטרונית בבודדים היא דרך אתר הקורס. הקפידו להגיש קובץ zip( zip ולא פורמט אחר )!( כגון )rar ה. שם של קובץ חייב להיות באנגלית ללא רווחים. אין דרישות נוספות לשם הקובץ, כלומר גם sharon.zip מקובל מבחינת המערכת. הקובץ יכיל בתוכו רק את הקבצים הבאים )לא לעשות zip על התיקייה בה נמצאים הקבצים להגשה במקרה כזה ההגשה לא תתקבל ע''י המערכת!(: o קובץ students.txt עם שמך, מספר תעודת הזהות וכתובת האימייל שלך. o קובץ פתרון hw5q1.c עבור שאלה 1. o קובץ פתרון hw5q2.c עבור שאלה 2. השתמש ב redirection כדי להפנות את הפלט לקובץ טקסט. יש להקפיד להגיש את כל הקבצים בדיוק עם השמות שמופיעים לעיל. הגשה שלא תעמוד בתנאי זה לא תתקבל ע"י המערכת! שימו לב: בכל 3 השאלות בתרגיל : 1( אסור השימוש במיון, חיפוש ורקורסיה. 2( אסור להוריד פרמטרים מהחתימות הנתונות, אסור לשנות את הטיפוס של הפרמטרים, אסור להוסיף פרמטרים חדשים. 3( יש להקפיד על.topdown design

שאלה מספר 1 מערכים, פונקציות, תכנות Top Down הערה : כל הקוד הדרוש בשאלה זו ייכתב בקובץ אחד :.hw5q1.c בשאלה זו נעסוק במשחק Y ממוחשב. נתון לוח ריבועי בגודל.NxN ישנם 2 שחקנים שמסומנים על ידי התווים. Y כל שחקן בתורו מסמן משבצת פנויה בלוח. שחקן יסמן את המשבצת ב. שחקן Y יסמן את המשבצת ב Y. המנצח במשחק הוא השחקן הראשון שמצליח למלא שורה שלמה של משבצות או עמודה שלמה של משבצות או את אחד מ 2 האלכסונים. בתחילת המשחק מסופקים 3 נתונים : גודל הלוח )אורך הצלע של ריבוע הלוח מספר השורות. מספר השורות שווה בהכרח למספר העמודות.( נסמנו. n מובטח ש 15=>n. מי מתחיל ראשון או. Y מצב התחלתי של הלוח. ניתן להתחיל משחק עם לוח ריק וניתן גם להתחיל את המשחק כאשר הלוח כבר ממולא באופן חלקי..1.2.3 כאמור, המשחק הוא ממוחשב. 2 השחקנים הממוחשבים מסמנים, כל אחד, בתורו, משבצת בלוח, על פי מדיניות אשר תפורט בהמשך. תהליך זה נמשך עד שיש מנצח או עד שהתמלא כל הלוח, גם כשאין מנצח. בסוף המשחק מוצגת הודעה אם היה מנצח או לא. אם היה מנצח, אזי ישנו פירוט מי המנצח ומהו מספר הצעדים שהמנצח ביצע מתחילת המשחק ועד לניצחון. בכל מקרה )גם אם יש מנצח וגם אם אין מנצח( מוצג מצב הלוח לאחר שהמשחק הגיע לסופו. בשאלה זו נכתוב תוכנית למימוש המשחק כפי שתואר לעיל. ניתן להניח שהקלט תקין. אנו נכתוב את התוכנית תוך יישום גישת Top Down ושימוש בפונקציות. להלן יופיע תיאור של הפונקציות השונות שהנכם נדרשים לממש. אסור לשנות את הכותרות של הפונקציות, ובפרט אסור להוסיף או להחסיר פרמטרים. במידת הצורך מותר לכם להוסיף פונקציות נוספות משלכם, ובתנאי שאתם מקפידים להשתמש בפונקציות המתוארות להלן שימוש מושכל ובהתאם לגישת.Top Down כל הקוד ייכתב בקובץ אחד :.hw5q1.c מצורפות דוגמאות הרצה. הקפידו לבדוק את הקוד שתכתבו גם על דוגמאות נוספות מטעמכם. הקפידו על נכונות התוצאות וגם על נכונות הפורמט ירידות שורה וכו. במידת הצורך השתמשו בתוכנת.DiffMerge להלן הפונקציות הנדרשות :

void initboard(char [N][N], int ); הפונקציה מקבלת כפרמטר מערך דו מימדי ריבועי אשר איבריו הם תווים. גודלו הפיזי של המערך הוא NxN כאשר N מוגדר ע"י define ובתוכנית שלנו יש להגדירו 15 ה. פרמטר השני מטיפוס int הוא הגודל האקטואלי של המערך שבו נשתמש בפועל. נסמן פרמטר זה n. אזי את n אנו קולטים בתוכנית הראשית ע"י פקודת scanf בתחילת כל משחק, ומעתה והלאה אנו מתייחסים רק ל n השורות ו n העמודות הראשונות. הפונקציה קולטת את הערכים ההתחלתיים של המשבצות בלוח המשחק. ערך התחלתי למשבצת יכול להיות או Y או שמשמעותו משבצת פנויה. ערכי המשבצות ייקלטו לפי סדר השורות, כל שורה משמאל לימין. הנתונים שייקלט כאן מייצגים מערך של nxn ולא של.NxN התווים יינתנו באופן רציף עבור כל השורה משמאל לימין. כל שורה תופיע בשורה נפרדת בקובץ הקלט.בסוף כל שורה בקובץ הקלט יש ירידת שורה. אין תווי רווח לא במהלך שורה ולא בתחילת שורה או בסוף שורה. int count(char board[n][n], int n, char player, int item, int which); /* which : ROW, COL, MAIN_DIAG, SUB_DIAG */ יש להגדיר ערכי define כדלקמן : #define ROW 1 #define COL 2 #define MAIN_DIAG 3 #define SUB_DIAG 4.nxn. Y הוא האקטואלי גודלו אשר board המשחק לוח את מקבלת count הפונקציה או להיות יכול player הפרמטר ROW SUB_DIAG,MAIN_DIAG, COL, הפרמטר which יכול להיות אחד מ 4 ערכים אפשריים : עבור ROW הפונקציה מחזירה כתוצאה את מספר המשבצות בשורה מספר item אשר מסומנות בשחקן.player עבור COL הפונקציה מחזירה כתוצאה את מספר המשבצות בעמודה מספר item אשר מסומנות בשחקן.player עבור MAIN_DIAG הפונקציה מחזירה כתוצאה את מספר המשבצות באלכסון הראשי אשר מסומנות בשחקן.player האלכסון הראשי זהו האלכסון מהקדקד השמאלי עליון לקדקד הימני תחתון. במקרה זה יש להתעלם מהפרמטר.item

עבור SUB_DIAG הפונקציה מחזירה כתוצאה את מספר המשבצות באלכסון המשני אשר מסומנות בשחקן.player האלכסון המשני זהו האלכסון מהקדקד הימני עליון לקדקד השמאלי תחתון. במקרה זה יש להתעלם מהפרמטר.item int firstfreeplace(char board[n][n], int n, int item, int which, int *row, int *col); /* which : ROW, COL, MAIN_DIAG, SUB_DIAG */ הפונקציה מקבלת לוח board שגודלו האקטואלי הוא.nxn הפרמטרים which ו item הם באותה המשמעות כמו בפעולה.count הפונקציה מוצאת מהם האינדקסים של המשבצת הראשונה הפנויה כרגע באלמנט הרלוונטי. עבור ROW הכוונה למשבצת השמאלית הראשונה הפנויה. עבור COL הכוונה למשבצת העליונה הראשונה הפנויה. עבור 2 האלכסונים הכוונה למשבצת הפנויה שנמצאת בשורה הגבוהה ביותר האפשרית, כלומר אינדקס שורה הנמוך ביותר האפשרי. הפונקציה מספקת כפלט את האינדקסים של המשבצת הפנויה באמצעות 2 הפרמטרים.col row שימו לב שאלה הם פרמטרי פלט ולא קלט. אם לא מוצאים משבצת פנויה אזי יש לתת ערכים של 1 עבור 2 האינדקסים. בנוסף, הפונקציה גם מחזירה כתוצאה 1 אם נמצאה משבצת פנויה. אם לא, אזי יוחזר 0. int nextmove(char board[n][n], int n, char player, int *row, int *col); /* return : 1 if found and win. 2 found but still not win. 0 not found */ פונקציה זו מממשת את המדיניות המנחה את המשחק כיצד שחקן בוחר משבצת. לצורך תרגיל הבית הנוכחי תתואר כאן מדיניות שהיא איננה בהכרח אופטימלית. הסטודנטים מוזמנים לחשוב על מדיניות טובה יותר. לצורך התרגיל הנוכחי יש לממש את המדיניות כפי שתתואר להלן. Y. או n. x n הוא לוח המשחק שגודלו האקטואלי הוא Board הוא השחקן שכרגע מבצע את הצעד הבא. יכול להיות player הם פרמטרי פלט שבאמצעותם הפונקציה מספקת החוצה את האינדקסים של המשבצת col row שאותה השחקן יבחר בצעד הבא שלו. הפונקציה מחזירה כתוצאה 1 אם נמצאה משבצת לצעד הבא וגם ע"י בחירת המשבצת הזו השחקן מנצח במשחק. יוחזר 2 אם נמצאה משבצת לצעד הבא אבל עדין אין ניצחון. יוחזר 0 אם לא נמצאה משבצת לצעד הבא. המשמעות היא שכל משבצות הלוח כבר מלאות. במקרה כזה הערכים שיינתנו עבר האינדקסים הם 1.

מדיניות הבחירה של המשבצת לצעד הבא : סדר החיפוש : מחפשים קודם בין כל השורות לפי סדר השורות, אחר כך בין כל העמודות לפי סדר העמודות. אחר כך מחפשים באלכסון הראשי, ולבסוף מחפשים באלכסון המשני. את הסדר הזה של החיפוש מפעילים פעמיים בשתי פאזות בזו אחר זו : פאזה ראשונה : מתייחסים רק לשורות/עמודות/אלכסונים שבהם אין שום משבצת ששייכת לשחקן היריב. בעקרון מחפשים את השורה/עמודה/אלכסון הראשון לפי סדר החיפוש שבו יש כבר מספר מקסימלי )כפי שנצבר עד עתה במהלך המשחק( של משבצות ששייכות לשחקן של המהלך הנוכחי. המשבצת שתיבחר היא הראשונה הפנויה בשורה/עמודה/אלכסון כפי שנמצא. לגבי שורה זוהי המשבצת השמאלית ביותר הפנויה. לגבי עמודה ו/או אלכסונים זוהי המשבצת הפנויה העליונה ביותר, כלומר עם אינדקס שורה הקטן ביותר האפשרי. פאזה שנייה : אם בפאזה הראשונה לא נמצאה משבצת כמתואר, אזי ממשיכים לפאזה שניה. פאזה זו מתנהלת כמו הפאזה הראשונה, אלא שכאן עוברים על כל שאר השורות/עמודות/אלכסונים שבהם לא חיפשנו בפאזה הראשונה. אם לא נמצאה משבצת בסוף הפאזה השניה, אזי המשמעות היא שאין כלל משבצת פנויה בלוח. void displayboard (char [N][N], int); הפונקציה מקבלת כפרמטר לוח משחק ריבועי אשר גודלו הפיזי הוא NxN אבל מתייחסים רק לחלקו האקטואלי. הפרמטר השני מגדיר את מספר השורות האקטואליות ומספר העמודות האקטואליות מתוך N שרק אליהן מתייחסים. הפונקציה מציגה כפלט את לוח המשחק על פי גודלו האקטואלי )ולא על פי גודלו הפיזי.)NxN כל שורה בלוח מוצגת בשורה נפרדת, כאשר בין כל 2 תווים של ערכי המשבצות ישנו תו רווח. אין תווים בתחילת שורה ובסופה. גם בסוף השורה האחרונה של הלוח יורדים שורה. התוכנית הראשית : כפי שתואר, התוכנית הראשית מממשת את המשחק. בתחילת המשחק התוכנית קולטת 3 נתונים כדלקמן : גודל צלע הלוח n כאמור, מובטח 15=>n. לאחר מכן, בשורה הבאה בקלט היא קולטת תו או Y מיהו השחקן ההתחלתי. לאחר מכן היא קולטת את המצב ההתחלתי של הלוח. כל שורה בלוח ניתנת כשורה נפרדת בקובץ הקלט. כפי שכבר צוין, בסוף המשחק מוצגת הודעה אם היה מנצח או לא. אם היה ישנו פירוט מי המנצח ומהו מספר הצעדים שהמנצח ביצע מתחילת המשחק ועד לניצחון )כמה משבצות בסך הכל הוא סימן בלוח. זה לא כולל את מספר המשבצות שהיו מסומנות עבורו לפני תחילת המשחק(. בכל מקרה )גם אם יש מנצח וגם אם אין מנצח( מוצג מצב הלוח לאחר שהמשחק הגיע לסופו.

דוגמה : 1 נניח שלפנינו הקלט הבא : 4 Y Y Y Y משמעות הקלט : קולטים : 4 כלומר לפנינו לוח בגודל 4x4 קולטים : כלומר השחקן הראשון שמשחק על הלוח יהיה. מצב התחלתי של הלוח יהיה כדלקמן : Y Y Y Y הפלט שיתקבל לאחר הרצת התוכנית הוא : no winner Y Y Y Y Y Y Y Y נשים לב : אחרי no winner מוצג מצב הלוח בסיום המשחק. בדוגמה זו הלוח הוא בגודל 4 x 4 ולכן הלוח מוצג באמצעות 4 שורות. בין כל 2 תווים סמוכים בשורה ישנו תו רווח. בסוף שורה אין רווח ומיד יורדים שורה. גם בסוף השורה האחרונה של הלוח יורדים שורה.

דוגמה : 2 נניח שלפנינו הקלט הבא : 3 Y הפלט שיתקבל לאחר הרצת התוכנית הוא : won in 2 steps Y Y נשים לב : אמנם יש 4 משבצות שמסומנות, אבל 2 מהם היו מסומנות עוד לפני תחילת המשחק ולכן בסך הכל השחקן ביצע רק 2 צעדים. עליכם לכתוב בקובץ hw5q1.c את הקוד המלא עבור כל הפונקציות המתוארות לעיל. יש להקפיד על שימוש מושכל בפונקציות השונות ויישום שיטת.Top Down במידת הצורך מותר להגדיר גם פונקציות עזר נוספות. אסור להשתמש בספריות כלשהן של שפת C למעט.stdio.h בפרט אסור להשתמש ב.string.h אסור להשתמש ברקורסיה. מצורפים קבצי קלט פלט בתור דוגמאות. בדקו את התוכנית על דוגמאות אלה וגם על דוגמאות נוספות משלכם. כהקפידו על פורמט מדויק של הפלט, ובפרט ירידת שורה, בהתאם למוגדר. תוכלו להיעזר בתוכנת.DiffMerge

שאלה מספר 2 מחרוזות הערה : כל הקוד הדרוש בשאלה זו ייכתב בקובץ אחד :.hw5q2.c רצף תווים שמופיע במחרוזת ייקרא מילה בתנאי שהרצף אינו מכיל בתוכו את התו _ וגם הוא תחום בשני הקצוות שלו בתו _ או בקצות המחרוזת. דוגמאות Hello_World כאן ישנן 2 מילים אשר ביניהן מופיע תו _ אחד. ולאחריה f abc 4534 f כאן ישנן 3 מילים : abc ולאחריה 4534 ghfg ghfg כאן ישנה מילה יחידה : סעיף א כתבו פונקציה *) change(char void הפונקציה מקבלת כפרמטר מחרוזת אשר אינה מכילה תווי רווח וגם לא טאבים וגם לא תווי ירידת שורה n\. הפונקציה משנה את המחרוזת כך שתופענה בה המילים בזו אחר זו כאשר בין כל 2 מילים סמוכות מופיע תו _ יחיד. לא יופיעו כלל תוי _ בתחילת המחרוזת או בסופה. בנוסף, בכל מילה שמופיעה במחרוזת, אם התו הראשון שלה הוא תו abc..z קטן אזי הוא ישתנה לתו גדול. כל תו abc..z אחר )קטן או גדול( שמופיע במחרוזת צריך להופיע כתו קטן במחרוזת התוצאה. שאר התווים לא משתנים. דוגמאות : עבור המחרוזת abc 4534 f נקבל את המחרוזת Abc_4534_F עבור המחרוזת!aBC 4534!f נקבל את המחרוזת!abc_4534_!f דרישות :.string.h אסור להשתמש כלל בפונקציות מהספריה 1. אסור להשתמש ברקורסיה. 2. מותר להשתמש בלולאה יחידה. אסור להשתמש במערך או במחרוזת נוספת מאשר המחרוזת 3. שמתקבלת כפרמטר. לגבי המגבלה בסעיף 3: מותר להשתמש ביותר מלולאה אחת.

סעיף ב כתבו תוכנית ראשית. התוכנית קולטת מחרוזות שונות בזו אחר זו. מובטח שכל מחרוזת אינה מכילה תווי רווח וגם לא טאבים וגם לא תווי ירידת שורה n\. מובטח שכל מחרוזת אינה מכילה יותר מ 100 תווים )לא כולל 0\ (. מובטח שבסוף סדרת המחרוזות תופיע המחרוזת או x. מחרוזת זו אינה נחשבת חלק מהקלט והיא רק מסמנת את סוף הקלט. התוכנית תפעיל על כל מחרוזת את הפונקציה לעיל ותציג את המחרוזת לאחר השינוי. בסוף ההצגה של כל מחרוזת יורדים שורה. דוגמה : עבור הקלט מתקבל הפלט קובץ הקלט אינו בהכרח מכיל כל מחרוזת בשורה חדשה. _abcd_ Abcd _1 2 3 4 מצורפים קבצי דוגמאות. הקפידו על הצגת הפלט בפורמט מתאים, ובפרט הקפידו על ירידות שורה. Abcd Abcd 1_2_3_4 שאלה מספר 3

הנחיות ההגשה : שימו לב שאת השאלה הזו מגישים הגשה יבשה בלבד,כלומר יש להגיש את הפתרון המודפס שלכם לשאלה כולל תצלומי מסך מודפסים של דוגמאות ההרצה המבוקשות,לאחד משני תאי הקורס 234112 בבניין טאוב (מדעי המחשב ( קומה 1, (קומה אחת מעל קומת הכניסה התחתונה ( ולא לתא של אף קורס אחר דומה!, מצורפת תמונה : עבור כל דף בהגשה המודפסת שלכם,להוסיף שם מלא ) בעברית), מספר זהות ואימייל לראש העמוד.חשוב מאוד שמספר זהות שלכם יהיה בכתב קריא,אחרת תסתכנו באי קבלת ציון על השאלה! על הפתרון להיות קריא ומתועד, כלומר עם הערות המסבירות אותו בפורמט אותו למדנו בכיתה )ולא בפורמט של ++C, למשל!(. בפורמט בפרט מופיע בתרגול מספר 2 שקף 17. יש להשתמש בהזחה ( Indentation (. הסבר מופיע בתרגול 2 בשקף 16 )שימו לב שבנוסף לשאר ההזחות בקוד, גם עבור גוף הפונקציה הראשית main צריך להשתמש בהזחה, כלומר להזיח את כל הקוד שתחום ב {... } הזחה פנימה, כמו שאפשר לראות, למשל, בתרגול 2 שקף 14(. יש לתת שמות משמעותיים למשתנים שלכם )שוב, בדקו בתרגול 2 את שקף 8(. אי הקפדה על הדרישות האלה תגרור הורדת נקודות. מה מגישים? איך מגישים? לכל סעיף צריך להגיש : הקוד המודפס מקודבלוקס. כלומר, אתם פותרים את השאלה וכותבים את הקוד בקודבלוקס, ואז אתם מדפיסים אותו דרך.File < Print אם אתם מתקשים בהדפסה מקודבלוקס אתם יכולים להשתמש בכל שיטת הדפסה אחרת שנוחה לכם אבל שהקוד שלכם יצא ברור, מסודר וקריא. נא לא להגיש קודים הפוכים בכיוונים שלהם. בפרט, אפשר גם, למשל, להוסיף הערות לקוד בכתב יד לאחר ההדפסה, אבל בכתב נקי וברור!(. נדרש להדפיס ולהגיש בסך הכל 4 דוגמאות הרצה. צריך להריץ את התוכנית בקודבלוקס ולהזין לה בכל פעם את קלט הדוגמה, ואז לראות שהיא מציגה במסך את מה שצריך ולחלון השחור הזה לעשות תצלום מסך screen( )print ולהדפיס אותו. שימו לב לא להגיש תצלום של כל המסך שלכם, תחתכו רק את החלון השחור. דוגמה מתאימה מופיעה בסוף השאלה. חובה לראות הן את ההרצה עצמה, הן את הקלט שאתם נותנים והן את הפלט המתקבל )אם, למשל, הקלט המוכנס אינו מופיע בתדפיס המסך אז יורדו נקודות(. הנכם מתבקשים להריץ את התוכנית הראשית שתינתן בהמשך עם 2 קלטי הדוגמה שיינתנו כאן, וגם להוסיף עוד 2 דוגמאות שלכם..1.2 שימו לב : על אי צירוף של הדוגמאות יורד חצי מהניקוד על השאלה. סעיף א כתבו פונקציה *res) void printlettersordered(char *str, char

הפונקציה מקבלת כפרמטר מחרוזת,str הכוללת אותיות באנגלית, קטנות ו/או גדולות בלבד. הפונקציה מכניסה את האותיות של המחרוזת str לפי סדר הא"ב אל תוך המחרוזת res בצורה הבאה: אם האות מופיעה יותר מפעם אחת במחרוזת str אז היא תופיע ב res אותו מספר הפעמים. אם האות המסוימת הופיעה בשתי הצורות שלה )גדולה וקטנה(, אז קודם מכניסים לתוך res את האות הגדולה כמספר המופעים שלה ב str ולאחר מכן את האות הקטנה כמספר המופעים שלה ב.str יש לדאוג כי המחרוזת res תהיה מחרוזת חוקית. str= babababa res= AAaaBBbb דוגמה 1 דוגמה 2 str= PrintCapitalLettersBeforeSmallLetters res="aaabceeeeeefiilllllmnopprrrrssstttttt" ניתן להניח שמחרוזת התוצאה res שניתנת כפרמטר לפונקציה מכילה מספיק מקום שנדרש לבניית התוצאה. הגדרה של יותר מ 10 משתני עזר יגרום לציון 0 )אפס( על שאלה זו. אסור להשתמש בפונקציות ספרייה. בפרט, אסור להשתמש בספריה.string.h הקלט תקין, המחרוזת str כוללת אותיות באנגלית, קטנות ו/או גדולות בלבד )אין רווחים, אין תווים נוספים(. הערות סעיף ב השתמשו בפונקציית ה main הנתונה בהמשך כדי להריץ את הפונקציה מהסעיף הקודם. הריצו את התוכנית על שתי הדוגמאות שניתנו לעיל והדפיסו את המסך )חלון שחור בלבד( כך שניתן לראות בו מה היה הקלט ומה מוצג כפלט על המסך. בנוסף, כפי שכבר נדרש, הריצו את את התוכנית על שתי דוגמאות נוספות שלכם, וגם כאן, הדפיסו את המסך )חלון שחור בלבד( כך שניתן לראות בו מה היה הקלט ומה מוצג כפלט על המסך. הקפידו שהדוגמאות חוקיות, כלומר מכילות תווי א"ב אנגלי קטנות/גדולות בלבד. בנוסף, הקפידו שכל מחרוזת לא תכיל יותר מ 100 תווים. שימו לב : על אי צירוף של כל ארבע )4!( הדוגמאות יורד חצי מהניקוד על השאלה. להלן דוגמת הרצה המתייחסת לדוגמה הראשונה שניתנה : #include <stdio.h> void printlettersordered(char *, char *); #define N 100

int main() { char s1[n+1], s2[n+1]; scanf(to be completed); /* for the input string */ printlettersordered(to be completed); printf("the results for %s is %s\n", to be completed); /*print both, input and output strings */ return 0; }