Массивы - Выписать из массива А в В все числа левее Х и подходящие под условие Z, удалить из массива все Y левее Х и все Z правее Х, не создавая новый массив, но изменяя массив А. Х - самое отдаленное по модулю от максимального из отрицательных (если таки
Описание
Программа сделана в 2х видах - с консольным интерфейсом и с графическим
Цель работы:
/ задача из РК программа в Pascal Lazarus.
В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023
Условия для программы, под которые она выполнена:
Выписать из массива А в В все числа левее Х и подходящие под условие Z, удалить из массива все Y левее Х и все Z правее Х, не создавая новый массив, но изменяя массив А.
Х - самое отдаленное по модулю от максимального из отрицательных (если таких несколько, то брать первое).
Y - все кратные 7.
Z - кратные двум и меньше нуля.
Вводить этот массив (25 символов), Х здесь -100 (он будет тем самым центром массива, от которого все крутится):
1, -5, 10, 7, 14, 0, -28, -7, -2, -8, -15, 4, -21, 14, -14, -100, -10, -8, 21, 20, 9, 50, 60, -24, 25
Ответ:
-2, -8, -100, 21, 20, 9, 50, 60, 25
Первый тест: не существует икс и/или не существует Y. Второй тест: не выписано ни одного числа, при этом X,Y существуют. Третий тест: Х совпал с У. Четвертый тест: не удалено ни одного числа.
Нужно подобрать числа в массиве, при которых будет выполняться эти условия в тесте.
Тесты.
1 тест - не существует Х и/или не существует Y.
Не существует Х, в том случае, если отсутствуют отрицательные числа и/или массив состоит из одного числа. В таком случае программа выведет окно с просьбой повторить ввод массивва.
4, 5, 0, 21, 28, 1 и/или 10
Если не существует Y, это никак не сказывается на обработку массива. Это означает, что в массиве отсутствуют элементы кратные 7.
Например, ввод: 1, -2, 3, 20, 19, 9, -8
Вывод: -2, 20, 19, 9
2 тест - не выписано ни одного числа, при этом X, Y существуют. Тест по сути не верный, так как у нас в любом случае будет выписываться Х, если он существует. По условию мы ничего не делаем с Х.
Например, ввод: -7, 14, -1, -20
Вывод: -20
Либо как вариант, может быть ввод: -14, -14. По сути здесь есть Y (число кратное 7) и X (причем Х, как наибольшая разница, разница здесь равна 0, но она единственная). При вводе: -14, -14 массив не выведется, а напишет ошибку
3 тест - Х совпал с У. Если Х совпал с Y, это никак не сказывается на обработку массива. Это означает, что Х кратен 7.
Например, ввод: 1, -2, 3, 21, 19, 9, -8
Вывод: -2, 21, 19, 9
4 тест - не удалено ни одного числа. Это может быть в случае, если слева от Х будут находиться только Z без Y, а справа не должно быть Z.
Например, ввод: -12, -8, -2, -6, 20, 1, 7, 14, 8, -7, -3
Вывод: -12, -8, -2, -6, 20, 1, 7, 14, 8, -7, -3
Мой вариант по иксу З, по y и z третье

Программа в сделанном виде:





2 графическая версия







Показать/скрыть дополнительное описание
Рубежный контроль 2. Одномерный массив. ЗАДАНИЕ1 только Программа сделана в 2х видах - с консольным интерфейсом и с графическим Цель работы: / задача из РК программа в Pascal Lazarus. В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023 Условия для программы, под которые она выполнена: Выписать из массива А в В все числа левее Х и подходящие под условие Z, удалить из массива все Y левее Х и все Z правее Х, не создавая новый массив, но изменяя массив А. Х - самое отдаленное по модулю от максимального из отрицательных (если таких несколько, то брать первое).
Y - все кратные 7. Z - кратные двум и меньше нуля. Вводить этот массив (25 символов), Х здесь -100 (он будет тем самым центром массива, от которого все крутится): 1, -5, 10, 7, 14, 0, -28, -7, -2, -8, -15, 4, -21, 14, -14, -100, -10, -8, 21, 20, 9, 50, 60, -24, 25 Ответ: -2, -8, -100, 21, 20, 9, 50, 60, 25 Первый тест: не существует икс и/или не существует Y. Второй тест: не выписано ни одного числа, при этом X,Y существуют. Третий тест: Х совпал с У. Четвертый тест: не удалено ни одного числа. Нужно подобрать числа в массиве, при которых будет выполняться эти условия в тесте. Тесты. 1 тест - не существует Х и/или не существует Y. Не существует Х, в том случае, если отсутствуют отрицательные числа и/или массив состоит из одного числа.
В таком случае программа выведет окно с просьбой повторить ввод массивва. 4, 5, 0, 21, 28, 1 и/или 10 Если не существует Y, это никак не сказывается на обработку массива. Это означает, что в массиве отсутствуют элементы кратные 7. Например, ввод: 1, -2, 3, 20, 19, 9, -8 Вывод: -2, 20, 19, 9 2 тест - не выписано ни одного числа, при этом X, Y существуют. Тест по сути не верный, так как у нас в любом случае будет выписываться Х, если он существует. По условию мы ничего не делаем с Х. Например, ввод: -7, 14, -1, -20 Вывод: -20 Либо как вариант, может быть ввод: -14, -14. По сути здесь есть Y (число кратное 7) и X (причем Х, как наибольшая разница, разница здесь равна 0, но она единственная).
При вводе: -14, -14 массив не выведется, а напишет ошибку 3 тест - Х совпал с У. Если Х совпал с Y, это никак не сказывается на обработку массива. Это означает, что Х кратен 7. Например, ввод: 1, -2, 3, 21, 19, 9, -8 Вывод: -2, 21, 19, 9 4 тест - не удалено ни одного числа. Это может быть в случае, если слева от Х будут находиться только Z без Y, а справа не должно быть Z. Например, ввод: -12, -8, -2, -6, 20, 1, 7, 14, 8, -7, -3 Вывод: -12, -8, -2, -6, 20, 1, 7, 14, 8, -7, -3 Мой вариант по иксу З, по y и z третье Программа в сделанном виде: 2 графическая версия 1.Пользователю предлагается ввести количество элементов в массиве, которое сохраняется в переменной n.
2.Затем пользователю предлагается ввести элементы массива через пробел. Эти элементы сохраняются в массиве A. 3.Программа ищет максимальное отрицательное число (maxNeg) и его индекс (maxNegIndex) в массиве A. 4.Затем программа ищет число X, которое наиболее удалено (по модулю) от maxNeg. Оно сохраняется в переменной X, а индекс X сохраняется в maxXIndex. 5.После этого программа проверяет массив на наличие нескольких чисел X и выбирает первое вхождение. Если такого числа нет, выводится сообщение о его отсутствии. 6.Затем программа выполняет определенные условия задачи: •Она оставляет все числа слева от X, которые удовлетворяют условию Z. •Удаляет все числа, которые находятся левее X и соответствуют условию Y.
•Удаляет все числа, которые находятся правее X и являются четными отрицательными числами (Z). 7.В конце программа выводит получившийся массив на экран. Затем программа ждет два вызова readln(), чтобы ожидать ввода пользователя перед завершением выполнения. Для проверки работоспособности вводить следующее: Вводить этот массив (25 символов), Х здесь -100 (он будет тем самым центром массива, от которого все крутится): 1, -5, 10, 7, 14, 0, -28, -7, -2, -8, -15, 4, -21, 14, -14, -100, -10, -8, 21, 20, 9, 50, 60, -24, 25 Ответ: -2, -8, -100, 21, 20, 9, 50, 60, 25 Программа при запуске: Просит ввести количество членов в массиве и нажать Enter Вводим числа через пробел Жмем Enter Получаем итоговый массив, а также число Х и максимальный отрицательный элемент.
Код: program project1; var n, i, j, maxXIndex, maxNegIndex: integer; maxNeg, maxX, X: integer; A: array of integer; begin writeln(\'Vvedite kol-vo elementov v massive:\'); readln(n); writeln; //пустая строка SetLength(A, n); writeln(\'Vvedite elementi massiva cherez probel:\'); for i := 0 to n - 1 do begin read(A); end; writeln; //пустая строка writeln(\'Ishodnii massiv:\'); for i := 0 to n - 1 do begin write(A); if i < n - 1 then write(\', \'); end; writeln; //пустая строка maxNeg := -999999999; maxX := 0; maxXIndex := -1; //Ищем максимальный отрицательный член for i := 0 to High(A) do begin if (A < 0) and (A > maxNeg) then begin maxNeg := A; maxNegIndex := i; end; end; //Ищем самый отдаленный по модулю от максимального отрицательного члена (Ищем Х) for i := 0 to High(A) do begin if (Abs(maxNeg - A) > maxX) then begin X := A; maxX := Abs(maxNeg - A); maxXIndex := i; end; end; //Проверяем массив на наличие нескольких Х, и в случае обнаружения берем первое for i := 0 to High(A) do begin if (A = X) then begin X := A; maxXIndex := i; end; end; writeln; //Выводим if maxNeg <> -999999999 then begin writeln(\'Naibolshee otricatelnoe chislo: \', maxNeg) ; if maxXIndex >= 0 then writeln(\'Chislo X v dannom massive: \', A[maxXIndex]) else writeln(\'Chislo X ne naideno !\'); end else writeln(\'V dannom massive net otricatelnih chisel !\'); //Выполним условия задачи: оставим слева от Х все числа, подходящие под условие Z, //удалим все числа Y левее X и все числа Z правее X i := 0;//обнулим счетчик while i < Length(A) do //пока счетчик не дойдет до конца массива, делай begin //пишем условия, какие числа удаляем до Х (это Y и не Z) if (i < maxXIndex) and ((not((A < 0) and (A mod 2 = 0)) or ((A mod 7 = 0)))) then //здесь мы удаляем ненужный член (сдвигаем массив на его место влево) begin for j := i to (High(A) - 1) do //от текущего значения до конца массива, делай A[j] := A[j + 1]; //текущему значению присваиваем следующее значение в массиве SetLength(A, (Length(A) - 1)); //длину массива сокращаем на одну позицию maxXIndex := maxXIndex - 1; //двигаем влево индекс позиции числа Х end else //пишем условие, какие число удаляем после Х (это Z) if (i > maxXIndex) and (A < 0) and (A mod 2 = 0) then begin for j := i to High(A) - 1 do A[j] := A[j + 1]; SetLength(A, Length(A) - 1); //здесь все тоже самое, как и выше, только не нужно двигать позицию Х end else //увеличиваем счетчик на 1, чтобы переключиться на следующий член массива begin i := i + 1; end; end; writeln; // Выводим полученный массив A в Memo2 writeln(\'Poluchennii massiv:\'); for i := 0 to High(A) do begin write(A); if i < n - 1 then write(\', \'); end; readln(); readln(); // два вызова readln() для задержки консоли end. Условие: Выписать из массива А в В все числа левее Х и подходящие под условие Z, удалить из массива все Y левее Х и все Z правее Х, не создавая новый массив, но изменяя массив А.
Х - самое отдаленное по модулю от максимального из отрицательных (если таких несколько, то брать первое). Y - все кратные 7. Z - кратные двум и меньше нуля. Как работает: Button1Click: При нажатии на \"Button1\" программа запрашивает у пользователя количество элементов массива и создает массив \"A\" соответствующей длины. Затем программа запрашивает у пользователя значения элементов массива и записывает их в массив \"A\". Затем элементы массива \"A\" отображаются в \"Memo1\". Button2Click: При нажатии на \"Button2\" программа выполняет следующие действия: Поиск максимального отрицательного элемента в массиве \"A\" и его индекса. Поиск элемента, который наиболее удален по модулю от найденного максимального отрицательного элемента.
Этот элемент обозначается как \"X\". Если в массиве есть несколько элементов, равных \"X\", выбирается первый из них. Затем программа выполняет следующее: Удаляет из массива \"A\" все элементы, которые находятся слева от \"X\" и не удовлетворяют условию (не являются четными числами, делящимися на 7). Удаляет из массива \"A\" все отрицательные четные числа, которые находятся справа от \"X\". Полученный массив \"A\" отображается в \"Memo2\". Максимальный отрицательный элемент и \"X\" отображаются в текстовых полях \"Edit1\" и \"Edit2\". Для проверки работоспособности вводить следующее: Вводить этот массив (25 символов), Х здесь -100 (он будет тем самым центром массива, от которого все крутится): 1, -5, 10, 7, 14, 0, -28, -7, -2, -8, -15, 4, -21, 14, -14, -100, -10, -8, 21, 20, 9, 50, 60, -24, 25 Ответ: -2, -8, -100, 21, 20, 9, 50, 60, 25 Скриншоты работы программы ниже: Код: unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Memo1: TMemo; Memo2: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private public end; var Form1: TForm1; NumElements, X: Integer; A: array of Integer; implementation {$R *.lfm} //функция для вывода массива fun....
Характеристики решённой задачи
Список файлов
