Вопрос № 178630: Дан массив Удалить элемент массива, больший заданного числа. Если таких элементов нет, выдать сообщение: «Элементы для удаления не найдены». Если таких элементов несколько, то удалить последний из найденных. Размерность массива и заданное число вво...
Вопрос № 178630:
Дан массив Удалить элемент массива, больший заданного числа. Если таких элементов нет, выдать сообщение: «Элементы для удаления не найдены». Если таких элементов несколько, то удалить последний из найденных. Размерность массива и заданное число вводите с помощью оператора InputBox. Значения элементов массива определить датчиком случайных чисел. Для вывода скалярных результатов вычислений используйте оператор вывода MsgBox. Вывод массива выполнить в файл.
1.В работе необходимо выполнить алгоритмические
задачи с использованием базовых типов данных и основных операторов языка программирования VBA. 2. Задачи прислать в виде файлов Word либо Excel, с кодом программы, выполненном в среде VBA соответствующего компонента Office. 3. В программах обязательно наличие комментариев, поясняющих основные алгоритмические шаги.
N = CDbl(InputBox("Введите число элементов в массиве" + vbCrLf +
"(целое, больше нуля)"))
ReDim Mass(N - 1) As Double
NFileIn = FreeFile ' Определяем ссылочный номер исходного сгенерированного файла Open FileIn For Output As #NFileIn ' Открываем файл
CN = Len(CStr(N)) Zero = String(CN, "0") ' Строчка нулей для выравнивания номера элемента в файле
MinMass = Diapaz MaxMass = 0
Randomize ' Initialize
random-number generator.
For i = 0 To N - 1 ' Заполняем исходный массив случайными числами Mass(i) = Diapaz * Rnd ' Generate random value between 0 and 1000. If MinMass > Mass(i) Then MinMass = Mass(i) ' Минимум элем массива If MaxMass < Mass(i) Then MaxMass = Mass(i) ' Максимум элем массива
Print #NFileIn, Right(Zero + CStr(i), CN) + "
" + CStr(Mass(i)) ' Записываем номер элемента и его значение в файл Next Close #NFileIn
Mes = "Кол-во элементов в массиве= " + CStr(N) + vbCrLf Mes = Mes + "Минимальный элемент= " + CStr(MinMass) + vbCrLf Mes = Mes + "Максимальный элемент= " + CStr(MaxMass) + vbCrLf Mes = Mes + "Введите число, больше которого будет удалён последний обнаруженный элемент "
ib = InputBox(Mes) ' ввод данного в
символьном виде ib = Replace(Replace(ib, ",", DecD), ".", DecD) ' приводим вводимое в строке число к правильному разделителю EMax = CDbl(ib)
ii = N For i = N - 1 To 0 Step -1 ' C конца массива ищем номер элемента значение которого более заданного числа If Mass(i) > EMax Then ii = i Exit For End If Next
If ii = N Then Mes = "Элемент > &quo
t; + CStr(EMax) + " не найден" + vbCrLf ReDim MassOut(N - 1) As Double Else Mes = "Номер последнего элемента > " + CStr(EMax) + " равен " + CStr(ii) + vbCrLf + vbCrLf ReDim MassOut(N - 2) As Double End If
NFileOut = FreeFile ' Определяем ссылочный номер файла Open FileOut For Output As #NFileOut ' Открываем файл
For i = 0 To N - 1 ' Формируем выходной
массив без удаляемого элемента (если элемент не существует, массивы совпадают) If i <> ii Then If i < ii Then k = i Else k = i - 1 MassOut(k) = Mass(i) Print #NFileOut, Right(Zero + CStr(k), CN) + " " + CStr(MassOut(k)) ' Записываем номер элемента и его значение в файл End If Next
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.