задача на массивы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
_NeoN_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 178
Зарегистрирован: 14.08.2003 (Чт) 9:48
Откуда: Новосибирск

задача на массивы

Сообщение _NeoN_ » 27.08.2003 (Ср) 9:20

Есть массив M*N надо написать процедуру которая бы ставила в "точку" [m\2;n\2] число 100 а потом по кругу уменьшала бы это значение.. если не понятно то вот картинка))
0 0 0 0 0 0 0 0 0
0 70 70 70 70 70 70 70 0
0 70 80 80 80 80 80 70 0
0 70 80 90 90 90 80 70 0
0 70 80 90 100 90 80 70 0
0 70 80 90 90 90 80 70 0
0 70 80 80 80 80 80 70 0
0 70 70 70 70 70 70 70 0
0 0 0 0 0 0 0 0 0
вот...так до 0.. но чтобы шаг можно было регулировать...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.08.2003 (Ср) 10:06

Код: Выделить всё
sub dothisstupidthing(arr() as long, optional byval start as long=100, optional byval delta as long=10)
  dim w as long, h as long, i as long, j as long, tmp as long
  w=ubound(arr,2)
  h=ubound(arr,1)
  i=lbound(arr,2)
  j=lbound(arr,1)
  if ((w-i+1) mod 2) = 0 or ((h-j+1) mod 2)=0 then err.raise 1, "stupidprocedure", "cannot assign central point due to even array size"
 
  i=j+h\2
  j=lbound(arr,2)+w\2
  arr(i, j)=start
 
  For w = 1 To start/delta
    tmp=start-delta*w
    for h=-w to w
      arr(i+w,j+h)=tmp
      arr(i-w,j+h)=tmp
      arr(i+h,j+w)=tmp
      arr(i+h, j-w)=tmp
    next
  next
end sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Георгий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 126
Зарегистрирован: 08.08.2003 (Пт) 15:08
Откуда: Россия

Сообщение Георгий » 27.08.2003 (Ср) 10:36

GSerg писал(а):
Код: Выделить всё
...
  For w = 1 To start/delta
    tmp=start-delta*w
    for h=-w to w
      arr(i+w,j+h)=tmp
      arr(i-w,j+h)=tmp
      arr(i+h,j+w)=tmp
      arr(i+h, j-w)=tmp
    next
  next
end sub


for h= 0 to w достаточно ? :wink:
Origin - это что?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.08.2003 (Ср) 10:47

Нет, недостаточно. Внимательно посмотри код, поймёшь.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

_NeoN_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 178
Зарегистрирован: 14.08.2003 (Чт) 9:48
Откуда: Новосибирск

Сообщение _NeoN_ » 27.08.2003 (Ср) 12:29

спасибо.. ща попробую)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 4

    TopList