Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [VB6] решение задачи с массивом


Автор: nasta 16.5.2008, 22:46
Помогите, пожалуйста, решить такую задачу:
Перед минимальным элементом столбца матрицы вставить элемент, равный сумме остальных?(2-мерный массив)
Спасибо!

Автор: Akina 17.5.2008, 00:12
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: neic 17.5.2008, 11:56
Господи, что может быть легче =)

Код

dim a(10,10) as integer
sum = 0
min = a(1,1)

For i = 1 to 10
for j = 1 to 10
     sum = sum + a(i,j)
     If min > a(i,j) then
         k = i
         p = j
     end if
Next
Next

a(k-1,p-1) = sum

Автор: nasta 17.5.2008, 12:26
Спасибо большое, но у меня все равно не получается- надо же еще этот массив увеличить на 1 строку, чтобы вставить эту сумму в каждом столбике! А еще вывести в pic? 


Автор: neic 17.5.2008, 14:27
Ой не так прочитал =)
Чуть-чуть поменяем и всё будет ОК.

Код

Dim a(10, 10) As Integer

' делаем ввод массива из текстовых полей, ты можешь сделать другой ввод
a(1, 1) = Text1
a(1, 2) = Text4
a(1, 3) = Text7
a(2, 1) = Text2
a(2, 2) = Text5
a(2, 3) = Text8
a(3, 1) = Text3
a(3, 2) = Text6
a(3, 3) = Text9

For i = 1 To 3 ' переходим на след. столбец
Sum = 0 ' обнуляем счётчик суммирования
Min = a(1, i) ' обнуляем минимум
For j = 1 To 3 ' переходим на след. строку
     Sum = Sum + a(j, i) ' j - строка, i - стобец
     If Min > a(j, i) Then
         k = j
         p = i
     End If
Next

If k > 1 Then
MsgBox k - 1 & vbCrLf & p & vbCrLf & Sum ' k - строка, p - столбец,  sum - сумма
a(k - 1, p) = Sum
Else
MsgBox k & vbCrLf & p & vbCrLf & Sum
a(k, p) = Sum
End If
Next



а что такое pic?

Автор: nasta 17.5.2008, 15:04
Надо вывод получившегося массива в объект PictureBox,
Спасибо большое!Попробую так!

Автор: neic 18.5.2008, 00:30
1. Добавляешь на форму Picture
2. Добавляешь на Picture элемент Text
3. Выделяешь созданный Text, копируешь его, выделяешь Picture, и вставляешь (Ctrl+V), на сообщение отвечаешь "Да" или "Ок" (не помню) =)
4. Добавляешь кнопку (не в Picture) и прописываешь код в кнопке:
Код

n = 7
k = 7
Top = Text1(0).Top

For i = 1 To n
For j = 1 To k - 1
    Load Text1(i & j)
    Text1(i & j).Visible = True
    Text1(i & j).Top = Top
    Text1(i & j).Text = ""
    
    If j > 1 Then
    Text1(i & j).Left = Text1(i & (j - 1)).Left + Text1(0).Width + 10
    Else
    Text1(i & j).Left = Text1(0).Left + Text1(0).Width + 10
    End If
Next

If i < n Then
Top = Top + Text1(0).Height + 10
Load Text1((i + 1) & 0)
Text1((i + 1) & 0).Visible = True
Text1((i + 1) & 0).Top = Top
Text1((i + 1) & 0).Left = Text1(0).Left
Text1((i + 1) & 0).Text = ""
End If
Next


Это код делает нужное кол-во копий "ячеек" твоего массива.
Вместо:
Код

Text1((i + 1) & 0).Text = ""


Пишешь например:
Код

Text1((i + 1) & 0).Text = sum ' см. выше что это значит


Главное!!!
Первый элемент будет нулевым ( Text1(0) ), а следующий будет такого вида Text1(11)...Text(1n) при переходе на след строку Text1(21)...Text(2n) и т.д.

Добавлено через 54 секунды
Вот исходник.

Автор: nasta 18.5.2008, 09:49
Спасибо большое, работает!

Автор: Ursius 19.5.2008, 19:24
Привет всем smile . Помогите мне пожалуйста решить вот эти две задачи по одномерным массивам:
1.Заданы массивы и . Найти все числа не принадлежат двум массивам одновременно, это с помошью ИнпутБокс и МсжБокс.
2.Задан массив . Напечатать номера тех элементов массива которые равняются 5 и подсчитать их количество, или напечатать номера элементов массива, которые равняются 7 и подсчитать сумму номеров этих элементов. Вариант выбирать с помошью ОпшнБаттон. Эту задачу с помошью формы с тремя полями для чисел, кнопкой для выполнения операции, у двумя переключателями для выбора варианта. Форма не сильно важна, очень нуждаюсь с програмном коде.
Заранее благодарен, за ответы.

Автор: neic 19.5.2008, 20:38
Такое чувство, что до нас добрались иностранцы плохо владеющие русским языком, либо русских косящих под иностранцев плохо знающих русский, увеличилось.

1ая задача
Код

... 'делаешь ввод
poisc = InputBox("Введи число",,"Сюда")

For i = 1 to n
      If m(i)=poisc then
      MsgBox "Такой элемент уже есть"
      Exit Sub
        end if
Next

MsgBox "Такого элемента нет"

где, n - кол-во элементов
m() - массив

Если я не правильно тебя понял по поводу задания... вини самого себя, учи рашевский язык по-нормальному, а то моя твоя не понимать.

2ая задача
Код

... 'делаешь ввод
For i = 1 to n
      If option1.value = True then ' ищем 5
           If m(i)=5 then
                 If k <> "" then
                        k = k & vbcrlf & i
                        l = l+1
                 else
                        k = i
                        l = 1
                 end if
           end if
      elseif option2.value = True ' ищем 7
        If m(i)=7 then
                 If k <> "" then
                        k = k & vbcrlf & i
                        l = l+1
                 else
                        k = i
                        l = 1
                 end if
           end if
      end if
Next

MsgBox "Кол-во элементов: " & i & vbcrlf &  "Перечень мест:" & vbcrlf & k

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)