2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Паскаль: поменять местами наименьший элемент и последний
Сообщение22.04.2012, 11:19 


22/11/11
4
Помогите. Пожалуйста)
В массиве найти наименьший элемент и поменять его местами с последним элементом.
Где ошибка? меняет все элементы.
program RO;
var a:array [1..10] of integer;
i,p,z,min:integer;
begin
for i:=1 to 10 do
begin
a[i]:=random(100);
writeln(значение', i, 'элемент=',a[i])
end;
min:=a[1];
for i:=1 to 10 do
if a[i]<min then
begin
min:=a[i];
z:=i
end;
for i:=1 to 5 do
begin
p:=min;
a[i]:=a[10-i+1];
a[10-i+1]:=min
end;
for i:=1 to 10 do
writeln('a(',i,')=',a[i]);
writeln('min=', min)
end.

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение22.04.2012, 11:28 
Админ форума
Аватара пользователя


19/03/10
8952
Выделено в отдельную тему.

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение22.04.2012, 11:33 
Заслуженный участник


11/05/08
32166
Rodya в сообщении #562600 писал(а):
Где ошибка? меняет все элементы.

Ну Вы ж просили все поменять:

Rodya в сообщении #562600 писал(а):
for i:=1 to 5 do
begin
p:=min;
a[i]:=a[10-i+1];
a[10-i+1]:=min
end;

-- вот он и меняет.

Кроме того, окружайте листинги хотя бы тегом [ code ] -- это даст возможность делать отступы, без чего читать совершенно невозможно.

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение22.04.2012, 14:06 


17/04/11
70
1. Вдруг первый элемент тот, что надо
min:=a[1];
z:=1;
1. Это for i:=1 to 5 do лишнее.
Достаточно
R:=min;
a[z]:=a[n];
a[n]:=R;

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение22.04.2012, 14:31 


22/11/11
4
мне нужно минимальный элемент с последним поменять.

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение22.04.2012, 15:18 
Заслуженный участник


11/05/08
32166
Rodya в сообщении #562691 писал(а):
мне нужно минимальный элемент с последним поменять.

Вот конкретно его с конкретно ним и меняйте. К чему тот нелепый цикл?...

И не забывайте про теги и про отступы.

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение22.04.2012, 16:24 


22/11/11
4
нужно-то было сделать(((
{1} program RO;
{2} var a:array [1..10] of integer;
{3} i,p,z,min:integer;
{4} begin
{5} for i:=1 to 10 do
{6} begin
{7} a[i]:=random(100);
{8} writeln('значение', i, 'элемент.=',a[i])
{9} end;
{10} min:=a[1];
{11} for i:=1 to 10 do
{12} if a[i]<min then
{13} begin
{14} min:=a[i];
{15} p:=a[i];
{16} a[i]:=a[10];
{17} a[10]:=P;
{18} end;
{19} for i:=1 to 10 do
{20} writeln('a(',i,')=',a[i]);
{21} writeln('min=', min)
{22} end.

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение22.04.2012, 16:26 
Заслуженный участник


11/05/08
32166
Это уж совсем нелепо. Тут вам не Бейсик.

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение23.04.2012, 14:05 


17/04/11
70
Вы меняете текущие минимумы с 10-ым.
А в условии речь идет об общем минимуме.
Сначала найти его, а потом один раз поменять с 10-ым.
и
1. Вдруг первый элемент тот, что надо
min:=a[1];
z:=1;

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение23.04.2012, 15:52 


24/05/09

2054
Cперва найти минимум, а потом просто и без всякого цикла поменять его с последним элементом. Примерно так (псевдокод к сожалению на Си):

Код:
int X = 1;

for (int i = 1; i < max; i++)
{ if(massiv[i] < massiv[i-1]) X = i}

int Y = massiv[max-1];
massiv[max-1] = massiv[X];
massiv[X] = Y;

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение23.04.2012, 15:54 


26/08/11
2100
бррррр.......
MinIndex:=1
for i:=2 to 10 if a[i]<a[MinIndex] then MinIndex:=i

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение23.04.2012, 18:03 
Заслуженный участник


09/09/10
3729
Alexu007
Если вам нетрудно, назовите, пожалуйста, список проектов, в которых вы участвовали — чтобы я не дай бог ненароком не воспользовался программным средством, к которому вы приложили руку. Так минимум искать — это надо додуматься. Вы никогда не пробовали формулировать инварианты циклов? У вашего цикла это "X — индекс последнего в (просмотренном) массиве элемента, который меньше предшествующего за ним", а должен быть "Х — индекс элемента, меньшего любого элемента в (просмотренном) массиве".

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение23.04.2012, 18:45 


22/11/11
4
min:=a[1]
if a[i]<min then
begin
min:=a[i];
j:=i
end;
b:=a[i];
a[i]:=a[j];
a[j]:=b

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение23.04.2012, 18:48 
Админ форума
Аватара пользователя


19/03/10
8952
 !  Rodya, устное замечание за неиспользование тегов code/syntax

 Профиль  
                  
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение23.04.2012, 19:19 


24/05/09

2054
Joker_vD в сообщении #563063 писал(а):
Alexu007
Если вам нетрудно, назовите, пожалуйста, список проектов, в которых вы участвовали — чтобы я не дай бог ненароком не воспользовался программным средством, к которому вы приложили рук...

Ни ад-на-во. Можете спать спокойно. Я любитель (непрофессионал), и в проектах не участвую.

А, ну вообще да, неправильно написал. Но если бы я писал реальную прогу, я бы протестил и исправил ошибку. Приношу извинения...

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group