etal פורסם 2020 בנובמבר 30 Share פורסם 2020 בנובמבר 30 תעבור שוב על האלגוריתם שכתבת מהתחלה הוא פשוט לא עונה על השאלה שנשאלה, זו לא בעיה רק עם התנאי בסוף זה הרבה יותר מזה. כמו שאמרתי קודם תנסה לעבוד עם דיבגר אם זה ממש לא מסתדר לך אז תוסיף בכל פונקציה הדפסות של התקדמות והמצב הנוכחי ותנסה להבין מתוך הפלט איפה אתה מפספס. ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
BAR_PC פורסם 2020 בנובמבר 30 מחבר Share פורסם 2020 בנובמבר 30 ציטוט של etal תעבור שוב על האלגוריתם שכתבת מהתחלה הוא פשוט לא עונה על השאלה שנשאלה, זו לא בעיה רק עם התנאי בסוף זה הרבה יותר מזה. כמו שאמרתי קודם תנסה לעבוד עם דיבגר אם זה ממש לא מסתדר לך אז תוסיף בכל פונקציה הדפסות של התקדמות והמצב הנוכחי ותנסה להבין מתוך הפלט איפה אתה מפספס. אתה מתכוון לקוד האחרון שכתבתי? אני אנסה את זה תודה אבל למה הוא לא עונה על השאלה? עובדה שבחלק מהדוגמאות זה עובד. ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
etal פורסם 2020 בנובמבר 30 Share פורסם 2020 בנובמבר 30 (נערך) ציטוט עובדה שבחלק מהדוגמאות זה עובד זה על תקן שגם שעון מקולקל מדייק פעמיים ביום. אני רואה שכבר אתמול כתבו לך בדיוק למה זה לא עובד, לא ראיתי שעשית שום דבר לתקן את העניין גם לא בקוד האחרון ציטוט של af db creid לא מספיק לבדוק לפי הסדר אם השני מתחלק בראשון והשלישי בשני. זה לא ימצא את כל התבניות לדוג' במקרה שלך - 15 לא מחלק את 20, אז הלולאה של divide_left מפסיקה. למרבה הצער, זה ש15 לא מחלק את 20 לא אומר שהוא לא מחלק את 30. למרבה הצער, אין דרך קיצור - תצטרך לבדוק עבור כל איבר במערך את כל האיברים משמאלו ומימינו. נערך 2020 בנובמבר 30 על-ידי etal 1 ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
BAR_PC פורסם 2020 בנובמבר 30 מחבר Share פורסם 2020 בנובמבר 30 (נערך) ציטוט של etal זה על תקן שגם שעון מקולקל מדייק פעמיים ביום. אני רואה שכבר אתמול כתבו לך בדיוק למה זה לא עובד, לא ראיתי שעשית שום דבר לתקן את העניין גם לא בקוד האחרון אני משנה כל פעם את התא עם j מעלה כל פעם ב1 או מוריד באחד לפי הצורך (ימין שמאל) כדי לבדוק אם התא מתחלק בכל התאים...או שבראש שלי חושב אחרת כאילו ניסיתי לקצר את זה בלולאה שאם התא מתחלק משמאלו אז עם j זה יבדוק את התא אחריו וכך הלאה או שמחשבות לחוד וקוד לחוד הבנת את הכוונה שלי?... תודה נערך 2020 בנובמבר 30 על-ידי BAR_PC ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
af db creid פורסם 2020 בדצמבר 1 Share פורסם 2020 בדצמבר 1 ציטוט של BAR_PC אני משנה כל פעם את התא עם j מעלה כל פעם ב1 או מוריד באחד לפי הצורך (ימין שמאל) כדי לבדוק אם התא מתחלק בכל התאים...או שבראש שלי חושב אחרת כאילו ניסיתי לקצר את זה בלולאה שאם התא מתחלק משמאלו אז עם j זה יבדוק את התא אחריו וכך הלאה או שמחשבות לחוד וקוד לחוד הבנת את הכוונה שלי?... תודה הבנתי, וכמו שכתבתי זה לא עובד, וגם הסברתי למה ונתתי דוגמה. ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
BAR_PC פורסם 2020 בדצמבר 1 מחבר Share פורסם 2020 בדצמבר 1 (נערך) ציטוט של af db creid הבנתי, וכמו שכתבתי זה לא עובד, וגם הסברתי למה ונתתי דוגמה. זה מה שצריך לעשות? כי גם פה ניראלי שיש בעיה... //------include section------- #include <iostream> #include <cstdlib> //------std section------- using std:: cin; using std:: cout; using std:: endl; //------const section const int N = 6; // The size you want to set //---prtotypes section---- void read_data (int arr[]); int divide_left(int arr[], int cell); int divide_right (int arr[], int cell); int happend(int arr[], int cell); /////-----Main------- int main() { int arr[N]; read_data(arr); int cell; int found = happend(arr,cell); cout << found; return EXIT_SUCCESS ; } void read_data(int arr[]) { for(int i = 0; i < N; i++) cin >> arr[i]; } int divide_left(int arr[], int cell) { int findleft = 1; for(int i = 0; i < N; i++) { for(int j = i; j < N; j++) { if (arr[j] % arr[i] != 0) { findleft = 0; break; } findleft = 1; cell = j; } } return findleft; } int divide_right (int arr[], int cell) { int findright = 1; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if(arr[i] % arr[j] != 0) { findright = 0; break; } findright = 1; cell = i; } } return findright; } int happend(int arr[], int cell) { int i = divide_right (arr, cell); int j = divide_right (arr,cell); if(i == 1 && j == 1) { for(int i = 0; i < N; i++) { divide_right (arr,cell); return cell; } } return -1; } תודה נערך 2020 בדצמבר 1 על-ידי BAR_PC ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
etal פורסם 2020 בדצמבר 1 Share פורסם 2020 בדצמבר 1 עכשיו הקוד שלך לא קורא ל-divide_left בכלל לגבי שאר הקוד הוספת לולאות אבל לדעתי הן לא במקום הנכון, אי אפשר לחפש פתרון של חלוקה מכיוון אחד ואז לחפש פתרון חלוקה מהכיוון השני בשני חיפושים נפרדים ואז להניח שבגלל שמצאת שני פתרונות אז הפתרונות הם זהים. אני מציע שתיגש לזה מכיוון אחר ותנסה לפרק את הבעיה לבעיות קטנות ופשוטות יותר ורק אחרי שפתרת אותן אז תרכיב הכל ביחד. תנסה לפתור את הבעיה לגבי תא יחיד, האם תא מספר X מקיים את התנאים? רק אחרי שיש לך פונקציה שעונה על זה אז תריץ אותה בלולאה על כל שאר התאים. 1 ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
BAR_PC פורסם 2020 בדצמבר 1 מחבר Share פורסם 2020 בדצמבר 1 ציטוט של etal עכשיו הקוד שלך לא קורא ל-divide_left בכלל לגבי שאר הקוד הוספת לולאות אבל לדעתי הן לא במקום הנכון, אי אפשר לחפש פתרון של חלוקה מכיוון אחד ואז לחפש פתרון חלוקה מהכיוון השני בשני חיפושים נפרדים ואז להניח שבגלל שמצאת שני פתרונות אז הפתרונות הם זהים. אני מציע שתיגש לזה מכיוון אחר ותנסה לפרק את הבעיה לבעיות קטנות ופשוטות יותר ורק אחרי שפתרת אותן אז תרכיב הכל ביחד. תנסה לפתור את הבעיה לגבי תא יחיד, האם תא מספר X מקיים את התנאים? רק אחרי שיש לך פונקציה שעונה על זה אז תריץ אותה בלולאה על כל שאר התאים. טעות של העתקה חח תיקנתי את int i ל divide_left. איפה היית ממקם את הלולאות? ככה זה עובר על כל התאים,לא? בעיקרון שכחתי לעדכן (מצטער מראש) שהוראת התרגיל זה לעשות 3 פונקציות אחת שתבדוק מימין אחת משמאל והשלישית בודקת אם שניהן מתקיימות ומחזירה את מס התא או -1. אז אני לא רואה דרך אחרת חוץ מזאת שתבדוק לי מכל צד ואם שתיהן מתקיימות אז... יש אפשרות אחרת על פי ההוראות? תודה ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
etal פורסם 2020 בדצמבר 2 Share פורסם 2020 בדצמבר 2 (נערך) האם בהוראות הגדירו לך בדיוק את הקלט והפלט של כל הפונקציות? די ברור שלא הבנת נכון את הכוונה של cell והדרך שאתה משתמש בו כרגע חסרת משמעות. תשנה את הפונקציות divide_right ו-divide_left ככה שיבדקו רק האם אותו מספר תא ספציפי מקיים את התנאי או שלא ומחזירות תשובה בהתאם. ברגע שתעשה את זה אני רוצה להאמין שההמשך יהיה לך ברור. נערך 2020 בדצמבר 2 על-ידי etal ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
BAR_PC פורסם 2020 בדצמבר 2 מחבר Share פורסם 2020 בדצמבר 2 ציטוט של etal האם בהוראות הגדירו לך בדיוק את הקלט והפלט של כל הפונקציות? די ברור שלא הבנת נכון את הכוונה של cell והדרך שאתה משתמש בו כרגע חסרת משמעות. תשנה את הפונקציות divide_right ו-divide_left ככה שיבדקו רק האם אותו מספר תא ספציפי מקיים את התנאי או שלא ומחזירות תשובה בהתאם. ברגע שתעשה את זה אני רוצה להאמין שההמשך יהיה לך ברור. כן שתי פונקציות שמקבלות מערך ומחזירות מספר תא (כל אחת בודקת מכל צד) ועוד פונקציה שבודקת אם אם התנאים מתקיימים אם כן היא מחזירה את מספר התא אם לא היא מחזירה -1. אני רוצה לשמור את הcell בשביל לבדוק בפונקציה ולהחזיר את מספר התא אם צריך ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
etal פורסם 2020 בדצמבר 2 Share פורסם 2020 בדצמבר 2 ציטוט של BAR_PC אני רוצה לשמור את הcell בשביל לבדוק בפונקציה ולהחזיר את מספר התא אם צריך כמו שכבר אמרתי הקוד שלך כרגע לא משתמש ב-cell לשום דבר ואי אפשר להחזיר ערך דרך הקלט של הפונקציה (אלא אם משתמשים בפויינטרים וזה ממש לא דרוש פה). ניסיתי לכוון אותך לפתרון הפשוט והמתבקש של הבעיה אבל אתה מתעקש לא להקשיב. אני פרשתי מהדיון הזה, שיהיה לך בהצלחה. ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
Jabberwock פורסם 2020 בדצמבר 2 Share פורסם 2020 בדצמבר 2 תיקנתי את הקוד. זה בסדר? //------include section------- #include <iostream> #include <cstdlib> //------std section------- using std:: cin; using std:: cout; using std:: endl; //------const section const int N = 6; // The size you want to set //---prtotypes section---- void read_data (int arr[]); bool divide_left(int arr[], int cell); bool divide_right (int arr[], int cell); int search_for_the_magic_cell(int arr[]); /////-----Main------- int main() { int arr[N];// = { 180, 120, 60, 30, 20, 15 }; read_data(arr); int result = search_for_the_magic_cell(arr); if (result != -1) cout << "we got a match !! cell number is " << result << " and its value is " << arr[result]; else cout << "no I didn't find anything"; return EXIT_SUCCESS ; } void read_data(int arr[]) { for(int i = 0; i < N; i++) cin >> arr[i]; } bool divide_left(int arr[], int cell) { for (int i = cell - 1; i >= 0; i--) if (arr[i] % arr[cell] != 0) return false; return true; } bool divide_right(int arr[], int cell) { for (int i = cell + 1; i < N; i++) if (arr[cell] % arr[i] != 0) return false; return true; } int search_for_the_magic_cell(int arr[]) { // so I we a loop to check if each element in the array is the magic cell for (int i = 0; i < N; i++) { bool l = divide_left(arr, i); bool r = divide_right(arr, i); if (l && r) return i; } return -1; } 180 120 60 30 20 15 we got a match !! cell number is 2 and its value is 60 1 ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
BAR_PC פורסם 2020 בדצמבר 5 מחבר Share פורסם 2020 בדצמבר 5 ציטוט של Jabberwock תיקנתי את הקוד. זה בסדר? //------include section------- #include <iostream> #include <cstdlib> //------std section------- using std:: cin; using std:: cout; using std:: endl; //------const section const int N = 6; // The size you want to set //---prtotypes section---- void read_data (int arr[]); bool divide_left(int arr[], int cell); bool divide_right (int arr[], int cell); int search_for_the_magic_cell(int arr[]); /////-----Main------- int main() { int arr[N];// = { 180, 120, 60, 30, 20, 15 }; read_data(arr); int result = search_for_the_magic_cell(arr); if (result != -1) cout << "we got a match !! cell number is " << result << " and its value is " << arr[result]; else cout << "no I didn't find anything"; return EXIT_SUCCESS ; } void read_data(int arr[]) { for(int i = 0; i < N; i++) cin >> arr[i]; } bool divide_left(int arr[], int cell) { for (int i = cell - 1; i >= 0; i--) if (arr[i] % arr[cell] != 0) return false; return true; } bool divide_right(int arr[], int cell) { for (int i = cell + 1; i < N; i++) if (arr[cell] % arr[i] != 0) return false; return true; } int search_for_the_magic_cell(int arr[]) { // so I we a loop to check if each element in the array is the magic cell for (int i = 0; i < N; i++) { bool l = divide_left(arr, i); bool r = divide_right(arr, i); if (l && r) return i; } return -1; } 180 120 60 30 20 15 we got a match !! cell number is 2 and its value is 60 כן תודה רבה ממש! מעריך ציטוט קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
הצטרפ/י לדיון
בשלב זה תוכל/י להצטרף לדיון, ולאחר מכן להצטרף לקהילה שלנו. אם כבר יש לך חשבון אצלנו, אנא התחבר/י עכשיו על מנת להגיב תחת שם המשתמש שלך.
לתשומת לבך: התגובה תופיע לגולשים לאחר אישור של צוות הנהלת הפורומים.