Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 03.12.2020
Сообщений: 12
1

Функция скопировать элементы одного массива в другой

16.01.2021, 12:23. Просмотров 1369. Ответов 3
Метки нет (Все метки)

Здравствуйте! Помогите решить задачу.
Есть типы
Pascal
1
2
TIndex = 0..29;
TNumbers = array [TIndex] of integer;
Нужно написать следующую функцию
Pascal
1
function arraycopy (First : TNumbers; FirstStart : TIndex; var Second : TNumbers; SecondStart : TIndex;N : integer): boolean;
Функция должна копировать элементы из массива First, начиная с FirstStart и вставлять их в массив Second, начиная с SecondStart. Всего должно быть скопировано N элементов.
Надо сначала проверить, не переходят ли числа, переданы на FirstStart, SecondStart и N, границы заданные TIndex. Если да, то функция должна выдать ошибку (writeln) и результат функции будет false. Если копирование было успешным, то результат функции будет true.

Спасибо заранее)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2021, 12:23
Ответы с готовыми решениями:

Скопировать элементы из одного массива в другой
Пусть описана константа и два типа-массива: const m = 3; type TMas1 = array of real;...

Скопировать элементы одного массива в другой
Добрый день, не могу понять как реализовать копирование правильно (строки 34 - 42). На основе...

Скопировать элементы одного массива в другой без повторений
Здравствуйте! Найдите плиз ошибку в моем Г-коде #include<iostream> #include<time.h>...

Как скопировать четные элементы из одного массива в другой?
нужны именно четные элементы (а не все). элементы первого массива сгенерированы рандомно.

3
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5666 / 3386 / 2424
Регистрация: 22.11.2013
Сообщений: 9,513
Записей в блоге: 1
16.01.2021, 13:12 2
Лучший ответ Сообщение было отмечено Katrinmueller как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
type
  TIndex = 0..29;
  TNumbers = array [TIndex] of Integer;
 
function ArrayCopy(
  const First: TNumbers; FirstStart: TIndex; 
  var Second: TNumbers; SecondStart: TIndex; N: Integer): Boolean;
begin
  ArrayCopy:=False;
  if (N>0) and
    (FirstStart       in [Low(TIndex)..High(TIndex)]) and
    (SecondStart      in [Low(TIndex)..High(TIndex)]) and
    (-1+N+FirstStart  in [Low(TIndex)..High(TIndex)]) and
    (-1+N+SecondStart in [Low(TIndex)..High(TIndex)])
  then begin
    for n:=0 to n-1 do Second[SecondStart+n]:=First[FirstStart+n];
    ArrayCopy:=True;
  end else
    WriteLn('*** error: ArrayCopy: wrong parameters');
end;
Добавлено через 9 минут
Если при N=0 ошибки не должно быть:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function ArrayCopy(
  const First: TNumbers; FirstStart: TIndex; 
  var Second: TNumbers; SecondStart: TIndex; N: Integer): Boolean;
begin
  ArrayCopy:=False;
  if (N>=0)
    (FirstStart    in [Low(TIndex)..High(TIndex)]) and
    (SecondStart   in [Low(TIndex)..High(TIndex)]) and
    (N+FirstStart  in [Low(TIndex)..High(TIndex)+1]) and
    (N+SecondStart in [Low(TIndex)..High(TIndex)+1])
  then begin
    for n:=0 to n-1 do Second[SecondStart+n]:=First[FirstStart+n];
    ArrayCopy:=True;
  end else
    WriteLn('*** error: ArrayCopy: wrong parameters');
end;
Добавлено через 1 минуту
Условия первого варианта можно переписать аналогично, без -1.
1
0 / 0 / 0
Регистрация: 03.12.2020
Сообщений: 12
16.01.2021, 14:00  [ТС] 3
Спасибо!
А можете ещё объяснить, что значит эта проверка
(N+FirstStart in [Low(TIndex)..High(TIndex)+1]) and
(N+SecondStart in [Low(TIndex)..High(TIndex)+1]).
Не очень понимаю.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5666 / 3386 / 2424
Регистрация: 22.11.2013
Сообщений: 9,513
Записей в блоге: 1
16.01.2021, 16:58 4
Из исходного массива копируются элементы с FirstStart по FirstStart+N-1, это значит, что FirstStart+N-1 должен быть допустимым индексом массива, соответственно, в первом приближении
FirstStart+N-1 in [Low(TIndex)..High(TIndex)]
или, что чуть лучше
N+FirstStart in [Low(TIndex)..High(TIndex)+1]

Аналогично и для второго случая.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2021, 16:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Функция вставляющая элементы одного массива в другой через один
Добрый вечер форум:) Подскажите пожалуйста сдавал зачет по по инфе,на теорию то ответил))Скажите...

Скопировать элементы из одного списка в другой
Имеется двусвязный список в классе, где: int count; - кол-во элементов в...

Скопировать все числа из одного массива в другой
Задание: Пользователь вводит массив из 5 чисел. Программа копирует все числа из массива во второй...

Из одного массива скопировать переменную в другой массив
Суть задачи, есть класс B, в котором две переменные a и b, вот так это выглядит, class B { int...

Как скопировать содержимое одного массива в другой?
Всё тот же магазин. Осталось только одно, копировать содержимое из одного массива, в другой. Я уже...

Скопировать данные из одного массива (1000 элементов) в другой
вот есть код. само задание: скопировать данные из одного массива(1000 элементов) в другой. прога...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.