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

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


BAR_PC
 Share

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";
}

 

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

קישור לתוכן
שתף באתרים אחרים

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

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.

 Share


×
  • צור חדש...