дан массив целых чисел размера n=10. получить упорядоченный по возрастанию массив, содержащий все различные числа данного массива
например:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
nn=100;
type arr = array [ 1..nn] of integer;
var inarr, outarr : arr;
var n,i : integer;
function copy:integer;
var i,j,tmp: integer;
flag : boolean;
begin
tmp:=1;
outarr[1]:=inarr[1];
for i:= 2 to n do begin
flag:=false;
for j:=1 to tmp do
if inarr[i]=outarr[j] then flag:=true;
if not(flag) then begin
inc(tmp);
outarr[tmp]:=inarr[i];
end;
END;
copy:=tmp;
end;
procedure buble(n: integer);
var i, j, temp: Integer;
begin
for i := 1 to n do
for j := n downto i+1 do
if outarr[j-1] > outarr[j] then begin
temp:=outarr[j-1];
outarr[j-1]:=outarr[j];
outarr[j]:=temp;
end;
end;
begin
read(n);
for i:= 1 to n do
read(inarr[i]);
n:=copy;
for i:=1 to n do
write(outarr[i]);
buble(n);
for i:=1 to n do
write(outarr[i]);
READLN;
READLN;
END.
удовлетворило решение? или есть еще вопросы
ну... добавь вставь код процедуру COPY
Куда же проще? Тебе что, надо в том же массиве убрать дубликаты? Без второго массива? Тогда так (после сортировки):
k := 0;
i := 1;
repeat
while (i <= n) and (a[i - 1] = a[i]) do inc(i);
if i <= n then begin
inc(k);
a[k] := a[i]; inc(i);
end;
until i > n;
еще один маленький вопрос: как задать условие для вывода первых К элементов?
Ну, наверное, так:
for i := 1 to k do write(a[i]:4);?
k := 0;
i := 1;
repeat
{ ***** ***** }
while (i <= n) and (a[i - 1] = a[i]) do inc(i);
if i <= n then begin
inc(k);
a[k] := a[ i ]; inc(i);
end;
{ ***** ***** }
until i > n;