פורסם 2020 בנובמבר 295 שנים מחבר ציטוט של af db creid רק רגע - כלומר כל התאים במערך מתחלקים בו? כאילו מצד שבכל התאים שלפניו קיימים ערכים המחלקים את הערך בתא, ובכל התאים אחריו קיים ערך המתחלק ע"י הערך בתא. למשל בדוגמה שלי כל הערכים לפני 60 אז 60 מחלק אותם וכל הערכים אחרי 60 מתחלקים ב60 נערך 2020 בנובמבר 295 שנים על-ידי BAR_PC
פורסם 2020 בנובמבר 295 שנים טוב. שתי בעיות - אחת, לא מספיק לבדוק לפי הסדר אם השני מתחלק בראשון והשלישי בשני. זה לא ימצא את כל התבניות לדוג' במקרה שלך - 15 לא מחלק את 20, אז הלולאה של divide_left מפסיקה. למרבה הצער, זה ש15 לא מחלק את 20 לא אומר שהוא לא מחלק את 30. למרבה הצער, אין דרך קיצור - תצטרך לבדוק עבור כל איבר במערך את כל האיברים משמאלו ומימינו. שנית, בעיה שלא מופיעה בדוגמה שלך אבל בכל זאת קיימת - התוכנית לא עובדת אם יש שני מספרים שעומדים בקריטריון (אמרת שהיא אמורה להדפיס את הראשון). נסה את הרצף 1 2 4 8 16 32 וזה אמור להדפיס -1. אשאיר לך את זה כתרגיל. אם תצטרך עדיין עזרה אני כאן.
פורסם 2020 בנובמבר 295 שנים מחבר ציטוט של af db creid טוב. שתי בעיות - אחת, לא מספיק לבדוק לפי הסדר אם השני מתחלק בראשון והשלישי בשני. זה לא ימצא את כל התבניות לדוג' במקרה שלך - 15 לא מחלק את 20, אז הלולאה של divide_left מפסיקה. למרבה הצער, זה ש15 לא מחלק את 20 לא אומר שהוא לא מחלק את 30. למרבה הצער, אין דרך קיצור - תצטרך לבדוק עבור כל איבר במערך את כל האיברים משמאלו ומימינו. שנית, בעיה שלא מופיעה בדוגמה שלך אבל בכל זאת קיימת - התוכנית לא עובדת אם יש שני מספרים שעומדים בקריטריון (אמרת שהיא אמורה להדפיס את הראשון). נסה את הרצף 1 2 4 8 16 32 וזה אמור להדפיס -1. אשאיר לך את זה כתרגיל. אם תצטרך עדיין עזרה אני כאן. זה אומר לעשות לולאת פור לכל תא פשוט? או משהו אחר? לגבי השני לא הבנתי.. תודה
פורסם 2020 בנובמבר 295 שנים הממ, אני רואה ששינית את הקוד מאז הפעם האחרונה שהסתכלתי. דבר ראשון, אסור, בתכלית האיסור, לא לעשות return לפונקציה שמחזירה ערך. זה undefined behavior. דבר שני, אין שום שימוש במשתנים divide_l וdivide_r (לא אלו של happend).
פורסם 2020 בנובמבר 295 שנים ציטוט של BAR_PC זה אומר לעשות לולאת פור לכל תא פשוט? אכן. ציטוט של BAR_PC לגבי השני לא הבנתי.. נסה את הרצף שאמרתי.
פורסם 2020 בנובמבר 295 שנים מחבר ציטוט של af db creid אכן. נסה את הרצף שאמרתי. בפונקצייה אחת או לכל תא פונקצייה? בדוק אין קיצור דרך? חח
פורסם 2020 בנובמבר 295 שנים ציטוט של BAR_PC בפונקצייה אחת או לכל תא פונקצייה? בדוק אין קיצור דרך? חח לא הבנתי.
פורסם 2020 בנובמבר 295 שנים מחבר ציטוט של af db creid הממ, אני רואה ששינית את הקוד מאז הפעם האחרונה שהסתכלתי. דבר ראשון, אסור, בתכלית האיסור, לא לעשות return לפונקציה שמחזירה ערך. זה undefined behavior. דבר שני, אין שום שימוש במשתנים divide_l וdivide_r (לא אלו של happend). אין בהם צורך פשוט?
פורסם 2020 בנובמבר 295 שנים מחבר ציטוט של af db creid לא הבנתי. כל הבדיקה של כל תא יהיה בפונקצייה אחת?
פורסם 2020 בנובמבר 295 שנים ציטוט של BAR_PC אין בהם צורך פשוט? תסתכל, אתה לא משתמש בהם. ציטוט של BAR_PC כל הבדיקה של כל תא יהיה בפונקצייה אחת? אפשר, או לחלק את זה לפונקציה נפרדת. נערך 2020 בנובמבר 295 שנים על-ידי af db creid
פורסם 2020 בנובמבר 295 שנים מחבר ציטוט של af db creid תסתכל, אתה לא משתמש בהם. אפשר, או לחלק את זה לפונקציה נפרדת. סליחה שאני משגע אותך אבל זה קוד יותר טוב או לעשות כבר את מה שאמרת? בעצם עדיין זה מדפיס -1. פה השתמשתי בהם הבנת מה עשיתי? כאילו שמרתי כל פעם על התא שיבדוק את הבאים ואם לא אז שיעבור לתא הבא זה עדיין מדפיס לי -1... //------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 &cell1, int &cell2); /////-----Main------- int main() { int arr[N]; read_data(arr); int cell1,cell2; int found = happend(arr,cell1,cell2); if(found != -1) cout<< cell1; else cout << "-1"; 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 divide_l = arr[N]; int j = N -1; for(int i = N -1 ; i >= 0; i--) { if((arr[j] % arr[i-1]) == 0) { divide_l = i; cell = divide_l; } j--; } return cell; } int divide_right (int arr[], int &cell) { int divide_r = arr[0]; int j = 0; for(int i = 1; i < N ; i++) { if ((arr [i + 1] % arr [j]) == 0) { divide_r = i; cell = divide_r; } j++; } return cell; } int happend(int arr[], int &cell1, int &cell2) { int no = -1; int divide_l = divide_left(arr,cell1); int divide_r = divide_right (arr,cell2); if(divide_l == divide_r) return divide_l; else return no; } נערך 2020 בנובמבר 295 שנים על-ידי BAR_PC
פורסם 2020 בנובמבר 295 שנים מחבר היי חבר'ה שיגעתי אותכם ממש אבל מרגיש בודד בנושא ואין לי למי לפנות... אם אני משנה את התנאים כאן: if(found != -1) cout<< cell1; else cout << "-1"; לככה: if(found != -1) cout << "-1"; else cout<< cell1; אז בדוגמה 180 120 60 30 20 15 הפלט 3 שזה תקין אבל שאין אז הוא לא מוציא -1 מישהו בבקשה יכול להסביר לי מדוע? המון תודה ושוב סליחה
פורסם 2020 בנובמבר 295 שנים ציטוט של BAR_PC סליחה שאני משגע אותך אבל זה קוד יותר טוב או לעשות כבר את מה שאמרת? בעצם עדיין זה מדפיס -1. פה השתמשתי בהם הבנת מה עשיתי? כאילו שמרתי כל פעם על התא שיבדוק את הבאים ואם לא אז שיעבור לתא הבא זה עדיין מדפיס לי -1... //------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 &cell1, int &cell2); /////-----Main------- int main() { int arr[N]; read_data(arr); int cell1,cell2; int found = happend(arr,cell1,cell2); if(found != -1) cout<< cell1; else cout << "-1"; 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 divide_l = arr[N]; int j = N -1; for(int i = N -1 ; i >= 0; i--) { if((arr[j] % arr[i-1]) == 0) { divide_l = i; cell = divide_l; } j--; } return cell; } int divide_right (int arr[], int &cell) { int divide_r = arr[0]; int j = 0; for(int i = 1; i < N ; i++) { if ((arr [i + 1] % arr [j]) == 0) { divide_r = i; cell = divide_r; } j++; } return cell; } int happend(int arr[], int &cell1, int &cell2) { int no = -1; int divide_l = divide_left(arr,cell1); int divide_r = divide_right (arr,cell2); if(divide_l == divide_r) return divide_l; else return no; } הקוד שלך לא מדפיס לי כלום
פורסם 2020 בנובמבר 295 שנים מחבר ציטוט של Jabberwock הקוד שלך לא מדפיס לי כלום איזה קטע... אז איך לי זה הדפיס אני מבולבל כבר...כי אני שיניתי את התנאי בmain להיות הפוך כלומר found לא שווה -1 אז תדפיס -1 אחרת תדפיס את cell(הודעה למעלה) ושהכנסתי את הדוגמא 180 120 60 30 20 15 זה הדפיס לי 3 אבל מנגד שהכנסתי נגיד 6 5 4 3 2 1 הפלט היה 1 ושהכנסתי 9 0 0 0 0 0 אז הפלט היה ריק תודה
פורסם 2020 בנובמבר 305 שנים מחבר היי עדיין אשמח לעזרה בתרגיל הזה אני לא מבין למה הוא לא מדפיס -1... תודה
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.