עבור לתוכן

עזרה בבניית פונקציה ב C#

Featured Replies

פורסם

אני צריך פונקציה אשר בודקת לי במטריצה רק על mat.lentgh (1) אם מספר חוזר פעמיים במטריצה לכל שורה (תוכנת לוטו ואני רוצה לוודא שמספר לא חוזר על עצמו פעמיים)

זה מה שאני עשיתי ולא עובד כי זה לולאה שתמיד מניבה שהמספר חוזר על עצמו




static bool CheckRows(int[,] mat, int row, int j)
{

bool check = true;








for (int x = mat[row, 0]; x < mat.GetLength(1); x++)
{








if (mat[row, j] ==x)
check = false;
}
return check;
}






  • תגובות 30
  • צפיות 5.3k
  • נוצר
  • תגובה אחרונה
פורסם
  • מחבר



static bool CheckRows(int[,] mat, int row, int j)
{

bool check = true;




for (int x = mat[row, 0]; x < mat.GetLength(1); x++)
{




if (mat[row, j] ==x)
check = false;
}
return check;
}



פורסם

ברוך הבא לפורום!

קרא בבקשה את ההנחיות לפרסום הודעות בפורום וערוך את הכותרת וההודעה בהתאם.

אין יותר מדי הגיון בלולאה שעשית - אתה מאתחל את x להיות הערך שיושב במטריצה במקום row,0 ומקדם אותו עד לרוחב המטריצה. חוץ מזה, לא ברור לי איזה תפקיד משחק כאן j, ומה אתה מנסה לבדוק.

פורסם
  • מחבר

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

פורסם

באמת יעזור אם תנסה להסביר את עצמך יותר טוב, כי כרגע אי אפשר להבין מילה ממה שאתה כותב. תכתוב משפטים באופן מסודר (עם סימני פיסוק...), תסביר מה התפקידים של row ו-j ומה בדיוק הפונקציה צריכה לעשות.

פורסם
  • מחבר

אני יכול לצרף את כל התוכנית...

אני רוצה לבדוק בסך הכל אם מהמספרים שאני קולט מהמשתמש, על כל מספר שבאותו רגע מוזן, אם יש מספר החוזר על עצמו פעמיים. אם המשתמש ברגע זה הזין מספר שכבר היה, להדפיס למשתמש הודעה. זוהי פונקציה שתועתק גם לפונקציה דומה אשר בוחרת מספרים אקראיים ובודקת אם מספר חוזר על עצמו פעמיים, אם כן אז היא תגריל מספר חדש ושוב תבדוק אם הוא חוזר פעמיים על מספר שכבר היה... ROW זה מספר הטורים של הלוטו שהמשתמש רוצה למלא אותו הוא מזין מראש בתחילת התוכנית, J זה המקום של ההזנה בתוך הטור של המטריצה אותה אנחנו בודקים ברגע זה, זאת אומרת ש "mat[row, j]" זה המספר אותו בודקים ברגע זה, אם הוזן כבר מספר זה או לא.

פורסם
  • מחבר

זה הקוד המלא אולי תוכל להיעזר בו הפונקציה מוצבת בתוכו

static void InitManualTur(int[,] mat)

{

Console.WriteLine("Enter number of coles: ");

int coles = int.Parse(Console.ReadLine());

mat = new int[coles, 6];

int goodnumber;

string str;

for (int i = 0; i < mat.GetLength(0); i++)

{

for (int j = 0; j < mat.GetLength(1); j++)

{

do

{

goodnumber = 1;

Console.WriteLine("Enter number between 1 to 45: ");

str = Console.ReadLine();

for (int m = 0; m < str.Length; m++)

{

if ((str[m] < '0') || (str[m] > '9'))

{

Console.WriteLine("this is not a number, please insert a number between 1 to 45:");

goodnumber = 0;

break;

}

}

int num=int.Parse(str);

if ((num < 1) || (num > 45))

{

Console.WriteLine("Wrong number, please insert number between 1 to 45:");

goodnumber = 0;

}

פורסם

בקיצור, הבעיה היא עם הלולאה שלך - אם אתה רוצה לעבור על שורה מסוימת במטריצה, אז אתה צריך שהאינדקס שלך ירוץ מ-0 ועד אורך השורה.

פורסם
  • מחבר

הוא רץ לאורך השורה אבל מה זאת אומרת מ0? אני צריך לבדוק לגביי כל מספר שהוזן באותו הרגע אם הוא שווה לכל המספרים לפניו לגביי כל מספר שמוזן

פורסם

אבל הקוד הנוכחי שלך רץ מהערך [mat[row,0. כלומר, אם התא הזה מכיל את הערך 200, אז הלולאה שלך תרוץ החל מ-200 - ואין בזה שום הגיון.

תתחיל ממשהו יותר פשוט: נניח שיש לך מערך A, ואתה רוצה לבדוק האם הוא מכיל את המספר 5. איך תעשה את זה?

פורסם
  • מחבר

מריץ את המערך כולו ומגדיר תנאי IF(ARR ==5)

פורסם

מה זה מריץ את המערך כולו? ומה זה ARR אצלך?

כתוב קוד (ועשה טובה, יש תגית לקוד, נצל אותה :) )

[ code ]

[ / code ]

without spaces

פורסם
  • מחבר

bool isfive=false

int [] arr=new int[mat.getlenght(1)];
for (int i = 0; i <arr.Length; i++)
{
if(arr[i]==5)
{
;isfive=true
}
}
return isfive;

פורסם

סבבה.

עכשיו, נניח שבמקום מערך יש לנו מטריצה, ואנחנו רוצים לבדוק אם השורה השביעית שלה מכילה את המספר 5. אז מה תכתוב?

פורסם
  • מחבר


bool isfive=false

[row,coles]int [,] mat=new int[)];
for (int i = 0; i <mat.Length(0); i++)
{
)if(mat[6,coles]==5)
}
{
;isfive=true
}
}
return isfive;

ארכיון

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

דיונים חדשים