Суть задачи состоит в том что надо найти минимальное и максимальное значение элементоа в массиве и поменять их местами. С первой половиной задачи я справился, а вот со второй вышла заминка. Подскажите, пожалуйста кто-н.
program n1; uses crt; var d: array[1..15] of integer; max,min,n,i: integer; begin clrscr; write ('N='); readln (n); for i:=1 to n do begin writeln ('D[',i,']='); readln (d[i]) end; max:=d[1]; for i:=2 to n do if d[i]>max then max:=d[i]; min:=d[1]; for i:=2 to n do if d[i]<min then min:=d[i]; writeln ('max=',max,' min=',min); readln; end.
Tan
7.10.2007 19:54
добавь переменную например maxnomer, и храни там номер максимального элемента, так же с минимальным. Ка поменять сам уж разберёшься.
max:=d[1]; maxnomer := 1; for i:=2 to n do if d[i]>max then begin max:=d[i]; maxnomer := i; end;
compiler
7.10.2007 19:55
оперидили
Zharatustra
7.10.2007 20:51
Ребята, извините, что опять обращаюсь, но не віходит с процедурой вывода массива, выводит то же что и было введено.
min:=d[1]; minnomer:=1; for i:=2 to n do if d[i]<min then begin min:=d[i]; minnomer:=i end; writeln ('MAX=',max,' MIN=', min); for i:=1 to n do write (' ',d[i]); readln; end.
Пожалуйста помогите устранить ошибку.
Tan
7.10.2007 21:10
program n1; uses crt; var d: array[1..15] of integer; max,min,n,i: integer; maxnomer, minnomer : integer; begin clrscr; write ('N='); readln (n); for i:=1 to n do begin writeln ('D[',i,']='); readln (d[i]) end; max:=d[1]; maxnomer := 1; for i:=2 to n do if d[i]>max then begin max:=d[i]; maxnomer := i; end; min:=d[1]; minnomer := 1; for i:=2 to n do if d[i]<min then begin min:=d[i]; minnomer := i; end; d[minnomer] := max; d[maxnomer] := min; for i := 1 to n do write (d[i]:2); writeln ('max=',max,' min=',min); readln; end.
Я просто дал начальную мысль, думал ты закончишь. Ну вот так выглядит, если брать твой пример за основу. Но это разумеется в случае если рассматривается смена 1 мин и макс элемента.
Zharatustra
7.10.2007 21:21
Огромное СПАСИБО, Tan!!! И еще, если можно один вопрос - что означает
(d[i]:2)
? точнее зачем нужно двоеточее после d[i], я пробовал программа и так работает.
Tan
7.10.2007 21:23
Чтобы при выводе расстояние между элементами массива было побольше.
Zharatustra
7.10.2007 21:26
А понятно, то есть это как и при форматном выводе, вместо этого можно сделать и так
write (' ',d[i]);
.
Tan
7.10.2007 21:39
Простым языком говоря - 2 это число ячеек, отведённых для вывода элемента массива; так как элементы состоят из 1 цифры, то ещё 1 ячейка остаётся под пробел. Это не то же самое,
write (' ', d[i]);
так как в этом случае у тебя вне зависимости от размера числа (количества цифр) будет пробел перед следующим. Твой вариант для этой задачи тоже годен, так как он существенно ничего не меняет.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.