עבור לתוכן

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

Featured Replies

פורסם

היי חבר'ה

יש לי שאלה בפונקציות שאני צריך לקלוט מערך בין 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
  • צפיות 4.4k
  • נוצר
  • תגובה אחרונה
פורסם

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

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

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

 

כן, אשמח לעזרה מדוע הפלט ריק, תודה :)

פורסם

ניסית לעקוב עם debugger?

פורסם
  • מחבר
ציטוט של etal

ניסית לעקוב עם debugger?

אני עובד עם eclipse והאמת שהסתבכתי עם השימוש בדיבגר..

פורסם

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

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

נערך על-ידי af db creid

פורסם
  • מחבר
ציטוט של 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

פורסם

לי מדפיס -1. לא מצליח לשחזר.

נערך על-ידי af db creid

פורסם
  • מחבר
ציטוט של af db creid

לי מדפיס -1. לא מצליח לשחזר.

כן בידיוק שלחתי את הקוד וזה מדפיס לי גם-1 אבל זה אמור להדפיס 3 את התא 3 שזה 60, אתה יודע למה?

 

תודה רבה :)

פורסם

יש בקוד הרבה בעיות :)

תן לי שנייה...

פורסם
  • מחבר
ציטוט של af db creid

יש בקוד הרבה בעיות :)

תן לי שנייה...

חחח מצטער ממש אחי אבל המון תודה :)

פורסם

רק רגע -

ציטוט של BAR_PC

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

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

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

נערך על-ידי af db creid

פורסם
ציטוט של BAR_PC

חחח מצטער ממש אחי אבל המון תודה :)

בכיף בשביל זה אני פה :)

ארכיון

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

דיונים חדשים