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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2011, 18:55   #1
Liam_
Пользователь
 
Аватар для Liam_
 
Регистрация: 16.12.2010
Сообщений: 29
Стрелка Паскаль, матрицы

Подскажите с решением, вот задача: Дана матрица размера n х m . Определить количество различных элементов матрицы (т.е. повторяющиеся считать один раз). Пояснения: исходная матрица должны считываться из файла, в котором записана квадратная матрица размером не менее 6 строк и 6 столбцов, вводится с клавиатуры, после завершения работы программы исходная матрица и результаты работы программы должны быть выведены на экран и в текстовый файл
I wear the fez now. Fezes are cool..)
Liam_ вне форума Ответить с цитированием
Старый 28.04.2011, 10:39   #2
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Код:
массив значения;
цикл1 i от 0 n-1
    цикл2 j от 0 до m-1
           если элемент[i][j] не принадлежит массиву значений, записать его туда
           иначе продолжить цикл
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 28.04.2011, 13:40   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

способ от malinoff вполне рабочий. Только массив значений потребует дополнительных ресурсов и памяти...
но можно и так решить.

а ещё я бы предложил такой вариант:
для каждого элемента A[i,j] проверять не было ли данного значения в массиве раньше:
Код:
function IsWasBefore(ii,jj : integer) : boolean;
var i0, j0 : integer;
begin
   IsWasBefore := false;
   for j0:= Нач.ИндексСтолбцов to jj-1 do
        if A[ii,j0]=A[ii,jj] then begin
           IsWasBefore := true;
           Exit;
        end;

   for i0:= Нач.ИндексСтрок to ii-1 do
     for j0:= Нач.ИндексСтолбцов to КоличествоСтолбцов do
        if A[i0,j0]=A[ii,jj] then begin
           IsWasBefore := true;
           Exit;
        end;
end;

Последний раз редактировалось Serge_Bliznykov; 28.04.2011 в 13:42.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
матрицы. паскаль Dean Помощь студентам 11 21.02.2011 17:48
матрицы паскаль Aleksey_Popov93 Паскаль, Turbo Pascal, PascalABC.NET 1 21.04.2010 18:09
Паскаль.Матрицы. kikim Помощь студентам 4 13.03.2010 22:32