עבור לתוכן

עזרה בכמה שאלות בשפת C ו-Java

Featured Replies

פורסם

שלום לכולם. אני צריך עזרה ב-3 שאלות... לא צריך פתרון מלא אלא רק הדרכה וטיפה קוד. :P תודה לעוזרים.

שפת C:

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

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

Java:

כתוב תוכנית היוצרת מערך דו ממדי בגודל N בצורה הבאה (ראה תמונה 2). יש לאתחל את המערך בספרות של המספר הראשוני הראשון שמספר ספרותיו הוא כמספר התאים. (אפשר להניח שיש לנו פונקציה isPrime אשר מקבלת מספר שלם ומחזירה '1' אם הוא ראשוני ו'0' אחרת)

תודה לעוזרים.

[attachment deleted by admin]

פורסם

את 1 לא הבנתי... מה ז"א "בכל חלק"?

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

לאחר מכן, תעבור על המחרוזת ותוסיף עבור כל אות שעברת עליה 1 למקום המתאים במערך.

אח"כ תעבור על המערך שלך ומצא את המקסימום (מספיק לעבור פעם 1).

זהו... יעיל ופשוט...

פורסם
  • מחבר

יש 4 חלקים אדומים. צריך לבדוק אם סכום כל התאים (המספרים בתוכם) בכל חלק אדום שווים...

ויש איזו דרך לעשות את 2 מבלי להקצות מערך נוסף?

פורסם

bla7 - הפתרון שלך לא מתאים, כי צריך למצוא את האות שמופיעה הכי הרבה פעמים ברצף.

מספיק לעבור על המערך פעם אחת.

תשמור בצד ארבעה משתנים - האות שהופיעה הכי הרבה פעמים עד כה, כמה פעמים היא הופיעה, האות הנוכחית, וכמה פעמים ברצף היא כבר מופיעה.

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

פורסם
  • מחבר

מממ... מה עם השאר? :-[

פורסם

עבהור 1-

תשמור 4 משתנים- כל משתנה מסמן סכום בחלק מסויים.

עכשיו תשים לב שיש קשר כלשהו בין החלקים השונים למספר העמודה ומספר השורה.

למשל החלק הראשון(החץ שפונה למטה), עבור i עמודה ו j שורה:

j<height/2

i>j

i<width-j

תמצא תנאים עבור שאר החלקים.

לאחר מכן, תעבור על כל התאים במערך(ב- 2 לולאות), ותראה בעזרת הIFים, לאיזה חלק הוא שייך, ותגדיל את הסכום עבור אותו חלק.

עבור השאלה של הJAVA:

עבור השורה הראשונה תבדוק מי המספר הראשוני הראשון שיש לו ספרה אחת, כלומר מי המספר הראשוני הראשון בין 1 ל- 9

עבור השורה השניה תחפש את המספר הראשוני הראשון בעל 2 ספרות- בין 10 ל99.

עבור השורה השלישית תחפש את המספר הראשוני הראשון בעל 3 ספרות- בין 100 ל- 999

שים לב שאתה יכול לייעל את זה. אתה יודע שמספר ראשוני לא יכול להיות 10 או 100 וכו, ולכן תמיד תתחיל מ- 11, 101 וכו.

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

כמו כן, אתה יודע שמספר ראשוני לא יכול להיות זוגי, ולכן תוסיף 2 כל פעם ולא 1.

פורסם

bla7 - הפתרון שלך לא מתאים, כי צריך למצוא את האות שמופיעה הכי הרבה פעמים ברצף.

צודק. קראתי ברפרוף. :-[

פורסם
  • מחבר

עבהור 1-

תשמור 4 משתנים- כל משתנה מסמן סכום בחלק מסויים.

עכשיו תשים לב שיש קשר כלשהו בין החלקים השונים למספר העמודה ומספר השורה.

למשל החלק הראשון(החץ שפונה למטה), עבור i עמודה ו j שורה:

j<height/2

i>j

i<width-j

תמצא תנאים עבור שאר החלקים.

לאחר מכן, תעבור על כל התאים במערך(ב- 2 לולאות), ותראה בעזרת הIFים, לאיזה חלק הוא שייך, ותגדיל את הסכום עבור אותו חלק.

עבור השאלה של הJAVA:

עבור השורה הראשונה תבדוק מי המספר הראשוני הראשון שיש לו ספרה אחת, כלומר מי המספר הראשוני הראשון בין 1 ל- 9

עבור השורה השניה תחפש את המספר הראשוני הראשון בעל 2 ספרות- בין 10 ל99.

עבור השורה השלישית תחפש את המספר הראשוני הראשון בעל 3 ספרות- בין 100 ל- 999

שים לב שאתה יכול לייעל את זה. אתה יודע שמספר ראשוני לא יכול להיות 10 או 100 וכו, ולכן תמיד תתחיל מ- 11, 101 וכו.

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

כמו כן, אתה יודע שמספר ראשוני לא יכול להיות זוגי, ולכן תוסיף 2 כל פעם ולא 1.

סבבה. תודה ;)

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים