פורסם 2020 בנובמבר 304 שנים תעבור שוב על האלגוריתם שכתבת מהתחלה הוא פשוט לא עונה על השאלה שנשאלה, זו לא בעיה רק עם התנאי בסוף זה הרבה יותר מזה. כמו שאמרתי קודם תנסה לעבוד עם דיבגר אם זה ממש לא מסתדר לך אז תוסיף בכל פונקציה הדפסות של התקדמות והמצב הנוכחי ותנסה להבין מתוך הפלט איפה אתה מפספס.
פורסם 2020 בנובמבר 304 שנים מחבר ציטוט של etal תעבור שוב על האלגוריתם שכתבת מהתחלה הוא פשוט לא עונה על השאלה שנשאלה, זו לא בעיה רק עם התנאי בסוף זה הרבה יותר מזה. כמו שאמרתי קודם תנסה לעבוד עם דיבגר אם זה ממש לא מסתדר לך אז תוסיף בכל פונקציה הדפסות של התקדמות והמצב הנוכחי ותנסה להבין מתוך הפלט איפה אתה מפספס. אתה מתכוון לקוד האחרון שכתבתי? אני אנסה את זה תודה אבל למה הוא לא עונה על השאלה? עובדה שבחלק מהדוגמאות זה עובד.
פורסם 2020 בנובמבר 304 שנים ציטוט עובדה שבחלק מהדוגמאות זה עובד זה על תקן שגם שעון מקולקל מדייק פעמיים ביום. אני רואה שכבר אתמול כתבו לך בדיוק למה זה לא עובד, לא ראיתי שעשית שום דבר לתקן את העניין גם לא בקוד האחרון ציטוט של af db creid לא מספיק לבדוק לפי הסדר אם השני מתחלק בראשון והשלישי בשני. זה לא ימצא את כל התבניות לדוג' במקרה שלך - 15 לא מחלק את 20, אז הלולאה של divide_left מפסיקה. למרבה הצער, זה ש15 לא מחלק את 20 לא אומר שהוא לא מחלק את 30. למרבה הצער, אין דרך קיצור - תצטרך לבדוק עבור כל איבר במערך את כל האיברים משמאלו ומימינו. נערך 2020 בנובמבר 304 שנים על-ידי etal
פורסם 2020 בנובמבר 304 שנים מחבר ציטוט של etal זה על תקן שגם שעון מקולקל מדייק פעמיים ביום. אני רואה שכבר אתמול כתבו לך בדיוק למה זה לא עובד, לא ראיתי שעשית שום דבר לתקן את העניין גם לא בקוד האחרון אני משנה כל פעם את התא עם j מעלה כל פעם ב1 או מוריד באחד לפי הצורך (ימין שמאל) כדי לבדוק אם התא מתחלק בכל התאים...או שבראש שלי חושב אחרת כאילו ניסיתי לקצר את זה בלולאה שאם התא מתחלק משמאלו אז עם j זה יבדוק את התא אחריו וכך הלאה או שמחשבות לחוד וקוד לחוד הבנת את הכוונה שלי?... תודה נערך 2020 בנובמבר 304 שנים על-ידי BAR_PC
פורסם 2020 בדצמבר 14 שנים ציטוט של BAR_PC אני משנה כל פעם את התא עם j מעלה כל פעם ב1 או מוריד באחד לפי הצורך (ימין שמאל) כדי לבדוק אם התא מתחלק בכל התאים...או שבראש שלי חושב אחרת כאילו ניסיתי לקצר את זה בלולאה שאם התא מתחלק משמאלו אז עם j זה יבדוק את התא אחריו וכך הלאה או שמחשבות לחוד וקוד לחוד הבנת את הכוונה שלי?... תודה הבנתי, וכמו שכתבתי זה לא עובד, וגם הסברתי למה ונתתי דוגמה.
פורסם 2020 בדצמבר 14 שנים מחבר ציטוט של 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 בדצמבר 14 שנים על-ידי BAR_PC
פורסם 2020 בדצמבר 14 שנים עכשיו הקוד שלך לא קורא ל-divide_left בכלל לגבי שאר הקוד הוספת לולאות אבל לדעתי הן לא במקום הנכון, אי אפשר לחפש פתרון של חלוקה מכיוון אחד ואז לחפש פתרון חלוקה מהכיוון השני בשני חיפושים נפרדים ואז להניח שבגלל שמצאת שני פתרונות אז הפתרונות הם זהים. אני מציע שתיגש לזה מכיוון אחר ותנסה לפרק את הבעיה לבעיות קטנות ופשוטות יותר ורק אחרי שפתרת אותן אז תרכיב הכל ביחד. תנסה לפתור את הבעיה לגבי תא יחיד, האם תא מספר X מקיים את התנאים? רק אחרי שיש לך פונקציה שעונה על זה אז תריץ אותה בלולאה על כל שאר התאים.
פורסם 2020 בדצמבר 14 שנים מחבר ציטוט של etal עכשיו הקוד שלך לא קורא ל-divide_left בכלל לגבי שאר הקוד הוספת לולאות אבל לדעתי הן לא במקום הנכון, אי אפשר לחפש פתרון של חלוקה מכיוון אחד ואז לחפש פתרון חלוקה מהכיוון השני בשני חיפושים נפרדים ואז להניח שבגלל שמצאת שני פתרונות אז הפתרונות הם זהים. אני מציע שתיגש לזה מכיוון אחר ותנסה לפרק את הבעיה לבעיות קטנות ופשוטות יותר ורק אחרי שפתרת אותן אז תרכיב הכל ביחד. תנסה לפתור את הבעיה לגבי תא יחיד, האם תא מספר X מקיים את התנאים? רק אחרי שיש לך פונקציה שעונה על זה אז תריץ אותה בלולאה על כל שאר התאים. טעות של העתקה חח תיקנתי את int i ל divide_left. איפה היית ממקם את הלולאות? ככה זה עובר על כל התאים,לא? בעיקרון שכחתי לעדכן (מצטער מראש) שהוראת התרגיל זה לעשות 3 פונקציות אחת שתבדוק מימין אחת משמאל והשלישית בודקת אם שניהן מתקיימות ומחזירה את מס התא או -1. אז אני לא רואה דרך אחרת חוץ מזאת שתבדוק לי מכל צד ואם שתיהן מתקיימות אז... יש אפשרות אחרת על פי ההוראות? תודה
פורסם 2020 בדצמבר 24 שנים האם בהוראות הגדירו לך בדיוק את הקלט והפלט של כל הפונקציות? די ברור שלא הבנת נכון את הכוונה של cell והדרך שאתה משתמש בו כרגע חסרת משמעות. תשנה את הפונקציות divide_right ו-divide_left ככה שיבדקו רק האם אותו מספר תא ספציפי מקיים את התנאי או שלא ומחזירות תשובה בהתאם. ברגע שתעשה את זה אני רוצה להאמין שההמשך יהיה לך ברור. נערך 2020 בדצמבר 24 שנים על-ידי etal
פורסם 2020 בדצמבר 24 שנים מחבר ציטוט של etal האם בהוראות הגדירו לך בדיוק את הקלט והפלט של כל הפונקציות? די ברור שלא הבנת נכון את הכוונה של cell והדרך שאתה משתמש בו כרגע חסרת משמעות. תשנה את הפונקציות divide_right ו-divide_left ככה שיבדקו רק האם אותו מספר תא ספציפי מקיים את התנאי או שלא ומחזירות תשובה בהתאם. ברגע שתעשה את זה אני רוצה להאמין שההמשך יהיה לך ברור. כן שתי פונקציות שמקבלות מערך ומחזירות מספר תא (כל אחת בודקת מכל צד) ועוד פונקציה שבודקת אם אם התנאים מתקיימים אם כן היא מחזירה את מספר התא אם לא היא מחזירה -1. אני רוצה לשמור את הcell בשביל לבדוק בפונקציה ולהחזיר את מספר התא אם צריך
פורסם 2020 בדצמבר 24 שנים ציטוט של BAR_PC אני רוצה לשמור את הcell בשביל לבדוק בפונקציה ולהחזיר את מספר התא אם צריך כמו שכבר אמרתי הקוד שלך כרגע לא משתמש ב-cell לשום דבר ואי אפשר להחזיר ערך דרך הקלט של הפונקציה (אלא אם משתמשים בפויינטרים וזה ממש לא דרוש פה). ניסיתי לכוון אותך לפתרון הפשוט והמתבקש של הבעיה אבל אתה מתעקש לא להקשיב. אני פרשתי מהדיון הזה, שיהיה לך בהצלחה.
פורסם 2020 בדצמבר 24 שנים תיקנתי את הקוד. זה בסדר? //------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
פורסם 2020 בדצמבר 54 שנים מחבר ציטוט של 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 כן תודה רבה ממש! מעריך
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.