Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прогр 4 лаба.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
134.9 Кб
Скачать

Задание 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(); }}}}