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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2015, 15:39   #1
FlayGlam
Пользователь
 
Регистрация: 21.12.2015
Сообщений: 38
По умолчанию Одинаковые числа - паскаль

В произвольном массиве из n целых чисел (n<100) найти повторяющиеся элементы и количество повторений каждого из таких элементов.

Исходные данные
Первая строка содержит количество элементов массива n.
Затем следуют элементы массива (целые числа), каждый в отдельной строке.

Результат
Первая строка должна содержать количество повторяющихся элементов в массиве, если повторяющихся элементов нет, то вывести ноль.
Затем идут повторяющиеся элементы массива, если они есть, в каждой строке через пробел сначала сам элемент, а затем количество его повторений (элементы расположены в порядке расположения в массиве первого из повторяющихся элементов).
FlayGlam вне форума Ответить с цитированием
Старый 21.12.2015, 17:22   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
type mas = array [1..100] of byte;
var a, ac, ack : mas;
N,NC : byte;
procedure readdata;
var i,j,k:byte;b:boolean;
f,fout:text;
begin
  assign(f,'inp.txt');reset(f);
  assign(fout,'inp.out');rewrite(fout);
  readln(f,n);
  b:=false;
  NC:=0;
  for i:=1 to n do
   begin
    readln(f,a[i]);
    for j:=1 to i-1 do
      if a[i]=a[j] then {est dublikat}
       begin
         for k:=1 to NC do {smotrim w spiske dublikatov}
          begin
            if ac[k]=a[j] then {w spiske dublikatov est}
               begin
                    inc(ack[k]);
                    b:=true;
                    break
               end
          end;
          if not(b) then {s spiske dublej nety}
            begin
                 inc(nc);
                 ac[nc]:=a[i];
                 ack[nc]:=2;
            end
          else break
       end;
   end;
   writeln(fout,NC);
   for i:=1 to Nc do
     writeln(fout,ac[i],' ',ack[i]);
    close(f); close(fout);
end;
BEGIN
     readdata;
end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 21.12.2015, 18:34   #3
FlayGlam
Пользователь
 
Регистрация: 21.12.2015
Сообщений: 38
По умолчанию

При компиляции он выдает ошибку времени выполнения
FlayGlam вне форума Ответить с цитированием
Старый 21.12.2015, 18:37   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

При компиляции ошибку времени выполнения?
Arigato вне форума Ответить с цитированием
Старый 21.12.2015, 19:22   #5
FlayGlam
Пользователь
 
Регистрация: 21.12.2015
Сообщений: 38
По умолчанию

FlayGlam вне форума Ответить с цитированием
Старый 21.12.2015, 19:25   #6
TaLadno
Форумчанин
 
Регистрация: 03.06.2015
Сообщений: 393
По умолчанию

Да это все Aleksandr H. накосячил, ну надо же какая безответственность, не создал на компе у "юзверя" файлик inp.txt
А еще же наверное забыл зачетку перподу отнести, вместо FlayGlam

FlayGlam, попробуйте исправить промах Aleksandr H. и таки создайте файл самостоятельно.

Цитата:
Сообщение от FlayGlam Посмотреть сообщение
Исходные данные
Первая строка содержит количество элементов массива n.
Затем следуют элементы массива (целые числа), каждый в отдельной строке.
Скрин, кстати, можно было еще хуже сделать
Вы там держитесь.

Последний раз редактировалось TaLadno; 21.12.2015 в 19:28.
TaLadno вне форума Ответить с цитированием
Старый 21.12.2015, 21:38   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Исключительно ради баловства сделал со списком:

Код:
Program LineList;
const sfin = 'inamber.txt'
Type Tpnode = ^node;
       node = record
          d : word;
          n : word;
          p : Tpnode;
       end;
var beg : Tpnode;
   d, m : word;
   fhin : text;

{Процедура формирования списка}
procedure add(var beg : Tpnode; d : word);
var p : Tpnode;
    t : Tpnode;
begin
   new(p);       {выделение памяти под элемент}
   p^.d := d;    {заполнение элемента}
   p^.n := 1;    {кол-во повторов}
   p^.p := nil;  {указатель на "хвост"}
   if beg = nil then
      beg := p   {инициализируем список}
   else          {ищем конец списка и вставляем}
   begin
      t := beg;
      while t^.p <> nil do
         t := t^.p;
      t^.p := p;
   end;
end;

{Поиск элемента в списке}
procedure find(beg : Tpnode; key : word);
var p, pp : Tpnode;
begin
   p := beg;
   while p <> nil do  {до конца списка}
   begin
      if p^.d = key then {элемент найден}
      begin
         p^.n := p^.n + 1;
         exit;
      end;
      p := p^.p;    {переход к следующему элементу списка}
   end;
   add(beg, key);   {добавим в список, т.к. элемент не найден}
end;

procedure writelist(var beg : Tpnode; sfout : string);
var p, t : Tpnode;
   fhout : text;
begin
   assign(fhout, sfout);
   rewrite(fhout);
   p := beg;
   while p <> nil do
   begin
      writeln(fhout, p^.d : 6, '  ', p^.n:4);
      t := p;
      dispose(t);
      p := p^.p;
   end;
   close(fhout);
end;

BEGIN
   assign(fhin, sfin);
   reset(fhin);
   readln(fhin,m);
   readln(fhin, d);
   add(beg, d);
   m := m - 1;
   while m <> 0 do
   begin
      m := m - 1;
      readln(fhin, d);
      find(beg, d);
   end;
   writelist(beg, 'onamber.txt');
END.
Да, да!. Тут нужен входной файл inamber.txt


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль.Даны 2 целых числа. Есть ли у них одинаковые(по значению) разряды? votsar Помощь студентам 3 10.12.2015 15:24
найти все четырехзначные числа, в которых ровно две одинаковые цифры (турбо паскаль) SkuLLL Помощь студентам 5 23.01.2012 19:23
Рандомятся одинаковые числа MasterSporta Общие вопросы C/C++ 7 11.12.2011 13:34
Есть ли одинаковые числа! kloyn91 Microsoft Office Excel 3 29.10.2009 14:07
Одинаковые числа artemavd Общие вопросы Delphi 10 14.11.2008 20:36