עבור לתוכן

שאלה ב-C#

Featured Replies

פורסם

שלום...יש לי שאלה שאני לא יכול לפתור אותה...:

ריבוע קסם הוא ריבוע המכיל מספרים טבעיים שבו סכום כל שורה, סכום כל העמודה וסכום כל אלכסון שווים.

כתוב פעולה המקבלת ערכים של מערך דו מימדי ומחזירה TRUE אם המערך מהווה ריבוע קסם או FALSE אחרת.

דוגמא לריבוע קסם שבו סכום כל שורה, כל עמודה וכל אלכסון שווה 15: 2,9,4

7,5,3

6,1,8

פורסם

לולאות מקוננות.

פורסם
  • מחבר

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

פורסם

אם זה גודל קבוע אתה יכול ליצור ביטוי פשוט שיבדוק את זה.

פורסם
  • מחבר

למצוא קודם סכום של שורה ואז לבדוק על כל השורות+עמודות+אלכסונים אם זה שווה??

פורסם

כן

פורסם

בצורה דיי דומה בניתי "איקס עיגול".

יש לי את המתודות, אם אתה רוצה...

פורסם

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

פורסם
  • מחבר

הנה הצלחתי לפתור זה הקוד:

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication47
{
class Program
{
static bool CheckSum(int[,]m)
{
int sum = 0, sum2 = 0,sum3=0,sum4=0,sum5=0;
for (int l = 0; l < 1;l++ )
for (int c = 0; c < m.GetLength(1); c++)
sum = sum + m[l, c];

for (int l = 0; l < m.GetLength(0); l++)
{
for (int c = 0; c < m.GetLength(1); c++)
{
sum2 = sum2 + m[l, c];
sum3 = sum3 + m[c, l];
sum4 = sum4 + m[c, c];
sum5 = sum5 + m[c, m.GetLength(1)-c-1];
}
if ((sum != sum2) || (sum != sum3) || (sum != sum4) || (sum != sum5))
return false;

sum2 = 0;
sum3 = 0;
sum4 = 0;
sum5 = 0;
}
return true;
}
public static void Main(string[] args)
{
int[,] m = { { 2, 9, 4 }, { 7, 5, 3 }, { 6, 1, 8 } };
Console.WriteLine(CheckSum(m));
Console.Read();

}
}
}











ארכיון

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

דיונים חדשים