08.02.2010, 06:55
общий
это ответ
Здравствуйте, angel.nero!
Решение в приложении.
Приложение:
uses crt;
const nmax=100;{максимальный размер массива}
type mas=array[1..nmax] of integer;{тип массива}
function Max(v:mas;x:byte):byte;{поиск номера максимального}
var i,imx:byte;
begin
imx:=1;
for i:=1 to x do
if v[i]>v[imx] then imx:=i;{нашли}
Max:=imx;{присвоили значение функции}
end;
function Zad(v:mas;x:byte;z:integer):byte;{поиск позиции заданного числа}
var i,iz:byte;
begin
iz:=0;
for i:=1 to x do
if v[i]=z then{нашли число}
begin
iz:=i;{его номер}
break;{дальше не ищем}
end;
Zad:=iz;{значение функции}
end;
procedure Obmen(var v:mas;x:byte;imx,iz:byte);{обмен максимального и заданного чисел}
var b:integer;
begin
b:=v[imx];{простой обмен с использованием переменой-буфера}
v[imx]:=v[iz];
v[iz]:=b;
end;
var a:mas;
n,i,k,imax,izad:byte;
begin
clrscr;
randomize;
repeat
write('Размер массива n=');
readln(n);
until n in [1..nmax];
writeln('Исходный массив:');
for i:=1 to n do
begin
a[i]:=random(20)+1;
write(a[i],' ');
end;
writeln;
writeln;
imax:=Max(a,n);
writeln('Номер максимального=',imax);
write('Введите число для поиска k=');
readln(k);
izad:=Zad(a,n,k);
if izad=0 then write('Числа ',k,' в массиве нет!'){если значение функции=0}
else writeln('Номер числа ',k,'=',izad);
if izad=imax then write('Число ',k,' совпадает с максимальным значением!');
if(izad>0)and(izad<>imax)then
begin
Obmen(a,n,imax,izad);
writeln('Обмен элементов:');
for i:=1 to n do
write(a[i],' ');
end;
readln
end.