
Задание 6
Составить программу определения наибольшего количества расположенных подряд целых чисел, образующих «пилу» (последовательность, в которой чередуется убывание и возрастание, например: 3, 7, 5, 9, 2, 4; она не может содержать менее трех чисел).
Пример входа
3 4 5 6 7 8 5 9 2 4 3 2 2
Пример вывода
7
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _4._6
{
class Program
{
static void Main(string[] args)
{
int n = 0; // n - размер массива
while (n <= 3)
{
Console.Write("Введите размер массива не менее 3х:");
n = Convert.ToInt32(Console.ReadLine());
}
int[] mass = new int[n];
int i = 0;
for (i = 0; i < n; i++) // поочередно вводим элементы массива
{
Console.Write("Введите {0} ({1}) элемент массива:", i + 1, i);
mass[i] = int.Parse(Console.ReadLine()); // записываем элемент в массив
}
//считаем размер пилы
bool proverka;
int j = 0;
if (mass[0] > mass[1])
{ proverka = true; }
else
{
proverka = false;
}
int k = 0;
for (i = 0; i < n; i++)
{
if (i == n - 1)
{
if (!proverka)
{
if (mass[i] < mass[i - 1])
j++; if (j > k)
{
k = j;
}
}
else
if (mass[i] > mass[i - 1]) j++; if (j > k)
{
k = j;
}
continue;
}
if (mass[i] > mass[i + 1])
{
if (proverka)
{
j++;
proverka = false;
if (j > k)
{
k = j;
}
continue;
}
}
if (mass[i] < mass[i + 1])
{
if (!proverka)
{
j++;
proverka = true;
if (j > k)
{
k = j;
}
continue;
}
j = 0;
}
}
Console.Write("Количество чисел составлюящих пилу: " + k);
Console.ReadLine();
}
}
}
ЗАДАНИЕ 7
(сложность 7 ед.)
«Сжать» заданный целочисленный одномерный массив, превратив его в двумерный по следующему правилу. Повторяющиеся в одномерном массиве элементы должны присутствовать в двумерном один раз и располагаться в первой строке. Во второй строке под каждым элементом записывается число, равное количеству таких элементов в массиве. Относительный порядок чисел (встречающихся впервые) должен быть сохранен.
Пример входа
3 56 8 2 3 8 10 8
Пример вывода
3 2
5
6
1
8 3
2 1
10 1 3
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _4._7
{
class Program
{
public static void Main()
{
//////////С помощью Random заносим элементы в массив/////////
////////////////////////////////////////////////////////////
int[] Arr = new int[10];
Random rnd = new Random();
for (int i = 0; i < Arr.Length; i++)
{
Arr[i] = rnd.Next(10);
}
/////////Выводим начальный массив на экран(Метод "PrintArray", см. ниже)////////////
///////////////////////////////////////////////////////////////////////////////////
PrintArray("Рандомный массив", Arr);
////////Узнаем число строк будущего двумерного массива///////////
////////////////////////////////////////////////////////////////
int n = 0; //число строк двумерного массива
bool proverka = true; //переменная проверка служит результатом сравнения всех элементов от i-того до j-ого(тру-элемент не повторялся, фолс - элемент встретился второй раз)
for (int i = 0; i < Arr.Length; i++)
{
for (int j = 0; j < i; j++)
{
if (Arr[i] == Arr[j])
{
proverka = false; break;
}
}
if (proverka)
n++;
proverka = true;
}
//////////////////Заносим элементы в массив 2d(заполняем первый и второй столбец)//////////////////
int[,] Arr_2d = new int[n, 2];
int str = 0;
int st2 = 1;
for (int i = 0; i < Arr.Length; i++)/////работаем со всеми элементами по очереди
{
for (int j = 0; j < i; j++)
{//////проверяем был-ли такой элемент внесен уже в двумерный массив
if (Arr[i] == Arr[j])
{
proverka = false; break;
}
}
if (proverka)/////если такого элемента еще нет в массиве, то записываем его и считаем сколько раз он повторяется
{
Arr_2d[str, 0] = Arr[i];
for (int j = 0; j < Arr.Length; j++)
{
if (i == j) continue;
if (Arr[i] == Arr[j])
st2++;
}
Arr_2d[str, 1] = st2;
st2 = 1;
str++;
}
proverka = true;
}
//////////////////////////////////Выводим на экран двумерный массив
Console.WriteLine("Новый двумерный массив:");
PrintArray2d(Arr_2d, n);
Console.WriteLine();
}
public static void PrintArray(string head, int[] Arr) //////////////// метод вывода одномерного массива/////////////////////
{
Console.WriteLine(head);
for (int i = 0; i < Arr.Length; ++i)
Console.Write(Arr[i] + " ");
Console.WriteLine();
}
public static void PrintArray2d(int[,] Arr_2d, int n) //////////////// метод вывода одномерного массива/////////////////////
{
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < 2; j++)
{
Console.Write(Arr_2d[i, j] + " ");
}
Console.WriteLine(); }}}}