Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Задача на массивы


Автор: Milkyway 29.10.2007, 15:46
Здравствуйте уважаемые программисты! Помогите пожалуйста сделать 2 задачки на делфи(Console Application), инече вылечу из колледжа =(
Вот условия...

Дан Двумерный массив нужно определить есть ли 2 или более одинаковых элемента?

Очень на Вас надеюсь!!!

Автор: Rodman 29.10.2007, 18:20

M
Rodman
Модератор: Название темы должно отражать ее суть!
Модератор: Пожалуйста, один топик - один вопрос.

Автор: NE_KTO 29.10.2007, 21:26
Код

program Help_me;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const      // описываем константы
  N = 3;   // N - кол-во строк в массиве
  M = 4;   // M - кол-во столбцев

var        // описываем переменные
  Massiv: array[1..N, 1..M] of Integer;  // Собственно сам массив размером NxM из целых чисел
  i, j : Integer;                        // Счетчики цыклов
  i1, j1 : Integer;                      // Они же
  EqualCount: Integer;                   // Количество найденных равных элементов

begin

  // Сперва вводим массив с клавиатуры
  for i:=1 to N do          // вложенные циклы по i и j
    for j:=1 to M do begin  // те получается, что пробегаем весь массив
      Write('Input element [',i,',',j,']: ');  // Приглашение для ввода :)
      ReadLn(Massiv[i,j]); // Вводим с клавы число и помещаем в массив
      end;

  // Теперь собственно сам поиск равных элементов
  EqualCount:=0;           // Обнуляем счетчик найденных равных элементов
  for i:=1 to N do         // Пробегаем массив меняя i и j
    for j:=1 to M do
      for i1:=1 to N do    // Для каждого из значений i и j пробегаем массив еще
        for j1:=1 to M do  // раз по i1 и j1 - получается сравним каждый элемент с каждым
                           // (в том числе сам с собо)
          if (Massiv[i,j] = Massiv[i1,j1]) and  // если элементы равны И
              not ((i = i1) and (j = j1)) then  // мы НЕ сравниваем элемент сам с собой то
            EqualCount:=EqualCount + 1;         // нашли равные элементы - увеличиваем счетчик на 1

  // Теперь выводми результат
  if EqualCount = 0 then     // Если счетчик равен 0
    WriteLn('In array adsent equal elements.') // Значит говорим, что нет равных
  else
    WriteLn('In array present two or more equal elements.');  // Иначе есть два или более

  // Ждем-с пока пользователь увидит результат и нажмет ENTER
  WriteLn('Press ENTER. . .');
  ReadLn;

  // P.S. Здесь использован самый простой, но не оптимальный алгоритм
  // P.P.S Извиняюсь за мой английский, может где и не прав.. с этим тяжко...
  // УДАЧИ!
end.


Автор: Milkyway 29.10.2007, 23:06
Спасибо большое! Это то что нужно!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)