Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2014, 06:02   #1
darkland
Новичок
Джуниор
 
Регистрация: 04.03.2014
Сообщений: 1
По умолчанию Заполнить массив случайными числами и выделить в другой массив все числа, которые встречаются более

Заполнить массив случайными числами и выделить в другой массив все числа, которые встречаются более одного раза.
darkland вне форума Ответить с цитированием
Старый 04.03.2014, 06:50   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Ну и в чем проблема?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 04.03.2014, 20:44   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Для начала стоит разобраться, какие числа заносить в массив..
Например : исходный 5 5 7 8 6 8 5 8 4
Какой мы должны получить..

Далее..
Стоит обсудить способ получения массива..
1) Пробежка по массиву (ужасно, но железно)
2) Множества.. (прекрасно для маленького диапазона, для большого нужно думать)
3) Сортировка за logN*N.. а потом одним циклом..

Для более предметного разговора приведу код :
Код:
type
    TArr = array [1..100] of Integer;

procedure InitArr(var n : Integer; var a : TArr);
var
    i : Integer;
begin
    ReadLn(n);
    for i := 1 to n do
        a[i] := Random(10);
end;

procedure PrintArr(const n : Integer; const a : TArr);
var
    i : Integer;
begin
    for i := 1 to n do
        Write(a[i], ' ');
    WriteLn
end;

procedure GetArr(const n : Integer; const a : TArr; var b : TArr);
begin
end;

var
    a, b : TArr;
    n : Integer;
begin
    InitArr(n, a);
    PrintArr(n, a);
    GetArr(n, a, b);
    PrintArr(n, b)
end.
Заготовка..

Теперь.. #1
Код:
procedure GetArr(const n : Integer; const a : TArr; var b : TArr);
var
    i, j, cnt : Integer;
    f : Boolean;
begin
    cnt := 0;
    for i := 1 to n do begin
        f := FALSE;
        for j := 1 to n do
            if (a[i] = a[j]) and (i <> j) then begin f := TRUE; Break end;
        if f then begin Inc(cnt); b[cnt] := a[i] end
    end
end;
#2(Множества)

Код:
type
    TArr = array [1..100] of Integer;

var
	s : array of Byte;
	max : Integer;
	
procedure InitArr(var n : Integer; var a : TArr);
var
    i : Integer;
begin
    ReadLn(n);
    for i := 1 to n do
        a[i] := Random(max);
end;

procedure PrintArr(const n : Integer; const a : TArr);
var
    i : Integer;
begin
    for i := 1 to n do
        Write(a[i], ' ');
    WriteLn
end;

procedure GetArr(const n : Integer; const a : TArr; var b : TArr);
function Exist(k : Integer) : Boolean;
var
    t : Integer;
begin
    t := k div 9;
    k := k mod 9;
    Exist := s[t] and (1 shl (8-k)) > 0
end;

procedure Add(k : Integer);
var
    t : Integer;
begin
    t := k div 9;
    k := k mod 9;
    s[t] := s[t] or (1 shl (8-k))
end;

var
    i, cnt : Integer;
begin
	cnt := 0; 
    SetLength(s, max div 8+1);
    for i := 1 to n do begin
        if Exist(a[i]) then begin Inc(cnt); b[cnt] := a[i] end
        else Add(a[i]);
        
        WriteLn(s[0], ' ', s[1])
    end
end;

var
    a, b : TArr;
    n : Integer;
begin
	ReadLn(max);
    InitArr(n, a);
    PrintArr(n, a);
    GetArr(n, a, b);
    PrintArr(n, b)
end.
#3 (потом как-нибудь..)

P.S. Да, я знаю, что вывод везде разный.. дык и в задаче он четко не определен..
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнить массив из 10 элементов случайными числами (CИ) GroMkiY Помощь студентам 17 13.12.2013 11:09
Заполнить одномерный массив случайными числами. С++ JustKaissy Помощь студентам 7 27.09.2011 11:49
Заполнить массив случайными числами. Fender92 Паскаль, Turbo Pascal, PascalABC.NET 4 19.03.2011 17:05
заполнить массив случайными вещественными числами (C#) _RaWeN_ Общие вопросы C/C++ 2 14.03.2011 19:02
Заполнить массив случайными числами forumu Общие вопросы Delphi 13 03.12.2007 22:11