
C#
Программирование на C Sharp (C#)
Заполнить одномерный массив случайными целыми числами. Найти фрагмент массива максимальной длины, элементы которого монотонно возрастают или убывают. Вывести фрагмент на консоль с указанием вида монотонности.


using System;
using System.Collections.Generic;
namespace Answer {
class Program {
static void Main() {
var box = GetRandomArray(1, 100, 25);
Show(box);
var seq = LongSequence(box);
Show(seq);
Console.ReadKey();
}
static List<int> LongSequence(int[] box) {
var seq = new List<int>();
var tmp = new List<int>();
var i = 0;
while (i < box.Length) {
i = FindSequence(box, i, ref tmp);
if (tmp.Count > seq.Count) seq = tmp.GetRange(0, tmp.Count);
tmp.RemoveRange(0, tmp.Count - 1);
}
return seq;
}
static int FindSequence(int[] box, int index, ref List<int> lst) {
bool semaphore;
if (index == 0) {
if (index != box.Length) lst.Add(box[index]);
else return index;
if (++index != box.Length) lst.Add(box[index]);
else return index;
semaphore = box[index] > box[index - 1];
++index;
} else {
++index;
while (index != box.Length && box[index] == box[index - 1]) lst.Add(box[index]);
if (index == box.Length) return index;
semaphore = box[index] > box[index - 1];
}
if (semaphore) {
while (index != box.Length && box[index] >= box[index - 1]) {
lst.Add(box[index]);
++index;
}
} else {
while (index != box.Length && box[index] <= box[index - 1]) {
lst.Add(box[index]);
++index;
}
}
return --index;
}
static int[] GetRandomArray(int from, int to, int size) {
var rand = new Random();
var box = new int[size];
for (var i = 0; i < size; ++i) box[i] = rand.Next(from, to);
return box;
}
static void Show(int[] box) {
foreach (var item in box) Console.Write($"{item,4}");
Console.WriteLine();
}
static void Show(List<int> box) {
foreach (var item in box) Console.Write($"{item,4}");
var msg = box[0] <= box[box.Count - 1] ? "не убывает" : "не возрастает";
Console.WriteLine(" - монотонно " + msg);
}
}
}
using System.Collections.Generic;
namespace Answer {
class Program {
static void Main() {
var box = GetRandomArray(1, 100, 25);
Show(box);
var seq = LongSequence(box);
Show(seq);
Console.ReadKey();
}
static List<int> LongSequence(int[] box) {
var seq = new List<int>();
var tmp = new List<int>();
var i = 0;
while (i < box.Length) {
i = FindSequence(box, i, ref tmp);
if (tmp.Count > seq.Count) seq = tmp.GetRange(0, tmp.Count);
tmp.RemoveRange(0, tmp.Count - 1);
}
return seq;
}
static int FindSequence(int[] box, int index, ref List<int> lst) {
bool semaphore;
if (index == 0) {
if (index != box.Length) lst.Add(box[index]);
else return index;
if (++index != box.Length) lst.Add(box[index]);
else return index;
semaphore = box[index] > box[index - 1];
++index;
} else {
++index;
while (index != box.Length && box[index] == box[index - 1]) lst.Add(box[index]);
if (index == box.Length) return index;
semaphore = box[index] > box[index - 1];
}
if (semaphore) {
while (index != box.Length && box[index] >= box[index - 1]) {
lst.Add(box[index]);
++index;
}
} else {
while (index != box.Length && box[index] <= box[index - 1]) {
lst.Add(box[index]);
++index;
}
}
return --index;
}
static int[] GetRandomArray(int from, int to, int size) {
var rand = new Random();
var box = new int[size];
for (var i = 0; i < size; ++i) box[i] = rand.Next(from, to);
return box;
}
static void Show(int[] box) {
foreach (var item in box) Console.Write($"{item,4}");
Console.WriteLine();
}
static void Show(List<int> box) {
foreach (var item in box) Console.Write($"{item,4}");
var msg = box[0] <= box[box.Count - 1] ? "не убывает" : "не возрастает";
Console.WriteLine(" - монотонно " + msg);
}
}
}
... 27 27 ...- где тут возрастание?
Никита Степаненко
Шел вверх по лестнице, вышел на площадку, прошел горизонтально, идет дальше. Спуска не было.
Ппц ***
Монотонность - это однообразие и постоянность. Либо постоянно вверх, либо постоянно вниз. Если число на фрагмент на одном уровне, то он всё равно монотонный.
Похожие вопросы
- Как выглядит сам процесс программирования на C#
- Программирование на C# - целые числа
- Программирование на C#
- Программирование на C#
- Что лучше C# или C++?
- Посоветуйте пожалуйста книгу, для изучения языка программирования C#, с полного нуля, заранее спасибо!
- Программирование C# . Length
- Написание программы на языке программирования C#
- Как в C# разделить одно слово на две? К примеру слово программирование разделить на програм и мирование.
- Решил попробовать изучать программирование (C# конкретно) и вот не могу понять почему код с упражнения не работает