Вопрос: Помогите решить несложную задачку.ПЛИЗ!!! | Добавлено: 12.01.06 23:15 |
Автор вопроса: ![]() |
Ответы | Всего ответов: 22 |
Номер ответа: 16 Автор ответа: ![]() ![]() Вопросов: 45 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #16 | Добавлено: 14.01.06 17:47 |
А вот с возможностью задавать размерность массива и собственно сами
элементы: Option Explicit Private Sub Command1_Click() Dim N As Integer 'размерность массива Dim A() As Integer 'массив Dim I As Integer 'переменная цикла Dim intFirst As Integer 'первое отрицательное значение Dim intLast As Integer 'последние отрицательное значение Dim intC As Integer 'при отмене возникает ошибка, которую надо обрабатывать On Error GoTo metka 'инициируем обработчик ошибок N = InputBox("Введите размер массива" ![]() ReDim A(0 To N) As Integer 'REDIM сбрасывает элементы массива на ноль For I = 1 To N A(I) = InputBox("A (" + Str(I) + " ![]() Next I On Error GoTo 0 'выключаем обработчик ошибок Text1.Text = "Элементы массива: " 'Для Text1 лучше поставит свойство MULTILINE=true и вертикальную полосу прокрутки For I = 1 To N If A(I) < 0 And intC = 0 Then intC = 1: intFirst = I If A(I) < 0 And intFirst <> I Then intLast = I: Exit For Next I For I = intFirst + 1 To N - (intLast - intFirst - 1) A(I) = A(I + (intLast - intFirst - 1)) Next I For I = 1 To N - (intLast - intFirst - 1) Text1.Text = Text1.Text & Str(A(I)) & " " Next I Exit Sub 'выход из процедуры, если нет ошибки 'подпрограмма обработки ошибок metka: MsgBox "Данные введены некорректно" End Sub Private Sub Command2_Click() End End Sub Private Sub Form_Load() Form1.Caption = "Ввод и обработка массива" Text1.Text = "" Command1.Caption = "Выполнить задание" Command2.Caption = "Выход" End Sub |
Номер ответа: 17 Автор ответа: ![]() ![]() Вопросов: 45 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #17 | Добавлено: 17.01.06 13:28 |
Мы тут кое что не предъусмотрели!
Ошибка если не вводим отрицательных совсем и если одно отрицательное Вот добавил пару циклов: If intFirst > 0 And intLast > 0 Then For I = intFirst + 1 To N - (intLast - intFirst - 1) A(I) = A(I + (intLast - intFirst - 1)) Next I Else GoTo Error 'инициируем обработчик ошибок End If If intFirst > 0 And intLast > 0 Then For I = 1 To N - (intLast - intFirst - 1) Text1.Text = Text1.Text & Str(A(I)) & " " Next I Else On Error GoTo Error 'инициируем обработчик ошибок End If Exit Sub 'выход из процедуры, если нет ошибки 'подпрограмма обработки ошибок metka: MsgBox "Данные введены некорректно" End Error: MsgBox "В массиве нет отрицательных значений" |
Номер ответа: 18 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 225421504 Вопросов: 8 Ответов: 60 |
Профиль | Цитата | #18 | Добавлено: 17.01.06 21:22 |
Всё гораздо легче!
p=0 for i=1 to n if a(i)> 0 then p=p+1 if p=2 then exif for next i if p<2 then exit sub:MsgBox "В массиве нет отрицательных значений" 'goto лучше не использовать |
Номер ответа: 19 Автор ответа: ![]() ![]() Вопросов: 45 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #19 | Добавлено: 18.01.06 12:17 |
Ну не знаю, вроде в моем варианте вообще ни чего сложного нет!
|
Номер ответа: 20 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 225421504 Вопросов: 8 Ответов: 60 |
Профиль | Цитата | #20 | Добавлено: 18.01.06 15:02 |
хотя ты прав! Твой вариант лучше! Меньше циклов, больше производительность! Просто в программе переменных очень мало! А имена у них чёт очень длинные с толку сбивает!
Ещё из кожи вылези, но Goto обойди! |
Номер ответа: 21 Автор ответа: ![]() ![]() Вопросов: 45 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #21 | Добавлено: 18.01.06 15:41 |
Да это же не принципиально для автора топика - ему нужно было считать,
мы сделали, а еще плюс сделали проверку на ошибки, ему бы препод сказал - "гуд" А с чем связано твое отношение к GoTo
|
Номер ответа: 22 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 225421504 Вопросов: 8 Ответов: 60 |
Профиль | Цитата | #22 | Добавлено: 18.01.06 16:36 |
Ищи информацию о "хороше" стиле программирования!
Просто трудно читать, искать ссылку и т.д. и т.п. можешь тему создать может быть кто-то лучше знает! |
|