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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2016, 20:28   #1
IIo3uTuB
Пользователь
 
Регистрация: 08.12.2016
Сообщений: 18
По умолчанию [Pascal]: Задача о поиске одинаковых элементов в одномерном массиве чисел.

В некотором цехе имеется определенное количество станков, требующих наладки. Известно время наладки каждого станка. Определить номера станков, требующих одинакового времени наладки. Например, для заданной таблицы ответ можно получить в таком виде:

Номер
Станка 1 2 3 4 5 6 7 8
Время
наладки 15 5 7 10 5 15 7 5

15 – 1, 6
5 - 2, 5, 8
7 - 3, 7
10 - 4

Последний раз редактировалось Вадим Мошев; 14.12.2016 в 22:39.
IIo3uTuB вне форума Ответить с цитированием
Старый 15.12.2016, 14:13   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,551
По умолчанию

ну где-то так , заполнение массива времен наладки - это самостоятельно. Конец массива - нулевой элемент:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Math, ExtCtrls;

type

  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormClick(Sender: TObject);


  private
    { Private declarations }
  public

  end ;
var
  Form1: TForm1  ;
  masTim,masStn : array [1..100] of  integer ;
implementation

{$R *.dfm}


procedure TForm1.FormClick(Sender: TObject);
var i,j,mx,mxN : integer ;
stro : string ;
begin
   for i := 1 to 100  do masStn[i] := 0 ;
   mx := 0 ;
   for i := 1 to 100  do
     begin
       if masTim[i] = 0 then Break ;
       Inc (masStn[masTim[i]] ) ;
       mxN := i ;
       if masTim[i] > mx then mx := masTim[i]
     end  ;
   for i := 1 to mx do
       if masStn[i] > 0 then
         begin
           stro := Format ('%2d - ',[i]) ;
           for j := 1 to mxN do
             if masTim[j] = i then stro := stro + Format (' %2d,',[j]) ;
              j := Length(stro) ; stro := Copy (stro,1,j-1) ;
              Memo1.Lines.Add(stro)
       end ;
end;

end.
Вообще-то это сделано в Дельфи, но суть процедуры д. быть понятна.

3 9 8 6 5 1 4 3 8 1

1 - 6, 10
3 - 1, 8
4 - 7
5 - 5
6 - 4
8 - 3, 9
9 - 2

Последний раз редактировалось digitalis; 15.12.2016 в 17:21.
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать алгоритм, который реализует jagged массив (рваный массив с различной длиной строк), используя список списков (Pascal ABC) бабуся Помощь студентам 0 29.04.2013 00:07
Из массив А получить массив В, удвоив все нечётные элементы удвоены ( на Pascal) KARTER Помощь студентам 1 18.06.2011 19:58
Массив pascal dante92 Помощь студентам 2 23.02.2010 20:22
pascal массив Fornarina Помощь студентам 16 27.12.2008 22:48