Главная » Учебные материалы » Информатика » Решения задач » МГТУ им. Н.Э.Баумана » Несколько классов/семестров » Номер РК 2 » Вариант 1 » Массивы - Выписать из массива А в В все числа левее Х и подходящие под условие Z, удалить из массива все Y левее Х и все Z правее Х, не создавая новый массив, но изменяя массив А. Х - самое отдаленное по модулю от максимального из отрицательных (если
Для студентов МГТУ им. Н.Э.Баумана по предмету ИнформатикаМассивы - Выписать из массива А в В все числа левее Х и подходящие под условие Z, удалить из массива все Y левее Х и все Z правее Х, не создавая новыйМассивы - Выписать из массива А в В все числа левее Х и подходящие под условие Z, удалить из массива все Y левее Х и все Z правее Х, не создавая новый
2024-02-09СтудИзба

Массивы - Выписать из массива А в В все числа левее Х и подходящие под условие Z, удалить из массива все Y левее Х и все Z правее Х, не создавая новый массив, но изменяя массив А. Х - самое отдаленное по модулю от максимального из отрицательных (если таки

Описание

Рубежный контроль 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 графическая версия




Показать/скрыть дополнительное описание

Рубежный контроль 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....

Характеристики решённой задачи

Учебное заведение
Номер задания
Вариант
Просмотров
2
Покупок
0
Размер
5,08 Mb

Список файлов

    Картинка-подпись
    Ваше экономие времени является моей ГЛАВНОЙ задачей! Если я Вам хоть чуть-чуть помог, пожалуйста, сделайте и мне приятное, оставьте 5 ЗВЁЗД и позитивный комментарий. Большое спасибо!

    Комментарии

    Поделитесь ссылкой:
    Цена: 299 руб.
    Расширенная гарантия +3 недели гарантии, +10% цены
    Рейтинг-
    0
    0
    0
    0
    0
    Поделитесь ссылкой:
    Сопутствующие материалы
    Свежие статьи
    Популярно сейчас
    Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
    Ответы на популярные вопросы
    Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
    Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
    Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
    Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
    Отзывы студентов
    Ставлю 10/10
    Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
    Лучшая платформа для успешной сдачи сессии
    Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
    Студизба ван лав ❤
    Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
    Отличный сайт
    Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
    Маленький отзыв о большом помощнике!
    Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
    Студ. Изба как крупнейший сборник работ для студентов
    Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
    Спасательный островок
    Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
    Всё и так отлично
    Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
    Отзыв о системе "Студизба"
    Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
    Отличный помощник
    Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
    Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
    Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
    Спасибо за шикарный сайт
    Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
    Популярные преподаватели
    Добавляйте материалы
    и зарабатывайте!
    Продажи идут автоматически
    5168
    Авторов
    на СтудИзбе
    438
    Средний доход
    с одного платного файла
    Обучение Подробнее