Вопрос задан 11.07.2023 в 07:24. Предмет Информатика. Спрашивает Алипова Ангелина.

Даю 50 балло Дан массив размера N. Найти количество его промежутков моно-тонности (то есть

участков, на которых его элементы возрастают или убывают). Написать код для Лазурус оконное приложение, с использованием ListBox или Memo и соответственно кнопок. Код с пояснением.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Могильникова Светлана.

Ответ:

#include "stdafx.h"

#include "conio.h"

#include "iostream"

using namespace std;

 

 

int main()

{

   setlocale( LC_ALL,"Russian");// включаем русскую раскладку

   cout << "Введите количество элементов массива" << endl;

   unsigned int lenthOfArray=0;//переменная длины массива

   cin >> lenthOfArray;//считываем длину массива

   //создаем Массив  

   int* Array = new int [lenthOfArray];

   int M=1;

   cout << "Вводите элементы массива:" << endl;

   for(int i=0;i<lenthOfArray;i++)

   {

       cin >> Array[i];//считываем массив

       current=up;

       

       if(i>1)

       if((Array[i]>=Array[i-1])&&(Array[i-1]<Array[i-2]))

       {

           M++;

       }

       else

       {

           if((Array[i]<=Array[i-1])&&(Array[i-1]>Array[i-2]))

               M++;

       }

   }

   

 

   cout << "Количество промежутков монотонности: " << M << endl;

   

   getch();

       delete [] Array;

 

   return 0;

}

Добавлено через 7 минут

C++Выделить код

1

current=up;

только это удали

Добавлено через 10 минут

C++Выделить код

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

#include "stdafx.h"

#include "conio.h"

#include "iostream"

using namespace std;

 

 

int main()

{

   setlocale( LC_ALL,"Russian");// включаем русскую раскладку

   cout << "Введите количество элементов массива" << endl;

   unsigned int lenthOfArray=0;//переменная длины массива

   cin >> lenthOfArray;//считываем длину массива

   //создаем Массив  

   int* Array = new int [lenthOfArray];

   int M=1;

   cout << "Вводите элементы массива:" << endl;

   for(int i=0;i<lenthOfArray;i++)

   {

       cin >> Array[i];//считываем массив

       

       

       if(i>1)

       if((Array[i]>Array[i-1])&&(Array[i-1]<Array[i-2]))

       {

           M++;

           

       }

       else

       {    

           if((Array[i]<Array[i-1])&&(Array[i-1]>Array[i-2]))

               M++;

           else

                       if((Array[i]==Array[i-1])&&(Array[i-1]!=Array[i-2]))

           M++;

       }

 

   }

   

 

   cout << "Количество промежутков монотонности: " << M << endl;

   

   getch();

       delete [] Array;

 

   return 0;

}

Объяснение:

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Благодарим вас за предоставление информации. Ниже приведен код на языке Pascal (Lazarus) для создания оконного приложения, которое решает вашу задачу. Предполагается, что вы уже создали оконную форму и разместили на ней ListBox, Memo и две кнопки: "Вычислить" и "Очистить".

sql
// Объявление глобальных переменных var Numbers: array of Integer; // Массив чисел Count: Integer; // Количество промежутков монотонности // Обработчик кнопки "Вычислить" procedure TForm1.ButtonCalculateClick(Sender: TObject); var i: Integer; Increasing, Decreasing: Boolean; // Флаги возрастания и убывания begin Count := 0; Increasing := False; Decreasing := False; // Получение чисел из ListBox и сохранение в массиве Numbers SetLength(Numbers, ListBox1.Items.Count); for i := 0 to ListBox1.Items.Count - 1 do Numbers[i] := StrToInt(ListBox1.Items[i]); // Подсчет промежутков монотонности for i := 1 to Length(Numbers) - 1 do begin if Numbers[i] > Numbers[i - 1] then begin // Последовательность возрастает if not Increasing then begin Increasing := True; Inc(Count); end; Decreasing := False; end else if Numbers[i] < Numbers[i - 1] then begin // Последовательность убывает if not Decreasing then begin Decreasing := True; Inc(Count); end; Increasing := False; end; end; // Отображение результата в Memo Memo1.Lines.Add('Количество промежутков монотонности: ' + IntToStr(Count)); end; // Обработчик кнопки "Очистить" procedure TForm1.ButtonClearClick(Sender: TObject); begin ListBox1.Clear; Memo1.Clear; SetLength(Numbers, 0); Count := 0; end;

В данном коде мы используем два глобальных массива: Numbers для хранения чисел из ListBox и Count для подсчета количества промежутков монотонности.

В обработчике кнопки "Вычислить" происходит следующее:

  1. Инициализируются переменные Count, Increasing и Decreasing.
  2. Мы получаем числа из ListBox и сохраняем их в массиве Numbers.
  3. Затем мы перебираем числа в массиве Numbers с помощью цикла. Если текущее число больше предыдущего, это означает возрастание последовательности. Если текущее число меньше предыдущего, это означает убывание последовательности.
  4. Если флаги Increasing или Decreasing неактивны (False), мы инкрементируем Count, чтобы учесть новый промежуток монотонности.
  5. После завершения цикла мы отображаем результат в Memo.

В обработчике кнопки "Очистить" происходит очистка ListBox, Memo, массива Numbers и переменной Count.

Убедитесь, что связали обработчики с соответствующими кнопками в дизайнере Lazarus, чтобы код выполнился при нажатии на кнопки.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос