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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

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

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

Vasiliy83
Статус: Бакалавр
Рейтинг: 1168
∙ повысить рейтинг »
Megaloman
Статус: Бакалавр
Рейтинг: 994
∙ повысить рейтинг »
Botsman
Статус: Профессионал
Рейтинг: 508
∙ повысить рейтинг »

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

Номер выпуска:985
Дата выхода:08.02.2010, 04:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:341 / 95
Вопросов / ответов:1 / 1

Вопрос № 176450: Добрый день! Помогите пожалуйста сделать программу, так как сам я это сделать несмог(. Задание такое: дана прямоугольная матрица. Определить: 1) номер первого из столбиков который содержит хотябы один ноль (и выводить этот номер в отдельный L...



Вопрос № 176450:

Добрый день! Помогите пожалуйста сделать программу, так как сам я это сделать несмог(.
Задание такое: дана прямоугольная матрица. Определить:
1) номер первого из столбиков который содержит хотябы один ноль (и выводить этот номер в отдельный Label или TextBox разницы нету);
2) отсортировать матрицу таким образом чтобы первая строка содержала числа по возростающей!
Сама матрица у меня сделана, а вот первое и второе я сделать немогу. Вот ссылка на саму матрицу http://ifolder.ru/16172254 .
Вот ответы которые я получил с сайта ru-board.com :

Код:

1)Допустим у нас матрица 4х4, тогда

Код:
Dim i, j as Integer
Dim mat(4)(4) as Integer

For i=0 to 4
For j=0 to 4
if(arr(j)(i)==0)
Label.Text=j
Next
Next

2) Вот так:
Dim i,j,t as Integer
Dim temp(4) as Integer //Вспомогательный массив. В него временно перепишим значения из первой строки. Отсортируем и запишим обратно в массив.
For i-0 To 4
temp(i)=mat(0)(i)
Next

//Теперь сортируем значения в временном массиве
For i=0 To 4
For j=i+1 To 4
if(temp(j)<temp(i))
t=temp(j)
temp(j)=temp(i)
temp(i)=t
Next j
Next i

//Теперь вернем отсортированные значения в массив
For i=0 To 4
mat(0)(i)=temp(i)

Но добавить эти два примера к себе в проэкт у меня неполучилось(. Проверьте пожалуйста правильность этих ответов и если можна доделайте мой проэкт.
Помогите!!! Это просто задача на экзамен и её нужно срочно сделать и чтобы она была работоспособна.
Заранее огромное Вам всем спасибо.

Отправлен: 03.02.2010, 03:46
Вопрос задал: Куценко Андрей, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Megaloman, Бакалавр :
Здравствуйте, Куценко Андрей.
В Вашем вопросе ошибка в том, что в Basic индексы массивов по умолчанию изменяются от 0 до N-1, где N- число элементов в массиве. Если у Вас матрица 4*4, то цикл от 0 до 4 неизбежно приведёт к ошибочному результату. Да и синтаксис там, похоже, неверный.
После уточнения задачи в мини-форуме вопроса предлагаю решение в следующем виде (Внизу код с решением).
Отлаживал программу как макрос в Excel, так как Microsoft Visual Basic 6.0 SP5 у меня нет.
Там, где мне не на чем было отладить Ваш код (ввод-вывод, вы вызываете свой код из формы, а у меня её нет), я строки закомментировал. Но на логику работы это не скажется - Вы можете убрать мои строки и сделать ввод-вывод как вам надо.
Код:
Dim i, j, n, m As Integer
Dim r As String

Dim j0, k, p As Integer

' n = Text1.Text ' Ваш способ ввода мне не на чем отладить - закомментировал
' m = Text2.Text

n = 3 ' n - число строк (Ввожу явным образом)
m = 4 ' m - число столбцов

ReDim a(1 To n, 1 To m)

r = ""
For i = 1 To n ' Ввод элементов матрицы
For j = 1 To m
a(i, j) = InputBox("Введите элемент матрицы" + vbCrLf + "строка " + CStr(i) + vbCrLf + "столбец " + CStr(j))
r = r + Mid(CStr(a(i, j)) + " ", 1, 5)
Next j
r = r + vbCrLf
Next i

' Label2.Caption = r ' не на чем отладить, закомментировал
MsgBox r ' результат выдал в MsgBox

' В матрице найти номер первого из столбцов, который содержит хотя бы один ноль

j0 = -1 ' В эту переменную найдём номер первого столбца, в котором присутствует нулевой элемент

For j = 1 To m
For i = 1 To n
If a(i, j) = 0 Then ' Если в столбце нашли нулевой элемент
j0 = j ' запоминаем номер столбца
Exit For ' и покидаем цикл - задача выполнена
End If
Next i
If j0 <> -1 Then ' Если найден индекс столбца с нуль элементом
MsgBox " Номер первого столбца с нулевым элементом " + CStr(j0) ' результат выдал в MsgBox
Exit For ' - покидаем цикл - задача выполнена
End If
Next j

' Отсортировать матрицу таким образом, чтобы первая строка содержала числа по возрастающей

For j = 1 To m
For i = j To m
If a(1, i) < a(1, j) Then ' Ищем min элемент в 1 строкt
For p = 1 To n ' переставляем столбец с мин элементом на начало
k = a(p, i)
a(p, i) = a(p, j)
a(p, j) = k
Next
End If
Next
Next

' Формируем результат в симв форме
r = ""
For i = 1 To n ' Ввод элементов матрицы
For j = 1 To m
r = r + Mid(CStr(a(i, j)) + " ", 1, 5)
Next j
r = r + vbCrLf
Next i

MsgBox r ' результат выдал в MsgBox

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

Ответ отправил: Megaloman, Бакалавр
Ответ отправлен: 03.02.2010, 12:03
Номер ответа: 259174

Оценка ответа: 5

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

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

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

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

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

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

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

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


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

    В избранное