 |
Ребят, помогите с программой =( - Вопросы и ответы, обсуждения - Ваши вопросы по C# только в данном разделе |
24.10.2014, 00:07
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 16.11.2011
 Сообщений: 0
 Популярность: -7
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Ребят, помогите с программой =(
Соседями элемента Aij в матрице назовем элементы Akl c i – 1 <= k <= i + 1,
j – 1 <= l <= j + 1, ( k , l ) != ( i , j ) . Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером 10 на 10.
В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали.
В данном случае среднее арифметическое считается: Рамки(матрицы) не нужно заменять, меняется только середина.. Соседних чисел у каждого элемента 4, к примеру у а(11) соседи будут а(01), а(10), а(12), а(21)- в скобках индексы i,j P.S Желательно написать без функций (Ибо ещё не проходили).
Буду благодарен за любую помощь
|
|
|
24.10.2014, 02:36
|
#2
|
|
|
|
Разведчик
|
 Регистрация: 08.09.2014
 Сообщений: 0
 Популярность: 306
 Сказал(а) спасибо: 0
Поблагодарили 16 раз(а) в 12 сообщениях
|
Re: Ребят, помогите с программой =(
Конечно ты ошибся немного форумом, но делать было нечего.
т.к. матрицу 10 на 10 вводить руками долго, сделал рандомную геренацию цифр. Если нужно вводить руками, то разкоментируешь там код для этого и поставишь коммент на matrix[i, j] = rn.Next(11) - 5;
конечно массив сглаживания можно было бы как-то покороче и по красивее сделать, но было лень)
PHP код:
private static void Main(string[] args)
{
const int n = 10;
double[,] matrix = new double[n, n];
Random rn = new Random();
for (int i = 0; i < n; i++)
{
var v = new List<double>();
for (int j = 0; j < n; j++)
{
//Console.Write("A[{0} {1}]:", i, j);
matrix[i, j] = rn.Next(11) - 5;
//matrix[i, j] = Convert.ToDouble(Console.ReadLine());
}
}
Console.WriteLine("Initial matrix");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write("{0,3}", matrix[i, j]);
}
Console.WriteLine();
}
double[,] smoothMatrix = new double[n, n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
double avg = 0.0;
int elementsCount = 0;
if (j - 1 >= 0)
{
if (i - 1 >= 0)
{
avg += matrix[i - 1, j - 1];
elementsCount++;
}
avg += matrix[i, j - 1];
elementsCount++;
if (i + 1 < n)
{
avg += matrix[i + 1, j - 1];
elementsCount++;
}
}
if (i - 1 >= 0)
{
avg += matrix[i - 1, j];
elementsCount++;
}
if (i + 1 < n)
{
avg += matrix[i + 1, j];
elementsCount++;
}
if (j + 1 < n)
{
if (i - 1 >= 0)
{
avg += matrix[i - 1, j + 1];
elementsCount++;
}
avg += matrix[i, j + 1];
elementsCount++;
if (i + 1 < n)
{
avg += matrix[i + 1, j + 1];
elementsCount++;
}
}
if (elementsCount != 0)
{
avg /= elementsCount;
}
smoothMatrix[i, j] = avg;
}
}
Console.WriteLine("Smooth matrix");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write("{0,6}", Math.Round(smoothMatrix[i, j], 2));
}
Console.WriteLine();
}
double summ = 0;
for (int i = 1; i < n; i++)
{
for (int j = 0; j < i; j++)
{
summ += Math.Abs(smoothMatrix[i, j]);
}
}
Console.WriteLine("Summ of elements modules at main diagonal in smooth matrix is:{0}", summ);
Console.ReadLine();
}
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 18:01.
|
 |