Сформировать матрицу по правилу - C# (193097)
Формулировка задачи:
Всем привет! Никак не могу разобраться с задачей! Есть двумерный массив double[n, 7]. Нужно его сформировать таким образом, чтобы элемент a[i, 3] > 5, если он меньше, то складывать строки в этом столбце ниже (или выше), пока a[i, 3] <=5. При складывании удалить лишние строчки.
Например
Input
1, 2, 3, 1, 0.125, 3, 0.1
1, 2, 3, 6, 1.1, 4, 5
1, 2, 3, 1, 2, 3, 2
1, 2, 3, 3, 4, 5, 0.01
1, 2, 3, 2, 5, 3, 0.001
1, 2, 3, 7, 123, 32, 0.9
Output
1, 2, 3, 7, 0.125, 3, 0.1
1, 2, 3, 6, 2, 3, 2
1, 2, 3, 7, 123, 32, 0.9
Так же возможны и другие случаи
Решение задачи: «Сформировать матрицу по правилу»
textual
Листинг программы
class Program
{
static void Main(string[] args)
{
Console.Write("Ввести количество строк n: ");
int n = Convert.ToInt32(Console.ReadLine());
double[,] mass = new double[n, 7];
Console.Write("\nИсходный массив:\n\n");
Random rnd = new Random();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 7; j++)
{
mass[i, j] = Convert.ToDouble(rnd.Next(1, 100)) / 10;
Console.Write("{0} ", mass[i, j]);
}
Console.WriteLine();
}
int k = 0;
while (k < n)
{
if (mass[k, 3] <= 5)
{
for (int m = 0; m < 7; m++)
{
if (n > k + 1)
{
mass[k, m] += mass[k + 1, m];
for (int l = k + 1; l < n - 1; l++)
mass[l, m] = mass[l + 1, m];
}
else
{
mass[k - 1, m] += mass[k, m];
}
}
n -= 1;
}
else k += 1;
}
Console.Write("\nНовый массив:\n\n");
for (int p = 0; p < n; p++)
{
for (int s = 0; s < 7; s++)
Console.Write("{0} ", mass[p, s]);
Console.WriteLine();
}
Console.Read();
}
}