08.01.2013, 14:05 | #1 (permalink) |
Member
Регистрация: 14.12.2012
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите исправить код
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. |
08.01.2013, 14:05 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Созданные участниками форума обсуждения которые имеют сходства с вашим Помогите исправить ошибку Помогите исправить программу С# Помогите исправить ошибку в программе Помогите исправить программу на Delphi |
08.01.2013, 15:00 | #2 (permalink) |
Member
Регистрация: 14.12.2012
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Ошибку я уже исправил, но есть другая просьба: можете помочь оформить эту задачку через "функцию": макс. и мин. искать в программе, а менять элементы местами с помощью вызова функции. Помогите, кто может, не умею использовать функции!!
Вот рабочий код: 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. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|