Не нашёл, как можно попросить помощи с задачей, которая не входит в курс. Задача типа "потребитель-производитель", но решение нужно последовательное.
Есть 2 int'овских массива одинаковой длины, допустим 10.
И подобие промежуточного буфера, тоже массив, допустим размера 4.
Первый массив заполнен любыми числами. Нужно скопировать его во второй массив через промежуточный буфер:
Взять первые 4 элемента из массива, записать в буфер.
Эти 4 элемента из буфера занести во второй массив.
Взять вторую четвёрку, записать в буфер и т.д., пока не пробежим по всему первому массиву.
Не спрашивайте, зачем нужен промежуточный буфер, просто нужно реализовать это так :)
Если не трудно, подскажите, как лучше реализовать это.
Roezzik
16 уровень
Задача на вложенные циклы не из курса
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Roezzik
22 ноября 2019, 06:29
Спасибо большое, но проблема как раз в том, что размер массива будет достигать несколько миллионов, а размер буфера будет меняться, поэтому нужно как-то через вложенные циклы это реализовать, но как именно - я пока не надумал :)
0
VladimirMaster
22 ноября 2019, 10:25
Ну этого ты не написал.
0
Roezzik
22 ноября 2019, 15:29
Да, мой косяк, не упомянул этого, прошу прощения
0
Стас Пасинков Software Developer в Zipy Master
10 декабря 2019, 02:47
размер буфера будет меняться прямо во время работы?
или изначально может быть задан любым числом просто и до конца работы программы не меняется?
0
Стас Пасинков Software Developer в Zipy Master
10 декабря 2019, 02:56
я бы сделал метод, который принимает исходный массив, индекс элемента с которого надо начинать чтение массива (изначально 0, и с каждой итерацией делать += длина временного массива), и временный массив
внутри метода просто один фор, который начинает работу не с нуля, а с индекса, который передали в метод вторым параметром, а в блоке условия выхода из цикла поставить что-то типа i < начальный индекс + длина временного массива
внутри фора копировать с i из первого массива во временный массив на позицию i - второй параметр.
как реализуете - добавьте обработку граничных случаев, например, когда осталось прочитать меньше, чем длина временного массива
с записью все с точностью до наоборот
0
VladimirMaster
22 ноября 2019, 03:05
1 2 3 4 5 6 7 8 9 10 // Копируем из этого массива
1 2 3 4 // Наполняем буфер
1 2 3 4 0 0 0 0 0 0 // Копируем из буфера во второй массив
5 6 7 8 // Копируем из первого массива вторую партию и наполняем буфер
1 2 3 4 5 6 7 8 0 0 // Копируем из буфера и вставляем во второй массив
9 10 0 0 // Копируем из первого массива остатки роскоши в буфер
1 2 3 4 5 6 7 8 9 10 // Копируем из буфера во второй массив остатки роскоши былой
Конец задачи! :)
Вот, что выводим в консоль.
0