Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [VBA] матрица, поиск по цифре 
:(
    Опции темы
Гость_Vitek
Дата 16.11.2005, 03:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вечер добрый, господа!
Помогите пожалуйста с Visual Basic. Мне нужно вывести все столбцы матрицы, в которых есть хотя бы один ноль.
Что-то мне подсказывает, что это элементарно, но почему то у меня не получается. =(

Заранее спасибо!

________________
С уважением,
Виктор.
  Вверх
Alexandr87
Дата 16.11.2005, 05:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 1
Всего: 39



Код

Option Explicit

Private Sub CommandButton1_Click()
Dim row As Integer
row = 3 'Kol-vo strok
Dim col As Integer
col = 3 'Kol-vo stolbov
Dim number As String
Dim x, y As Integer


For x = 1 To col
    For y = 1 To row
        If (Cells(y, x) = 0) Then
            number = number & x & " "
            Exit For
        End If
    Next y
Next x
MsgBox (number)

End Sub

PM Jabber   Вверх
cardinal
Дата 16.11.2005, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



А вообще тут
http://forum.vingrad.ru/index.php?act=Sear...%F2%F0%E8%F6%E0
много всего про матрицы


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Guest
Дата 16.11.2005, 21:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Alexandr87, спасибо большое! А не могли бы Вы объяснить мне поподробней вот эти 4 строки:

Код

For x = 1 To col
    For y = 1 To row
        If (Cells(y, x) = 0) Then
            number = number & x & " "


Что там происходит?

Еще раз спасибо!

___________________
С уважением,
Виктор.
  Вверх
Guest
Дата 16.11.2005, 21:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ой, и еще начало не очень понятно:

Код

Option Explicit

Private Sub CommandButton1_Click()


Что значит "CommandButton1_Click()" ?

А "Option Explicit" типа определяет, можно ли неявно объявить локальные переменные, да?

___________________
С уважением,
Виктор.
  Вверх
Staruha
Дата 16.11.2005, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: нет
Всего: 27




For x = 1 To col - идем по столбцам,их три

For y = 1 To row - идем по строкам

If (Cells(y, x) = 0) Then - И если находим
number = number & x & " " - получаем Номер столбца
То бишь заходим в первый столбец и проверяем строки.Идем во второй столбец

Private Sub CommandButton1_Click() -Объявляем процедуру нажатия кнопки с именем CommandButton1. Можно назвать Кнопка и тогда будет

Private Sub Кнопка_Click()






--------------------
Возмездие настигнет
PM MAIL   Вверх
Guest
Дата 16.11.2005, 22:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Alexandr87, cardinal, Staruha, всем большое спасибо! Вы меня очень выручили! Весьма благодарен!

______________
С уважением,
Виктор.
  Вверх
Guest
Дата 22.11.2005, 15:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Эх, не прокатила прога. =(
Преподаватель сказал надо кое-что переделать... Сказал, что надо описать строки и столбцы(типа размер матрицы). То есть не конкретно 3 на 3, а вот, например, если матрица будет 20 на 20, то ее же будет не легко заполнить...(я так понял, что он имел ввиду, чтобы программа искала нули в любой матрице, какая бы размерность у нее не была...наверно так) Помогите переделать пожалуйста!
дал еще вот такую штуку, сказал, что можно с помощью нее сделать...

Код

Sub EntRand(n as integer, m as integer)
For i = 1 To n
For j = 1 To m
Cells(i,j)=Fix(100*Rand)
next i
next j
End Sub 


Помогите плиз!

_________________
С уважением,
Виктор.
  Вверх
Staruha
Дата 22.11.2005, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: нет
Всего: 27



smile Я так пологаю надо найти последнюю строку и последний столбец (Column.Count. Способов навалом) это будет n и m


--------------------
Возмездие настигнет
PM MAIL   Вверх
Guest
Дата 22.11.2005, 22:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Staruha, а что он нам дал? что там написанно? что это значит? =)
Я вот про это:

Код

Sub EntRand(n as integer, m as integer)
For i = 1 To n
For j = 1 To m
Cells(i,j)=Fix(100*Rand)
next i
next j
End Sub 


________________
С уважение,
Виктор.
  Вверх
cardinal
Дата 23.11.2005, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



Guest, ты бы еще код выделял как VB код, а не как C++. Попробуй вот так:
Код

Option Explicit

Const col = 99 'Kol-vo stolbov
Const row = 58 'Kol-vo strok
Dim Cells(1 To row, 1 To col) As Integer

Private Sub Command1_Click()
Dim x, y As Integer
Dim number As String

EntRand row, col

For x = 1 To col
    For y = 1 To row
        If (Cells(y, x) = 0) Then
            number = number & x & " "
            Exit For
        End If
    Next y
Next x


MsgBox (number)

End Sub

Sub EntRand(n As Integer, m As Integer)
Dim i As Integer
Dim j As Integer

For i = 1 To n
    For j = 1 To m
        Cells(i, j) = Fix(100 * Rnd())
    Next j
Next i
End Sub

Проверять особо некогда, но вроде все правильно...
Цитата(Guest @ 22.11.2005, 20:34)
а что он нам дал? что там написанно?

Заполнение матрицы случ. числами...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Staruha
Дата 23.11.2005, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: нет
Всего: 27



Цитата
Staruha, а что он нам дал? что там написанно? что это значит? =)


Sub EntRand(n as integer, m as integer)- Макрос ,в скобках объявлены две числовые переменные n и m
For i = 1 To n '- n - колич.строк
For j = 1 To m '- m - столбцов
Cells(i,j)=Fix(100*Rand) - ' Rand - случайное число ,т.е. - программа поставит число ,как если бы ты кубик кинул
next i
next j
End Sub




--------------------
Возмездие настигнет
PM MAIL   Вверх
Guest
Дата 28.11.2005, 11:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а как сделать неограниченное количество столбцов и строк?
  Вверх
cardinal
Дата 28.11.2005, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



А компер у тебя что резиновый? smile

Что значит неограниченный?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Guest
Дата 28.11.2005, 17:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Что значит неограниченный?[/quote]

не знаю. а почему именно 99 столбцов и 58 строк? может есть какая-нибудь общая схема записи размерности матрици, не знаете?
  Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0851 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.