Консультация № 181506
21.12.2010, 14:49
55.50 руб.
0 2 2
Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:
Дана целочисленная матрица А (8х10).
По массиву А получить массив В, присвоив его k-му эле-
менту значение TRUE, если выполнено указанное ниже ус-
ловие, и значение FALSE - иначе: элементы k-й строки
массива А упорядочены по убыванию.
Через console application

Обсуждение

давно
Профессионал
848
1596
21.12.2010, 16:18
общий
это ответ
Здравствуйте, Посетитель - 354395!
Код:
using System;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//объявляем "матрицу"
int[,] A = new int[8, 10];
//временный масив
int[] X = new int[10];
//результирующий массив
bool[] B = new bool[8];
//создаем генератор случайных чисел для заполнения матрицы
Random randomize = new Random();

//циклы заполнения матрицы
for (int i = 0; i < 8; ++i)
{
for (int j = 0; j < 10; ++j)
{
//заполняем случайными числами до 100000(например)
A[i,j] = randomize.Next(100000);
//если нужно вводить элементы вручную раскоментировать следующие строки
//Console.Write("A[{0}.{1}]=", i, j);
//A[i, j] = int.Parse(Console.ReadLine());
}
}
//обработка матрицы по строкам
for (int k = 0; k < 8; ++k)
{
//цикл по столбцам матрицы
for (int j = 0; j < 10; ++j)
{
//помещение значений строки матрицы во временыый массив Х
X[j] = A[k, j];
}
//присваиваем k-тому элементу результирующего массива В значение по условию задачи, условие обрабатывается в функции IsSorted
B[k] = IsSorted(X);
//сразу выводим на экран значение массива В
Console.WriteLine("B[{0}]={1}",k, B[k]);
}
//ждем нажатия клавиши для выхода из приложения
Console.ReadKey();
}

static bool IsSorted(int[] row)
{
//функция для определения условия -сортирована ли строка по убыванию
//создаем новый массив для сортированных данных
int[] SortedRow=new int [row.Length];
//результат условия
bool returnValue = true;

//делаем копию строки массива
Array.Copy(row, SortedRow, row.Length);
//сортируем массив
Array.Sort(SortedRow);
//"переворачиваем" массив т.к. требуется по убыванию
Array.Reverse(SortedRow);
//цикл для поэлементного сравнения
for (int i = 0; i < row.Length; ++i)
{
//если хоть один элемент не равен, значит строка не сортирована по убыванию
if (row[i] != SortedRow[i])
{
//выходим из цикла с отрицательным результатом
returnValue = false;
break;
}
}
//возвращаем результат условия
return returnValue;
}
}
}
давно
Профессор
230118
3054
21.12.2010, 16:44
общий
это ответ
Здравствуйте, Посетитель - 354395!

Функция, проверяющая упорядоченность, может быть написана так.
Код:
        static bool IsSorted(int[] row)
{
//результат условия
bool returnValue = true;

//цикл для поэлементного сравнения
for (int i = 0; i < row.Length-1; ++i)
{
//если хоть один элемент меньше следующего, значит строка не сортирована по убыванию
if (row[i] < row[i+1])
{
//выходим из цикла с отрицательным результатом
returnValue = false;
break;
}
}
//возвращаем результат условия
return returnValue;
}
Форма ответа