Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Darya888888
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 1
#1

Перестановка элементов вектора

10.01.2012, 19:11. Просмотров 545. Ответов 2
Метки нет (Все метки)

Помогите найти ошибку

элементы не меняются местами в конце

В целочисленном векторе vectorn найти минимальный и максимальный элементы. Перевернуть элементы вектора, расположенные между ними (выполнить “поплавок”).

Входные данные:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
n=10
v_min=-5
v_max=10
Исходный вектор:
7  -5  1  3  -2  5  2  0  10  1 
 
Выходные данные:
min=-5  n_min=2
max=10  n_max=9
Выходной вектор:
7  -5  0  2  5  -2  3  1  10  1
 
 
Program Variant_02;
Uses WinCrt;
Const n = 10;
 
Var i, v_min, v_max, i_max, max, i_min, min , n_min , n_max , a : Integer;
    vector : Array [1..n] Of Integer;
 
Begin
 
  Randomize;
 
  WriteLn('Лабораторная работа №6_1');
  WriteLn('Вариант №2');
  WriteLn('ИС-11-1');
  WriteLn('Гарифова Дарья');
  WriteLn;
 
  WriteLn('Задайте диапазон случайных чисел');
  Write('v_min=');
  ReadLn(v_min);
  Write('v_max=');
  ReadLn(v_max);
 
  For i:=1 To n Do
    vector[i]:=Random(v_max-v_min + 1) + v_min;
 
 
  WriteLn;
  WriteLn('Исходный вектор:');
  For i:=1 To n Do
    Write(vector[i]:5);
  WriteLn;
 
  max:= vector[1];
  i_max:= 1;
  min:= vector[1];
  i_min:= 1;
 
  For i:=2 To n Do
    Begin
 
If (vector[i] > max) Then
        Begin
          max := vector[i];
          i_max := i;
        End;
 
If (vector[i] < min) Then
        Begin
          min := vector[i];
          i_min := i;
        End;
 
    End;
 
  WriteLn;
  WriteLn('n_max=', n_max, '   i_max=', i_max);
  WriteLn('n_min=', n_min, '   i_min=', i_min);
 
  If (n_min =n_max) or (n_min+1=n_max) or (n_min=n_max+1) then
   else
 
  if n_min>n_max then
   For i:=n_max+1 to ((n_min - n_max) div 2 ) Do
   begin
   a:= vector [i];
   vector[i]:=vector[n_min-(i-n_max)] ;
   vector[n_min-(i-n_max)]:=a;
   end;
 
   begin
   for i:=n_min+1 to ((n_max-n_min) div 2) do;
   begin
   a:=vector[i];
   vector[i]:= vector[n_max-(i-n_min)];
   vector[n_max-(i-n_max)]:=a;
   end;
   end;
 
 
  WriteLn;
  WriteLn('Полученный вектор:');
  For i:=1 To n Do
    Write(vector[i]:5);
  WriteLn;
 
End.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2012, 19:11
Ответы с готовыми решениями:

Перестановка элементов масива
Действительные векторы X (x1, x2, .., x50) и Y (y1, y2, .., y50) преобразовать...

Перестановка элементов массива
Дана матрица А(N,N) вещественных значений. Найти максимальный элемент среди...

Перестановка элементов матрицы
Задана матрица Б размера 7X7. Составить программу, осуществляющую перестановку...

Перестановка элементов в массиве
Задача: Переставить в массиве первый элемент и максимальный. Просьба написать...

Перестановка элементов массива
Нужно сделать меню: Требования к оформлению программы ВВОД ИСХОДНЫХ ДАННЫХ...

2
Puporev
Модератор
54221 / 41854 / 28923
Регистрация: 18.05.2008
Сообщений: 98,535
10.01.2012, 19:27 #2
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Program Variant_02;
Uses Crt;
Const n = 10;
 
Var i, V_min, v_max, i_max, max, i_min, min , i1, i2 , a : Integer;
    vector : Array [1..n] Of Integer;
 
Begin
 
  Randomize;
 
  WriteLn('Лабораторная работа №6_1');
  WriteLn('Вариант №2');
  WriteLn('ИС-11-1');
  WriteLn('Гарифова Дарья');
  WriteLn;
 
  WriteLn('Задайте диапазон случайных чисел');
  Write('v_min=');
  ReadLn(v_min);
  Write('v_max=');
  ReadLn(v_max);
 
  For i:=1 To n Do
  vector[i]:=Random(v_max-v_min + 1) + v_min;
  WriteLn('Исходный вектор:');
  For i:=1 To n Do
  Write(vector[i]:5);
  WriteLn;
 
  max:= vector[1];
  i_max:= 1;
  min:= vector[1];
  i_min:= 1;
 
  For i:=2 To n Do
    Begin
     If (vector[i] > max) Then
        Begin
          max := vector[i];
          i_max := i;
        End;
    If (vector[i] < min) Then
        Begin
          min := vector[i];
          i_min := i;
        End;
 
    End;
 
  WriteLn('max=', max, '   i_max=', i_max);
  WriteLn('min=', min, '   i_min=', i_min);
  If abs(i_min-i_max)<2 then write('Нет элементов для перестановки')
  else
   begin
    If i_min<i_max then
     begin
      i1:=i_min;
      i2:=i_max;
     end
    else
     begin
      i2:=i_min;
      i1:=i_max;
     end;
    For i:=1 to ((i2 - i1) div 2 ) Do
     begin
      a:= vector [i1+i];
      vector[i1+i]:=vector[i2-i] ;
      vector[i2-i]:=a;
     end;
  WriteLn;
  WriteLn('Полученный вектор:');
  For i:=1 To n Do
    Write(vector[i]:5);
  WriteLn;
 end;
End.
0
versa4e
trainspotting
1083 / 483 / 384
Регистрация: 11.11.2010
Сообщений: 773
10.01.2012, 19:28 #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
const
  nmax=100;
type
  Tarr=array[1..nmax] of integer;
var
  a:Tarr;
  i,n,imin,imax,k,tmp:integer;
begin
  randomize;
  repeat
    write('Razmer massiva, ne bolee ',nmax,': ');
    readln(n);
  until n in [1..nmax];
  writeln('Ishodniy massiv:');
  for i:=1 to n do
    begin
      a[i]:=random(50);
      write(a[i]:4);
    end;
  writeln;
  imin:=1;imax:=1;
  for i:=2 to n do
    begin
      if a[i]>a[imax] then
        imax:=i;
      if a[i]<a[imin] then
        imin:=i;
    end;
  writeln('Max=',a[imax],'Min=',a[imin]);
  k:=abs(imax-imin)-1;//kol-vo el. dlya perestanovki
  if imax>imin then
    begin
      for i:=1 to k div 2 do
        begin
          tmp:=a[imin+i];
          a[imin+i]:=a[imax-i];
          a[imax-i]:=tmp;
        end;
    end
  else
    begin
      for i:=1 to k div 2 do
        begin
          tmp:=a[imax+i];
          a[imax+i]:=a[imin-i];
          a[imin-i]:=tmp;
        end;
    end;
  writeln('Poluchenniy massiv:');
  for i:=1 to n do
    write(a[i]:4);
  writeln;
  readln;
end.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2012, 19:28

Перестановка элементов в мвссиве
Помогите с таким вопросом:&quot;Я уже долго разбираюсь с перестановкой элементов в...

Перестановка элементов массива
Сдвинуть элементы массива на 1, например было: 7314582 и должно стать: 2731458....

Перестановка элементов массива
Помогите решить задачу.. Заданы действительные числа k1,k2...k20. Получить...


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

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

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