کد بالا یکم ایراد داشت ولی خب تقریبا درسته، من اون کد رو بدون استفاده از کامپایلر نوشته بودم.
این کد درسته:
public static int[] MyAlgorythem(int[] array) {
int[] Result = new int[array.Length];
for (int i = 0; i < array.Length; i++)
{
int num = array[i];
int? mlt = null;
foreach (int number in array)
{
if (number != num) mlt = (!mlt.HasValue) ? number : mlt * number;
}
Result[i] = (mlt.HasValue)? mlt.Value: 0;
}
return Result;
}
توضیحات:
اول از همه یک متد استاتیک تعریف کردیم که آرایه ای از جنس int میگیره و آرایه ای از جنس int برمیگردونه.
خط بعدی یک آرایه تعریف کردیم که اندازش با اندازه ی آرایه ورودی تعیین میشه.
بعد یه حلقه for برای پیمایش آرایه ورودی
int? mlt یه مقدار نال پذیر برای محاسبه جواب حلقه
دوباره حلقه foreach برای پیمایش آرایه ورودی که داخل این حلقه یک شرط قرار دادیم که اگر عدد برابر عدد مورد نظر ما نبود عمل ضرب رو انجام بده
در آخر هم آرایه ای که به عنوان جواب تعریف کردیم و پرش کردیم برای خروجی متد برمی گردونیم.
پروژه VS2017 هم ضمیمه می کنم.
این تست ها:
int[] Test1 = Class1.MyAlgorythem(new int[] { 3, 7, 2, 3, 4, 2 }); //Test1 = {112, 144, 252, 112, 252, 252}
int[] Test2 = Class1.MyAlgorythem(new int[] { 1, 1, 1, 1 }); //Test2 = {0, 0, 0, 0}
int[] Test3 = Class1.MyAlgorythem(new int[] { 1 }); //Test3 = {0}
int[] Test4 = Class1.MyAlgorythem(new int[] { }); //Test4 = int[0]
int[] Test5 = Class1.MyAlgorythem(new int[] { 3, 7 }); //Test5 = {7, 3}