Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача с одномерным массивом
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Zharatustra
Суть задачи состоит в том что надо найти минимальное и максимальное значение элементоа в массиве и поменять их местами. С первой половиной задачи я справился, а вот со второй вышла заминка. Подскажите, пожалуйста кто-н.

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
добавь переменную например 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
оперидили smile.gif

Zharatustra
Ребята, извините, что опять обращаюсь, но не віходит с процедурой вывода массива, выводит то же что и было введено.
 
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
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
Огромное СПАСИБО, Tan!!! И еще, если можно один вопрос - что означает
 (d[i]:2) 
? точнее зачем нужно двоеточее после d[i], я пробовал программа и так работает.
Tan
Чтобы при выводе расстояние между элементами массива было побольше.
Zharatustra
А понятно, то есть это как и при форматном выводе, вместо этого можно сделать и так
write (' ',d[i]); 
.
Tan
Простым языком говоря - 2 это число ячеек, отведённых для вывода элемента массива; так как элементы состоят из 1 цифры, то ещё 1 ячейка остаётся под пробел. Это не то же самое,
write (' ', d[i]);
так как в этом случае у тебя вне зависимости от размера числа (количества цифр) будет пробел перед следующим. Твой вариант для этой задачи тоже годен, так как он существенно ничего не меняет.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.