IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача с одномерным массивом
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Николай

Репутация: -  0  +


Суть задачи состоит в том что надо найти минимальное и максимальное значение элементоа в массиве и поменять их местами. С первой половиной задачи я справился, а вот со второй вышла заминка. Подскажите, пожалуйста кто-н.

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.



Сообщение отредактировано: Zharatustra -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


добавь переменную например maxnomer, и храни там номер максимального элемента, так же с минимальным. Ка поменять сам уж разберёшься.
max:=d[1];           
maxnomer := 1;
for i:=2 to n do
if d[i]>max then
begin
max:=d[i];
maxnomer := i;
end;


Сообщение отредактировано: Tan -


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


оперидили smile.gif



Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Николай

Репутация: -  0  +


Ребята, извините, что опять обращаюсь, но не віходит с процедурой вывода массива, выводит то же что и было введено.
 
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.


Пожалуйста помогите устранить ошибку.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  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 мин и макс элемента.

Сообщение отредактировано: Tan -


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Николай

Репутация: -  0  +


Огромное СПАСИБО, Tan!!! И еще, если можно один вопрос - что означает
 (d[i]:2) 
? точнее зачем нужно двоеточее после d[i], я пробовал программа и так работает.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


Чтобы при выводе расстояние между элементами массива было побольше.


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской
Реальное имя: Николай

Репутация: -  0  +


А понятно, то есть это как и при форматном выводе, вместо этого можно сделать и так
write (' ',d[i]); 
.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


Простым языком говоря - 2 это число ячеек, отведённых для вывода элемента массива; так как элементы состоят из 1 цифры, то ещё 1 ячейка остаётся под пробел. Это не то же самое,
write (' ', d[i]);
так как в этом случае у тебя вне зависимости от размера числа (количества цифр) будет пробел перед следующим. Твой вариант для этой задачи тоже годен, так как он существенно ничего не меняет.

Сообщение отредактировано: Tan -


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 5:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name