Двумерный массив нужно превратить в динамические и зубчатые с использование foreach вместо for - C#
Формулировка задачи:
Найти среднее арифметическое элементов каждого из четных столбцов матрицы.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nomber2{
class Program{
static void Main(string[] args){
double[,] a = new double[5, 2];
Random rnd = new Random();
int i, j, n = a.Length;
for (i = 0; i < 5; i++)
for (j = 0; j < 2; j++){
Console.Write("a[{0},{1}] = ", i, j);
a[i, j] = rnd.Next(-10, 10);
Console.WriteLine("{0}", a[i, j]);}
double s = 0;
for (i = 0; i < 5; i++)
for (j = 0; j < 2; j++){
if (i % 2 == 0) s += a[i, j];
if (i == 0) s += a[i, j];}
s /= n;
for (i = 0; i < 5; i++)
for (j = 0; j < 2; j++)
a[i, j] -= s;
Console.WriteLine("s = {0}", s);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}}}
Нужно просто немного переделать его. Если знаете литературу (желательно не слишком сложную) скиньте ссылку.
Решение задачи: «Двумерный массив нужно превратить в динамические и зубчатые с использование foreach вместо for»
textual
Листинг программы
static void Main(string[] args)
{
double[,] a = new double[5, 2]; // двумерный
double[][] b = new double[a.GetLength(0)][]; // зубчатый
// Заполняем двумерный рандомно и выводим для наглядности
Random rnd = new Random();
for (int i = 0; i < 5; i++)
{
Console.WriteLine();
for (int j = 0; j < 2; j++)
{
a[i, j] = rnd.Next(-10, 10);
Console.Write("{0}\t", a[i, j]);
}
}
//создаем зубчатый
for (int i = 0; i < a.GetLength(0); i++)
b[i] = new double[a.GetLength(1)];
Console.Write("\n----------------\n");
// Заполнили двумерный рандомно и вывели для наглядности
int n = 0,k=0;
// переписываем двум в зуб
foreach (double x in a)
{
if (n<2)
{
b[k][n++] = x;
}
else { n = 0; k++; b[k][n++] = x; }
}
// выведим зубчатый
foreach (double[] x in b)
{
Console.WriteLine(string.Join("\t", x));
}
}