Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal (Паскаль)

Войти
Регистрация
Восстановить пароль
 
plzhelpme
0 / 0 / 0
Регистрация: 16.01.2018
Сообщений: 23
#1

Удалить из массива все элементы, встречаются менее трех раз - Pascal

18.01.2018, 10:25. Просмотров 60. Ответов 2
Метки нет (Все метки)

Дано целочисленный массив размера N. Удалить из массива все элементы, встречаются менее трех раз, и вывести размер полученного массива и его содержимое.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2018, 10:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из массива все элементы, встречаются менее трех раз (Pascal):

Удалить из массива все элементы, встречающиеся менее двух раз. - Pascal
1. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся менее двух раз. 2. Дана матрица размера M x N....

Отсортировать массив и вывести элементы массива, которые встречаются ровно K раз - Pascal
Напишите программу, которая сортирует массив и выводит все элементы массива, которые встречаются ровно K раз. Входные данные Первая...

Дано число R и массив размера N. Найти два соседних элемента массива, сумма которых наиболее близка к числу R,и вывести эти элементы - Pascal
Дано число R и массив размера N. Найти два соседних элемента мас- сива, сумма которых наиболее близка к числу R, и вывести эти элементы в...

Дано целочисленный массив размера N. Найти количество различных элементов в этом массиве - Pascal
Дано целочисленный массив размера N. Найти количество различных элементов в этом массиве.

Ввести одномерный целочисленный массив А, вывести его. В массиве отсортировать по убыванию все элементы стоящие после минимального. - Pascal
Условие задачи: Ввести одномерный целочисленный массив А, вывести его. В массиве отсортировать по убыванию все элементы стоящие после...

Сформировать и вывести целочисленный массив размера N - Pascal
1. Даны целые числа N>2, A, B. Сформировать и вывести целочисленный массив размера N, первый элемент которого =А, второй=В, а каждый...

2
ZX Spectrum-128
Модератор
Эксперт Pascal/Delphi
3642 / 2629 / 1796
Регистрация: 05.06.2014
Сообщений: 12,547
18.01.2018, 14:46 #2
Одномерный и двумерный массив
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3643 / 2340 / 1235
Регистрация: 22.11.2013
Сообщений: 6,320
18.01.2018, 23:19 #3
Если диапазон значений массива невелик и известен, то можно сделать так.
Оставим в массиве только те элементы, что встречаются 3 и более раз.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const nn=40; amn=1; amx=15; k=3;
var
  a: array [1..nn] of Integer;
  c: array [amn..amx] of Integer;
  i, j, n: Integer;
begin
  Randomize; n:=nn; {j:=0;}
  for i:=1 to n do a[i]:=amn+Random(amx-amn+1);
  Write('A ='); for i:=1 to n do Write(' ',a[i]); WriteLn;
  for i:=1 to n do Inc(c[a[i]]);
  for i:=1 to n do if c[a[i]]>=k then begin
    Inc(j); a[j]:=a[i];
  end; n:=j;
  Write('A''='); for i:=1 to n do Write(' ',a[i]); WriteLn;
  Write('Нажмите Enter...'); ReadLn;
end.
Добавлено через 15 минут
Если диапазон значений велик или неизвестен, то неоптимальное решение в лоб может быть таким:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const nn=40; amn=1; amx=15; kk=3;
var
  a: array [1..nn] of Integer;
  i, j, k, n, p: Integer;
begin
  Randomize; n:=nn; {j:=0;}
  for i:=1 to n do a[i]:=amn+Random(amx-amn+1);
  Write('A ='); for i:=1 to n do Write(' ',a[i]); WriteLn;
  for i:=1 to n do begin
    k:=1;
    p:=1; while (p<i) and (k<kk) do begin Inc(k,Ord(a[i]=a[p])); Inc(p); end;
    p:=n; while (p>i) and (k<kk) do begin Inc(k,Ord(a[i]=a[p])); Dec(p); end;
    if k>=kk then begin
      Inc(j); a[j]:=a[i];
    end;
  end; n:=j;
  Write('A''='); for i:=1 to n do Write(' ',a[i]); WriteLn;
  Write('Нажмите Enter...'); ReadLn;
end.
Но это довольно плохое решение (просмотров элементов N2).


В условии ничего не сказано про необходимость сохранять порядок следования элементов массива, поэтому допустимым решением должна быть сортировка массива и в один проход сохранение тех значений, которых больше 3 от текущего.

Добавлено через 29 минут
Пример с сортированным массивом может быть таким:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const nn=10; kk=3;
  a: array [1..nn] of Integer = (1,1,1,1,2,3,3,3,4,4);
var
  i, j, k, n: Integer;
begin
  Randomize; n:=nn; {j:=0;}
  Write('A ='); for i:=1 to n do Write(' ',a[i]); WriteLn;
  i:=1; j:=1;
  while i<=n do begin
    k:=i+1; while (k<=n) and (a[k]=a[i]) do Inc(k);
    if k-i<kk then i:=k
    else while i<k do begin
      a[j]:=a[i]; Inc(j); Inc(i);
    end;
  end; n:=j-1;
  Write('A''='); for i:=1 to n do Write(' ',a[i]); WriteLn;
  Write('Нажмите Enter...'); ReadLn;
end.
Перенести a в раздел переменных и дописать сортировку -- задание для самостоятельной работы.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2018, 23:19
Привет! Вот еще темы с ответами:

Сформировать и вывести целочисленный массив размера n - Pascal
Program Array6; Uses crt; Var c: array of integer; a,b,d,i,j,k,n,s:integer; Begin Writeln('a = '); Readln(a); ...

Сформировать и вывести целочисленный массив размера N, состоящий из 1 - Pascal
Дано целое число N (&gt; 0). Сформировать и вывести целочисленный массив размера N, содержащий степени двойки от первой до N-й: 2, 4, 8, 16, …...

Сформировать и вывести целочисленный массив размера N, содержащий степени двойки от первой до N-й: 2, 4, 8, 16 - Pascal
Дао целое число N (N&gt;0). Сформировать и вывести целочисленный массив размера N, содержащий степени двойки от первой до N-й: 2, 4, 8, 16......

Множества. Вывести все буквы, встречающиеся не менее двух раз - Pascal
Дана строка. Вывести все буквы, встречающиеся не менее двух раз. При решении задачи обязательно использовать множественный тип


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.