Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ задачи на массив и матрицу

Автор: medievil90 21.01.2008 15:19

1.дан массив R(N) N<=50. Переставить максимальный и минимальный элементы массива.
2.Дана целочисленная прямоугольная матрица.Определить минимальное из чисел,встречающихся в заданной матрице более одного раза.(оформить в виде функции).

Автор: Ozzя 21.01.2008 17:57

medievil90
1. !-й элемент массива считаешь максимальным (минимальным) и в далее в цикле сравниваешь его с элементами массива. Ежелт больше (меньше), то соотвественно он и есть макс. (мин.).
Далее, меняешь их местами.

Автор: Yevgeny 21.01.2008 17:59

 
Program Massiv;
{Uses max_crt;}
Const k=10; {2<=k<=50 вводи что хочешь...}
Type
t=array[1..k] of integer;
Var
x:t; i,max,min,Imax,Imin,tmp:integer;
Begin
{clrscr;}
for i:=1 to k do read(x[i]);
readln;
max:=x[1];
min:=x[2];
For i:=1 to k do
Begin
if max < x[i] then begin
max:=x[i];
Imax:=i;
end;
if min > x[i] then begin
min:=x[i];
Imin:=i;
end;
end;
tmp:=x[Imin];
x[Imin]:=x[Imax];
x[Imax]:=tmp;
For i:=1 to k do write(x[i]:3);
End.



тока вот не знаю как быть когда в массиве один элемент unsure.gif
но, тебе наверняка это и не надо будет...

Автор: Client 21.01.2008 18:33

А ты уверен за свой код??


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Yevgeny 21.01.2008 18:50

Спасибо, Client, теперь уже нет...

Добавлено через 3 мин.


max:=x[1];
min:=x[k];



теперь вроде бы правильно работает!!!

Автор: Client 21.01.2008 19:02

Цитата
теперь вроде бы правильно работает!!!
Вот именно что
Цитата
вроде



Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Yevgeny 21.01.2008 19:40

 
Program Massiv;
{Uses max_crt;}
Const k=10; {k<=50 вводи что хочешь...}
Type
t=array[1..k] of integer;
Var
x:t; i,max,min,Imax,Imin,tmp:integer;
Begin
{clrscr;}
readln;
for i:=1 to k do read(x[i]);
readln;

Imax:=1;
max:=x[Imax];
Imin:=k;
min:=x[Imin];
if max < min then begin
Imax:=k;
max:=x[Imax];
Imin:=1;
min:=x[Imin];
end;
For i:=1 to k do
Begin
if max < x[i] then begin
max:=x[i];
Imax:=i;
end;
end;
For i:=1 to k do
Begin
if min > x[i] then begin
min:=x[i];
Imin:=i;
end;
end;
tmp:=x[Imin];
x[Imin]:=x[Imax];
x[Imax]:=tmp;
For i:=1 to k do write(x[i]:3);
End.



unsure.gif unsure.gif unsure.gif
ещё раз спасибо, Client...

Автор: volvo 21.01.2008 19:51

Yevgeny, а теперь расскажи, зачем тебе непонятные условия и море циклов вместо того, чтобы просто:

imax := 1; imin := 1;
for i := 2 to k do begin
if x[imax] < x[i] then imax := i;
if x[imin] > x[i] then imin := i;
end;
{ и менять x[imin] <-> x[imax] }
?
Или программа теперь тем лучше, чем больше непонятных действий делает?