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

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

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

 
 Ответить  Открыть новую тему 
> Задача с одномерным массивом
Zharatustra
сообщение 7.10.2007 15:44
Сообщение #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 - 7.10.2007 15:45
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Tan
сообщение 7.10.2007 15:54
Сообщение #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 - 7.10.2007 15:56


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


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

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

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


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



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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Zharatustra
сообщение 7.10.2007 16:51
Сообщение #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 
 К началу страницы 
+ Ответить 
Tan
сообщение 7.10.2007 17:10
Сообщение #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 - 7.10.2007 17:11


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


Новичок
*

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

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


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


Профи
****

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

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


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


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


Новичок
*

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

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


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


Профи
****

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

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


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

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


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

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

 



- Текстовая версия 10.07.2025 0:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"