Помогите исправить код
Задание: 1) в векторе найти макс. и мин. элементы.
2) элементы между макс. и мин. элементами поменять местами (первый с последним, 2ой с предпоследним и т.д.) - так называемый "поплавок". Например: входной вектор: 123456789 мин.=1 макс.=9 выходной вектор: 187654329 помогите со вторым заданием, пожалуйста - не всегда правильно выводит очень нужна помощь - задание нужно сделать до завтра Вот код: uses crt; Const nmax = 100; Var temp, k, r, v_min, v_max, max, min, i_max,i_min, i, j, n: Integer; mas : Array [1..nmax] Of Integer; Begin write('Vhodnye dannye dly n='); readln(n); Write('v_min= '); ReadLn(v_min); Write('v_max= '); ReadLn(v_max); WriteLn; WriteLn('Ishodny vector:'); randomize; for i:=1 to n do begin mas[i]:=random(v_max-v_min+1)+v_min; write(mas[i]:4); end; WriteLn; max:=mas[1]; i_max:=1; For i:=1 To n Do If (mas[i]>max) Then Begin max:=mas[i]; i_max:=i; End; min:=mas[1]; i_min:=1; for i:=1 to n do If (mas[i]<min) Then Begin min:=mas[i]; i_min:=i; End; writeln; WriteLn('Max chislo=',max, ' index:',i_max); WriteLn('Min chislo=',min, ' index:',i_min); WriteLn; r:=i_min-i_max; k:=abs(r); write('длина между max и min=',k); writeln; if i_max>i_min then begin for i:=i_min+1 to (i_min+(k div 2)) do begin temp:=mas[i]; mas[i]:=mas[i_max-i+1];{ошибка скорее всего здесь} mas[i_max-i+1]:=temp; end; end; if i_max<i_min then begin for i:=i_max+1 to (i_max+(k div 2)) do begin temp:=mas[i]; mas[i]:=mas[i_min-i+1];{ошибка скорее всего здесь} mas[i_min-i+1]:=temp; end; end; For i:=1 to n do write(mas[i]:4); writeln; readln; end. |
Ошибку я уже исправил, но есть другая просьба: можете помочь оформить эту задачку через "функцию": макс. и мин. искать в программе, а менять элементы местами с помощью вызова функции. Помогите, кто может, не умею использовать функции!!
Вот рабочий код: uses crt; Const nmax = 100; Var temp, k, r,p, v_min, v_max, max, min, i_max,i_min, i, j, n: Integer; mas : Array [1..nmax] Of Integer; Begin write('Vhodnye dannye dly n='); readln(n); Write('v_min= '); ReadLn(v_min); Write('v_max= '); ReadLn(v_max); WriteLn; WriteLn('Ishodny vector:'); randomize; for i:=1 to n do begin mas[i]:=random(v_max-v_min+1)+v_min; write(mas[i]:4); end; WriteLn; max:=mas[1]; i_max:=1; For i:=1 To n Do If (mas[i]>max) Then Begin max:=mas[i]; i_max:=i; End; min:=mas[1]; i_min:=1; for i:=1 to n do If (mas[i]<min) Then Begin min:=mas[i]; i_min:=i; End; writeln; WriteLn('Max chislo=',max, ' index:',i_max); WriteLn('Min chislo=',min, ' index:',i_min); WriteLn; r:=i_min-i_max; k:=abs(r); p:=0; write('длина между max и min=',k); writeln; if i_max>i_min then begin for i:=i_min+1 to (i_min+(k div 2)) do begin p:=p+1; temp:=mas[i]; mas[i]:=mas[i_max-p]; mas[i_max-p]:=temp; end; end; if i_max<i_min then begin for i:=i_max+1 to (i_max+(k div 2)) do begin p:=p+1; temp:=mas[i]; mas[i]:=mas[i_min-p]; mas[i_min-p]:=temp; end; end; For i:=1 to n do write(mas[i]:4); writeln; readln; end. |
Часовой пояс GMT +4, время: 02:59. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.