Как найти одинаковые элементы массива паскаль

0 / 0 / 0

Регистрация: 21.11.2009

Сообщений: 10

1

Поиск повторяющихся элементов в массиве

09.12.2009, 20:36. Показов 19353. Ответов 1


Студворк — интернет-сервис помощи студентам

дайте, пожалуйста, программный код нахождения повторяющихся элементов в массиве. заранее благодарю!



0



Тамила

753 / 546 / 211

Регистрация: 12.11.2009

Сообщений: 1,100

09.12.2009, 20:44

2

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
uses crt;
var a:array[1..100]of integer;
i,n,kol,ch,j:integer;
begin clrscr;
randomize;
write('n=');
read(n);
for i:=1 to n do
 begin
  a[i]:=random(20);
  write(a[i],'  ');
 end;
writeln;
for j:=1 to n do
 begin
  kol:=0;
  ch:=a[j];
  for i:=1 to n do
  if a[i]=ch then inc(kol);
  writeln('element ',ch,' vstrechaetsya ',kol,' raz');
 end;
readkey;
end.



2



Здравствуйте. В колледже весь курс проходили паскаль и настало время практики. Дали индивидуальные задания и сроки. Не скажу, что паскалем владею в совершенстве, скорее на уровне опытного пользователя. В задании было всего 5 задач, 4 из которых успешно выполнены и записаны в отчёт, а вот с пятой возникли трудности.

Текст задачи:

Дан двумерный массив положительных целых чисел. Известно, что в нём присутствуют совпадающие элементы (одинаковые числа). Вывести их индексы.

Всё вроде бы и звучит просто и не должно занимать много времени, но придумать алгоритм не могу. Заранее благодарю.

αλεχολυτ's user avatar

αλεχολυτ

28.4k10 золотых знаков56 серебряных знаков118 бронзовых знаков

задан 18 июн 2012 в 18:27

rashpil's user avatar

1

Создаём массив индексов, т.е. заполняем массив натуральным рядом. Берём первый элемент, сравниваем с остальными в цикле. Индексы меньших записываем в один массив, больших — в другой (или с конца или сначала к середине нового массива), индексы равных выводим. Повторяем рекурсивно то же для меньших и для больших пока длина больше 1.

ответ дан 18 июн 2012 в 21:16

sercxjo's user avatar

sercxjosercxjo

6,8842 золотых знака26 серебряных знаков55 бронзовых знаков

1 берем первый элемент проверяем с остальными

2 если попадается одинаковый — выводим индекс копии и индекс проверяемого элемента

3 крутимся в цикле пока есть елементы в массиве

Хорошо бы ввести проверку типа, если индекс копии меньше индекса проверяемого элемента — нечего не делать, так как он уже будет учтен

ответ дан 18 июн 2012 в 18:36

Gorets's user avatar

GoretsGorets

12.4k1 золотой знак19 серебряных знаков43 бронзовых знака

3

Стандартный алгоритм требует каждый раз пробегаться по всем элементам для сравнения.
Можно сделать еще трехмерный массив где будут сохраняться значения вида (число, индекс в первоначальном массиве) и отсортировать по возрастанию.
Получится чтото типа 10, 19, 89, 128, 170, 230, 300, …
Далее берем число1 из первого массива и сравниваем. Если число1 становится меньше числа из второго массива то break

экономим N/2 пробежек на каждом проходе

ответ дан 18 июн 2012 в 22:08

Тентаклькоацтль's user avatar

ТентаклькоацтльТентаклькоацтль

3101 золотой знак2 серебряных знака12 бронзовых знаков

const N=10;
var 
  a,b:array [1..N] of integer;
  i, j, k,l:integer;
  z:boolean;
begin
  randomize;
  for i:=1 to N do
   begin
     a[i]:= random(1,N);
     write(a[i]:3);
   end;
   writeln;
   l:=0;
   write('Эти числа повторяются: ');
   for i:= 1 to N do
     for j:= i+1 to N do
       if a[i]=a[j] then begin
         z:=true;
         for k:=1 to l do 
           if a[i]=b[k] then begin
             z:=false;
             break;
           end;
         if z then begin 
           l:=l+1;
           b[l]:=a[i];
         end;
        end;
  if l=0 then writeln('отсутствуют повторяющиеся элементы') else
    for i:=1 to l do write(b[i],' ');
end.

Поиск в массиве одинаковых элементов

  • В этой теме 0 ответов, 1 участник, последнее обновление 6 лет, 2 месяца назад сделано Васильев Владимир Сергеевич.
  • Сообщения

    • На языке Pascal проверить есть ли в заполненном случайными числами массиве элементы с одинаковыми значениями.

      program arrays_9;
      uses crt;
      var
        n, i, j: integer;
        b: boolean;
        A: array[1..100] of integer;
      begin
        clrscr;
        randomize;
        b:=false;
        write('Количество элементов > '); read(n);
        for i:=1 to n do
        begin
          A[i]:=random(10); write(A[i], ' ');
          if i>1 then for j:=i-1 downto 1 do
          if A[i]=A[j] then b:=true;
        end;
        if b then write('Одинаковые элементы в массиве имеются')
        else write('Одинаковых элементов в массиве нет');
        readkey;
      end.
  • Автор

    Сообщения

  • Для ответа в этой теме необходимо авторизоваться.


5

1 ответ:



0



0

Var a: array[1..10] of integer;
var i, j, ans:integer;
begin
ans:=0;
for i:=1 to 10 do 
begin  readln(a[i]); 
end; 
for i:=1 to 10 do 
begin   
for j:=i+1 to 10 do     
begin           
if a[i]=a[j] then ans:=ans+1;     
end;   
end;   
if ans>0 then writeln(‘есть’)   
else writeln(‘нет’);
end.<span>  </span>

Читайте также

#include «pch.h»

#include <iostream>

using namespace std;

int main()

{

cout << «2nn0nn4t2nn3t3nn6t4t2nn6t6t6nn8t6t4t2nn9t9t9t9»;

system («pause»);

return 0;

}

Компилятор: Microsoft Visual Studio 2017 15.8.1

Найдем кол-во символов в сообщении:
K=32*40*8=10240
Найдем информационный объем одного символа:
10 кб переводим в биты: 10*1024*8=81920, тогда информационный объем одного символа (i) = 81920/10240 = 8, тогда кол-во символов в алфавите (N):
N=2^i (2 в степени i) = 2^8 = 256.
Ответ: в алфавите 256 символов

На всякий случай сделал проверку и на русские, и на английские.
<em>задача 1.</em>
uses crt;
var i:integer;
s:string;
begin
i:=1;
read(s);
repeat
if (s[i]=’a’) or (s[i]=’а’) then
s:=copy(s,1,i)+’ ‘+copy(s,i+1,length(s));
i:=i+1;
until i=length(s)+1;
writeln(s);
<span>end.
<em>задача 2.</em>
uses crt;
var i:integer;
s:string;
begin
i:=1;
read(s);
repeat
if (s[i]=’о’) or (s[i]=’o’) then
s:=copy(s,1,i-1)+’ ‘+copy(s,i+1,length(s));
i:=i+1;
until i=length(s)+1;
writeln(s);
<span>end.</span>
</span>

Ответ:

n = int(input())

a = [int(i) for i in input().split()]

print(*[i for i in a if not i % 2])

Объяснение:

//PascalABC.Net 3.1 сборка 1200
uses System;

begin
    var Replace4to16 := new Dictionary<string, string>();
    Replace4to16.Add(’00’, ‘0’);
    Replace4to16.Add(’01’, ‘1’);
    Replace4to16.Add(’02’, ‘2’);
    Replace4to16.Add(’03’, ‘3’);
    Replace4to16.Add(’10’, ‘4’);
    Replace4to16.Add(’11’, ‘5’);
    Replace4to16.Add(’12’, ‘6’);
    Replace4to16.Add(’13’, ‘7’);
    Replace4to16.Add(’20’, ‘8’);
    Replace4to16.Add(’21’, ‘9’);
    Replace4to16.Add(’22’, ‘a’);
    Replace4to16.Add(’23’, ‘b’);
    Replace4to16.Add(’30’, ‘c’);
    Replace4to16.Add(’31’, ‘d’);
    Replace4to16.Add(’32’, ‘e’);
    Replace4to16.Add(’33’, ‘f’);

        var n4 := ReadString(‘a_4 = ‘);
    if n4.Length mod 2 = 1 then n4 := ‘0’ + n4;

        var n16 := »;
    for var i := 0 to n4.Length div 2 — 1 do
        if Replace4to16.ContainsKey(n4.Substring(2 * i, 2)) then
            n16 += Replace4to16[n4.Substring(2 * i, 2)]
        else writeln(‘Неверные знаки «‘, n4.Substring(2 * i, 2), ‘» в числе’);

        writeln(n16);
end.

Понравилась статья? Поделить с друзьями:
  • Как составить программу тренировок на один день
  • Как найти вентиляционный канал в стене
  • Не удалось завершить обновления windows 10 как исправить ошибку
  • Как найти расстояние пластин конденсатора
  • Как найти потерявший сайт