2014 dxdy logo

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

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




На страницу 1, 2  След.
 
 Паскаль: поменять местами наименьший элемент и последний
Сообщение22.04.2012, 11:19 
Помогите. Пожалуйста)
В массиве найти наименьший элемент и поменять его местами с последним элементом.
Где ошибка? меняет все элементы.
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 
Аватара пользователя
Выделено в отдельную тему.

 
 
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение22.04.2012, 11:33 
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 
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 
мне нужно минимальный элемент с последним поменять.

 
 
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение22.04.2012, 15:18 
Rodya в сообщении #562691 писал(а):
мне нужно минимальный элемент с последним поменять.

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

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

 
 
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение22.04.2012, 16:24 
нужно-то было сделать(((
{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 
Это уж совсем нелепо. Тут вам не Бейсик.

 
 
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение23.04.2012, 14:05 
Вы меняете текущие минимумы с 10-ым.
А в условии речь идет об общем минимуме.
Сначала найти его, а потом один раз поменять с 10-ым.
и
1. Вдруг первый элемент тот, что надо
min:=a[1];
z:=1;

 
 
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение23.04.2012, 15:52 
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 
бррррр.......
MinIndex:=1
for i:=2 to 10 if a[i]<a[MinIndex] then MinIndex:=i

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

 
 
 
 Re: Паскаль: поменять местами наименьший элемент и последний
Сообщение23.04.2012, 18:45 
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 
Аватара пользователя
 !  Rodya, устное замечание за неиспользование тегов code/syntax

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

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

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

 
 
 [ Сообщений: 24 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group