שאלה בפונקציות בC++ - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון
  • מי אנחנו?

    שלום אורח/ת!

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

    החברים שלנו נהנים מיתרונות רבים, כולל היכולת להשתתף בדיונים, להנות מהגרלות ומבצעים לחברי האתר, ולקבל מידי שבוע את התכנים הבולטים שלנו ישירות במייל.

    לא אוהבים שמציקים לכם במייל? ניתן להירשם לאתר אך לוותר על הרישום לעידכוני המייל השבועיים.

שאלה בפונקציות בC++


BAR_PC

Recommended Posts

היי חבר'ה

יש לי שאלה בפונקציות שאני צריך לקלוט מערך בין N תאים (N=6ׂ) ולבדוק אם יש ערך במערך שהוא מחלק את כל התאים משמאל שלו וכל התאים מימנו מתחלקים בו

אם יש תא כזה הפלט צריך להיות מספר התא הראשון (כאשר יש כמה תאים אז התא הראשון) אם אין אז הפלט יהיה -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 divide_right (int arr[]);
void happend(int arr[]);

/////-----Main-------
int main()
{
    int arr[N];

    read_data(arr);

    happend(arr);

   return EXIT_SUCCESS ;
}

void read_data(int arr[])
{
	for(int i = 0; i < N; i++)
		cin >> arr[i];
}

int divide_left(int arr[])
{
	int divide_l = arr[0];

	for(int i = 1 ; i < N; i--)
	{
		if((arr[i] % arr[i-1]) == 0)
		{
			divide_l = i;
		}
	}

	return divide_l;
}

int divide_right (int arr[])
{
	int divide_r = arr[0];

	for(int i = 1; i < N ; i++)
	{
		if ((arr [i + 1] % arr [i]) == 0)
		{
			divide_r = i;
		}
	}

	return divide_r;
}

void happend(int arr[])
{

	int divide_l = divide_left(arr);

	int divide_r = divide_right (arr);

	if(divide_l == divide_r)
	    cout << divide_l;
	else
		cout << " -1";
}

 

שוב המון תודה לכולם! :)

קישור ישיר להודעה
שתף באתרים אחרים
  • תגובות 42
  • נפתח בתאריך
  • תגובה אחרונה

משתתפים בולטים בדיון

משתתפים בולטים בדיון

תגובות פופולריות

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

עכשיו הקוד שלך לא קורא ל-divide_left בכלל   לגבי שאר הקוד הוספת לולאות אבל לדעתי הן לא במקום הנכון, אי אפשר לחפש פתרון של חלוקה מכיוון אחד ואז לחפש פתרון חלוקה מהכיוון השני בשני חיפושים נפרד

תיקנתי את הקוד. זה בסדר? //------include section------- #include <iostream> #include <cstdlib> //------std section------- using std:: cin; using std:: cout; using std:: endl; //-----

לא יודע אם יש עוד בעיות, אבל זו בפירוש שגיאה:

for(int i = 1 ; i < N; i--)

או שהולכים מהתחלה לסוף עם I++ או מהסוף להתחלה עם I--. כרגע זה מתחיל מ1 ויורד למספרים שליליים מה שיוצר לולאה כמעט אינסופית.

קישור ישיר להודעה
שתף באתרים אחרים
ציטוט של QttP

לא יודע אם יש עוד בעיות, אבל זו בפירוש שגיאה:




for(int i = 1 ; i < N; i--)

או שהולכים מהתחלה לסוף עם I++ או מהסוף להתחלה עם I--. כרגע זה מתחיל מ1 ויורד למספרים שליליים מה שיוצר לולאה כמעט אינסופית.

 

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

 

תודה :)

נערך על-ידי BAR_PC
קישור ישיר להודעה
שתף באתרים אחרים
ציטוט של BAR_PC

 

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

 

תודה :)

לא עברתי על שאר הקוד, אבל האם שינית גם את ה"i קטן מN" ל"i גדול שווה ל0"?

קישור ישיר להודעה
שתף באתרים אחרים
ציטוט של af db creid

מה הקלט שאתה מזין?

בנוסף, האם התוכנית נעצרת ולא מדפיס כלום או נתקעת?

הקלט 15 20 30 60 120 180 והתוכנית מדפיסה -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 divide_right (int arr[]);
void happend(int arr[]);

/////-----Main-------
int main()
{
    int arr[N];

    read_data(arr);

    happend(arr);

   return EXIT_SUCCESS ;
}

void read_data(int arr[])
{
	for(int i = 0; i < N; i++)
		cin >> arr[i];
}

int divide_left(int arr[])
{
	int divide_l = arr[N];

	for(int i = N -1 ; i >= 0; i--)
	{
		if((arr[i] % arr[i-1]) == 0)
		{
			divide_l = i;
			return divide_l;
		}
	}

	//return divide_l;
}

int divide_right (int arr[])
{
	int divide_r = arr[0];

	for(int i = 1; i < N ; i++)
	{
		if ((arr [i + 1] % arr [i]) == 0)
		{
			divide_r = i;
			return divide_r;
		}
	}

	//return divide_r;
}

void happend(int arr[])
{

	int divide_l = divide_left(arr);

	int divide_r = divide_right (arr);

	if(divide_l == divide_r)
	    cout << divide_l;
	else
		cout << "-1";
}

 

נערך על-ידי BAR_PC
קישור ישיר להודעה
שתף באתרים אחרים

רק רגע -

ציטוט של BAR_PC

שהוא מחלק את כל התאים משמאל שלו וכל התאים מימנו מתחלקים בו

כלומר כל התאים במערך מתחלקים בו?

כי "הוא מחלק את X" ו"X מתחלק בו" די זהה.

נערך על-ידי af db creid
קישור ישיר להודעה
שתף באתרים אחרים

הצטרפ/י לדיון

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

אורח
הוסף תגובה

×   התוכן שהודבק הוא עם עיצוב.   הסר עיצוב

  Only 75 emoji are allowed.

×   הקישור שלך הוטמע אוטומטית.   הצג כקישור רגיל

×   התוכן הקודם שלך שוחזר אוטומטית.   נקה הכל

×   You cannot paste images directly. Upload or insert images from URL.


×
  • צור חדש...

בראש החדשות:

תוקפת בשלוש חזיתות: AMD משיקה 13 מעבדים ניידים חדשים בבת אחת

תוקפת בשלוש חזיתות: AMD משיקה 13 מעבדים ניידים חדשים בבת אחת

בזמן שאינטל מסתפקת בהשקה של שלושה דגמים ניידים חדשים כחיזוק למשפחת מוצרים קיימת - המתחרה שלה יורה בכל התותחים עם מגוון גדול של דגמים בהספקים של בין 15 וואט ל-45 וואט ומעלה, בתוספת ליבות Zen 3 (כמעט) בכל מקום

קרא עוד

חדש באתר