дан массив целых чисел размера n=10. получить упорядоченный по возрастанию массив, содержащий все различные числа данного массива
Reflex
23.10.2006 23: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:= 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.
Reflex
24.10.2006 0:26
удовлетворило решение? или есть еще вопросы
18192123
24.10.2006 0:50
Цитата(Reflex @ 23.10.2006 21:26)
удовлетворило решение? или есть еще вопросы
ты молодец! спасибо большое! а ты не могла бы на основе моей программы исключить совпадающие элементы из отсортированного массива?! пожалуйста!!!!!!! Нажмите для просмотра прикрепленного файла
Reflex
24.10.2006 0:54
ну... добавь вставь код процедуру COPY
18192123
24.10.2006 18:59
Цитата(Reflex @ 23.10.2006 21:54)
ну... добавь вставь код процедуру COPY
а ты не знаешь более просто метода?
volvo
24.10.2006 19:57
Куда же проще? Тебе что, надо в том же массиве убрать дубликаты? Без второго массива? Тогда так (после сортировки):
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;
(распечатывать первые K элементов...)
18192123
24.10.2006 21:33
Цитата(volvo @ 24.10.2006 16:57)
Тебе что, надо в том же массиве убрать дубликаты? Без второго массива? Тогда так (после сортировки):
большое спасибо!
18192123
24.10.2006 22:28
еще один маленький вопрос: как задать условие для вывода первых К элементов?
volvo
24.10.2006 22:32
Ну, наверное, так:
for i := 1 to k do write(a[i]:4);
?
18192123
31.10.2006 0: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 then begin inc(k); a[k] := a[ i ]; inc(i); end; { ***** ***** }
until i > n;
объясните пожалуйста смысл выделенной части как можно подробнее, я не очень поняла
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.