Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Специалист
Рейтинг: 3978
∙ повысить рейтинг »
Vasiliy83
Статус: Бакалавр
Рейтинг: 1679
∙ повысить рейтинг »
Megaloman
Статус: Профессионал
Рейтинг: 1267
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Basic/VBA

Номер выпуска:1026
Дата выхода:30.05.2010, 22:30
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:228 / 84
Вопросов / ответов:1 / 1

Вопрос № 178630: Дан массив Удалить элемент массива, больший заданного числа. Если таких элементов нет, выдать сообщение: «Элементы для удаления не найдены». Если таких элементов несколько, то удалить последний из найденных. Размерность массива и заданное число вво...



Вопрос № 178630:

Дан массив Удалить элемент массива, больший заданного числа. Если таких элементов нет, выдать сообщение: «Элементы для удаления не найдены». Если таких элементов несколько, то удалить последний из найденных. Размерность массива и заданное число вводите с помощью оператора InputBox. Значения элементов массива определить датчиком случайных чисел. Для вывода скалярных результатов вычислений используйте оператор вывода MsgBox. Вывод массива выполнить в файл.

1.В работе необходимо выполнить алгоритмические задачи с использованием базовых типов данных и основных операторов языка программирования VBA.
2. Задачи прислать в виде файлов Word либо Excel, с кодом программы, выполненном в среде VBA соответствующего компонента Office.
3. В программах обязательно наличие комментариев, поясняющих основные алгоритмические шаги.

Отправлен: 25.05.2010, 22:16
Вопрос задал: Ананьев Рудольф Олегович, 2-й класс
Всего ответов: 1
Страница вопроса »


Отвечает Megaloman, Профессионал :
Здравствуйте, Ананьев Рудольф Олегович. Вот код макроса. В нём надо указать пути к файлам.630.xls (33.5 кб)
Код:
Sub Z178630()

Const Diapaz = 1000 ' Диапазон определения значений элементов массива от 0 до ...
Const FileIn = "D:\FileAll.txt" ' Файл с исходным сгенерированным массивом
Const FileOut = "D:\FileOut.txt" ' Файл с выходным массивом

Dim N As Long ' Число элементов массива
Dim EMax As Double ' Максимальеое значение элемента

DecD = Mid(CStr(5 / 3), 2, 1) ' Разделитель дробной части

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

Close #NFileOut

MsgBox Mes + "массивы записаны в файлы" + vbCrLf + " сгенерированный " ; + FileIn + vbCrLf + " обработанный " + FileOut

End Sub

-----
Нет времени на медленные танцы

Ответ отправил: Megaloman, Профессионал
Ответ отправлен: 26.05.2010, 21:30
Номер ответа: 261688

Оценка ответа: 5
Комментарий к оценке:
спасибо ) все работает

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261688 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.16 от 26.05.2010

    В избранное