дан массив целых чисел размера n=10. получить упорядоченный по возрастанию массив, содержащий все различные числа данного массива
Reflex
23.10.2006 19:35
например:
Код
type arr : array [ 1..10] of integer; var inarr, outarr : 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; copy:=tmp; end;
а дальше стадартный buble
Вот правильный код, для твоей программы
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:= 2to n dobegin
flag:=false;
for j:=1to tmp doif inarr[i]=outarr[j] then flag:=true;
ifnot(flag) thenbegin
inc(tmp);
outarr[tmp]:=inarr[i];
end;
END;
copy:=tmp;
end;
procedure buble(n: integer);
var i, j, temp: Integer;
beginfor i := 1to n dofor j := n downto i+1doif outarr[j-1] > outarr[j] thenbegin
temp:=outarr[j-1];
outarr[j-1]:=outarr[j];
outarr[j]:=temp;
end;
end;
beginread(n);
for i:= 1to n doread(inarr[i]);
n:=copy;
for i:=1to n dowrite(outarr[i]);
buble(n);
for i:=1to n dowrite(outarr[i]);
READLN;
READLN;
END.
Reflex
23.10.2006 20:26
удовлетворило решение? или есть еще вопросы
18192123
23.10.2006 20:50
Цитата(Reflex @ 23.10.2006 21:26)
удовлетворило решение? или есть еще вопросы
ты молодец! спасибо большое! а ты не могла бы на основе моей программы исключить совпадающие элементы из отсортированного массива?! пожалуйста!!!!!!! Нажмите для просмотра прикрепленного файла
Reflex
23.10.2006 20:54
ну... добавь вставь код процедуру COPY
18192123
24.10.2006 14:59
Цитата(Reflex @ 23.10.2006 21:54)
ну... добавь вставь код процедуру COPY
а ты не знаешь более просто метода?
volvo
24.10.2006 15:57
Куда же проще? Тебе что, надо в том же массиве убрать дубликаты? Без второго массива? Тогда так (после сортировки):
k := 0;
i := 1;
repeatwhile (i <= n) and (a[i - 1] = a[i]) do inc(i);
if i <= n thenbegin
inc(k);
a[k] := a[i]; inc(i);
end;
until i > n;
(распечатывать первые K элементов...)
18192123
24.10.2006 17:33
Цитата(volvo @ 24.10.2006 16:57)
Тебе что, надо в том же массиве убрать дубликаты? Без второго массива? Тогда так (после сортировки):
большое спасибо!
18192123
24.10.2006 18:28
еще один маленький вопрос: как задать условие для вывода первых К элементов?
volvo
24.10.2006 18:32
Ну, наверное, так:
for i := 1to k dowrite(a[i]:4);
?
18192123
30.10.2006 20:35
Цитата(volvo @ 24.10.2006 15:57)
k := 0;
i := 1;
repeat{ ***** ***** }while (i <= n) and (a[i - 1] = a[i]) do inc(i);
if i <= n thenbegin
inc(k);
a[k] := a[ i ]; inc(i);
end;
{ ***** ***** }until i > n;
объясните пожалуйста смысл выделенной части как можно подробнее, я не очень поняла
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.