Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
CatSpring
0 / 0 / 0
Регистрация: 12.03.2015
Сообщений: 15
#1

Переместить элементы массива А влево на К позиций, а элементы массива В влево на L позиций

18.05.2015, 18:41. Просмотров 456. Ответов 2
Метки нет (Все метки)

Дано: массивы А(N), B(M) и натуральные числа K, L. Переместить элементы массива А влево на К позиций, а элементы массива В влево на L позиций. Перемещение элементов массива влево на заданное количество позиций оформить в виде подпрограммы.

Вот само решение:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
procedure vvod (var n :integer; var x: vector; Q: string);
var i: integer;
begin
writeln('введите параметры массива ',Q);
readln(n);
writeln('введите массив ',Q);
for i:=1 to n do
begin
     write(Q,'[',i,']= ');
     readln(x[i]);
end;
writeln;
end;
 
procedure vivod (var n :integer; var x: vector; Q: string);
var i: integer;
begin
writeln('массив ',Q);
write('¦');
for i:=1 to n do write(x[i]:4);
writeln('¦');
writeln;
end;
 
function Imax(n: integer; var x : vector): integer;
var i,m: integer;
begin
m:=1;
for i:=2 to n do
    if x[i]>x[m] then
       m:=i;
Imax:=m;
end;
{---------------------------------------------------------------------------}
BEGIN
vvod(N,a,'A');
vvod(M,b,'B');
vivod(N,a,'A');
vivod(M,b,'B');
z:=a[Imax(N,a)];
a[Imax(N,a)]:=b[Imax(M,b)];
b[Imax(M,b)]:=z;
writeln(''Максимальные элементы поменяли местами:');
vivod(N,a,'A');
vivod(M,b,'B');
END.
Его надо выполнить с PROCEDURE (Imax..).
Я пыталась сделать сама, но получилось не все.
Да и в том, что получилось, не факт, что все правильно.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
program lab5_53;
type vector = array [1..10] of integer;
var N,M,z: integer;
    a,b :vector;
procedure vvod (var n :integer; var x: vector; Q: string);
var i: integer;
begin
writeln('введите параметры массива ',Q);
readln(n);
writeln('введите массив ',Q);
for i:=1 to n do
begin
     write(Q,'[',i,']= ');
     readln(x[i]);
end;
writeln;
end;
 
procedure vivod (var n :integer; var x: vector; Q: string);
var i: integer;
begin
writeln('массив ',Q);
write('в”‚');
for i:=1 to n do write(x[i]:4);
writeln('в”‚');
writeln;
end;
 
procedure sr (var n: integer; var x: vector; var m: real);
var i: integer;
begin
m:=1;
for i:=2 to n do
if x[i]>x[m] then
m:=i;
sr:=m;
end;
 
BEGIN
vvod(N,a,'A');
vvod(M,b,'B');
vivod(N,a,'A');
vivod(M,b,'B');
END.
Очень надеюсь на вашу помощь.
Спасибо

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2015, 18:41
Ответы с готовыми решениями:

Элементы матрицы сдвинуть влево на m позиций
Дана целочисленная прямоугольная матрица. Необходимо элементы матрицы сдвинуть...

Циклический сдвиг элементов массива влево на P позиций
Помогите пожалуйста Осуществите сдвиги элементов в массиве так, чтобы...

Сдвинуть элементы массива на M позиций вправо
Дан одномерный массив, который содержит не более 50 целых чисел. Циклически...

Элементы массива X циклически сдвинуть на n позиций вправо.
Элементы массива X циклически сдвинуть на n позиций вправо. Добавлено через...

Циклически сдвинуть элементы массива на заданное количество позиций
Задан линейный массив. Осуществить в нем сдвиги по следующим правилам:...

2
CatSpring
0 / 0 / 0
Регистрация: 12.03.2015
Сообщений: 15
27.05.2015, 23:55  [ТС] #2
Актуально

Добавлено через 16 часов 32 минуты
Актуально
0
Puporev
Модератор
54217 / 41850 / 28922
Регистрация: 18.05.2008
Сообщений: 98,518
28.05.2015, 07:21 #3
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
program lab5_53;
type vector = array [1..10] of integer;
procedure vvod (var n :integer; var x: vector; Q: string);
var i: integer;
begin
writeln('введите размер массива ',Q);
readln(n);
writeln('введите массив ',Q);
for i:=1 to n do
 begin
  write(Q,'[',i,']= ');
  readln(x[i]);
 end;
end;
procedure vivod_1 (n :integer; x: vector; Q: string);
var i: integer;
begin
writeln('Mассив ',Q);
for i:=1 to n do
write(x[i]:4);
writeln;
end;
procedure vivod_2 (n,m :integer; x: vector; Q: string);
var i: integer;
begin
writeln('Сдвиг массива ',Q,' на ',m,' поз. влево');
for i:=1 to n do
write(x[i]:4);
writeln;
end;
 
procedure sr (n: integer; var x: vector; var m:integer);
var i,j,t: integer;
begin
write('Введите количество позиций для сдвига: ');
readln(m);
for i:=1 to m do
 begin
  t:=x[1];
  for j:=1 to n-1 do
  x[j]:=x[j+1];
  x[n]:=t;
 end;
end;
var N,M,K,L: integer;
    a,b :vector;
begin
vvod(N,a,'A');
vvod(M,b,'B');
vivod_1(N,a,'A');
sr(N,a,K);
vivod_2(N,K,a,'A');
vivod_1(M,b,'B');
sr(M,b,L);
vivod_2(M,L,b,'B');
end.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2015, 07:21

Сдвинуть все элементы массива вправо на заданное число позиций
С клавиатуры вводится произвольный одномерный массив типа Real (не более 10...

Сдвинуть все элементы массива вправо на заданное число позиций
2 С клавиатуры вводится произвольный одномерный массив типа Real (не более 10...

Удалить элемент из массива, сдвинуть все элементы влево, на освободившуюся позицию записать нуль
Удалить элемент из массива, сдвинуть все элементы влево, на освободившуюся...


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

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

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