Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2018, 21:43   #11
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,318
По умолчанию

Печаль.
Тут ведь всё просто. Надо только мозг включить.
Сортировку результирующего массива, как следует, хотя и неявно, из условия задачи, делать не следует.
Поясню ещё раз:
Берёшь первые элементы сливаемых массивов и сравниваешь их. Меньший из элементов вставляешь в третий массив. Поскольку первый элемент массива, пусть это будет mas1, вставлен на место (в третий массив), то индекс для mas1 и соответствующий индекс для третьего массива, увеличиваем.
Продолжая сравнение мы попеременно продвигаемся по элементам массивов.
В условиях сравнения контролируем, что бы соответствующий индекс не вышел за границу массива.
Как только будет переполнение, вываливаемся из цикла.
Поскольку мы исчерпали один из массивов, то проверяем состояние их индексов.
Элементы массива, который не был исчерпан, переписываем в третий массив.

PS: Отличия между VB и Паскалем, в той части, которая интересует тебя минимальны.
Не ставь точки с запятой, в присвоении не ставь двоеточие, в условных операторах нет нужды в begin ... end, там используется end if и т.п.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 23.12.2018, 19:39   #12
сергей_ком
Пользователь
 
Регистрация: 20.12.2018
Сообщений: 10
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Печаль.
Тут ведь всё просто. Надо только мозг включить.
Сортировку результирующего массива, как следует, хотя и неявно, из условия задачи, делать не следует.
Поясню ещё раз:
Берёшь первые элементы сливаемых массивов и сравниваешь их. Меньший из элементов вставляешь в третий массив. Поскольку первый элемент массива, пусть это будет mas1, вставлен на место (в третий массив), то индекс для mas1 и соответствующий индекс для третьего массива, увеличиваем.
Продолжая сравнение мы попеременно продвигаемся по элементам массивов.
В условиях сравнения контролируем, что бы соответствующий индекс не вышел за границу массива.
Как только будет переполнение, вываливаемся из цикла.
Поскольку мы исчерпали один из массивов, то проверяем состояние их индексов.
Элементы массива, который не был исчерпан, переписываем в третий массив.

PS: Отличия между VB и Паскалем, в той части, которая интересует тебя минимальны.
Не ставь точки с запятой, в присвоении не ставь двоеточие, в условных операторах нет нужды в begin ... end, там используется end if и т.п.
то что вышло ПК запускать в принципе не хочет. а с последней частью
Код:
dim i, j as  integer;
dim c, d, e: Tmas;
   randomize;
   clrscr;
   makeMas(c, a)
   makeMas(, mas2N);
   prnMas(mas1, mas1N);
   prnMas(mas2, mas2N);
   insMas(mas1, mas1N, mas2, mas2N, mas3);
   prnMas(mas3, mas1N + mas2N);
   readln();
вообще ничего не понятно
а вот это- полученный код
Код:
  Sub z4()
Dim a(), b(), c, d, e() As Integer
c = CInt(InputBox("введите количество элементов массива А"))
d = CInt(InputBox("введите количество элементов массива B"))
i = 1
ReDim a(1 To c)
For i = 1 To c
a(i) = CInt(InputBox("введите элементы массива А"))
Next i
ReDim b(1 To d)
For i = 1 To d
b(i) = CInt(InputBox("введите элементы массива В"))

km = c + d
i = 1
j = 1
k = 1
While k <= km

      If a(i) < b(j) Then
      
         e(k) = a(i)
         i = i + 1
         End If
         If i > c Then
      End
      Else
         e(k) = b(j)
         j = j + 1
         End If
         If j > d Then
      End
      k = k + 1
   End
   End If
   For im = k + 1 To km
 
      If i > c Then

         e(im) = d(j)
         j = j + 1
      End If
      If j > d Then

         e(im) = a(i)
         i = i + 1
Next im
Next k
Next i
Next j

For i = 1 To sizeArr - 1

If e(i) > e(i + 1) Then e(i) = e(i + 1): e(i + 1) = e(i)

Next i
s = ""
For k = 1 To c + d
s = s + CStr(e(k)) + " "
Next k
MsgBox s
сергей_ком вне форума Ответить с цитированием
Старый 23.12.2018, 20:13   #13
сергей_ком
Пользователь
 
Регистрация: 20.12.2018
Сообщений: 10
По умолчанию

Всё. Сортировку наконец разобрал. спасибо вам, ViktorR за помощь, без вас я бы вряд ли это смог разобрать.
сергей_ком вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу, используя циклы (без массивов) Mas0n_ Общие вопросы C/C++ 4 26.10.2016 22:29
Задачи на обработку одномерных массивов (помогите решить все на паскале ) Жаннулька Помощь студентам 9 21.01.2014 10:50
Сортировка одномерных массивов palemupro Помощь студентам 4 01.12.2011 00:03
Решить в Паскале с использованием одномерных массивов Юююлия Помощь студентам 2 19.10.2011 19:06