Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 842

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
помогите с задачей, пожалуйста....
даны целые числа А1, ..., А10, целочисленная квадратная матрица порядка n. заменить нулями в матрице те элементы, для которых имеются равные числа среди А1, ..., А10.

заранее спасибо!

NeStor Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: NeStor (статус: Посетитель)
Вопрос отправлен: 19 декабря 2010, 23:05
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

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

program p4842;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
type
  TVector = array of Integer;
  TMatrix = array of array of Integer;
 
const
  RandomLimit = 100;
 
procedure MakeMatrix(var X: TMatrix; const N: Word);
var
  i, j: Integer;
begin
  SetLength(X, N, N);
  for i:= 0 to N - 1 do
    for j:= 0 to N - 1 do
      X[i, j]:= Random(RandomLimit);
end;
 
procedure PrintMatrix(const X: TMatrix);
var
  i, j: Integer;
begin
  for i:= 0 to Length(X) - 1 do
    begin
      for j:= 0 to Length(X[i]) - 1 do
        Write(X[i, j]: 3);
 
      WriteLn;
    end;
end;
 
function ChangeMatrix(var X: TMatrix; const A: TVector): Word;
var
  i, j, k: Integer;
begin
  Result:= 0;
 
  for i:= 0 to Length(X) - 1 do
    for j:= 0 to Length(X[i]) - 1 do
      for k:= 0 to Length(A) - 1 do
        if A[k] = X[i, j]
          then begin
                 X[i, j]:= 0;
                 Inc(Result);
               end;
end;
 
var
  X: TMatrix;
  A: TVector;
  N: Word;
  Index: Integer;
 
begin
  Randomize();
  Write('  Choose the matrix dimensions (N): ');
  ReadLn(N);
  MakeMatrix(X, N);
  WriteLn(#13#10'  Source matrix "X" (', N, 'x', N, '):');
  PrintMatrix(X);
 
  WriteLn(#13#10'  Source vector "A" (1x10):');
  SetLength(A, 10);
  for Index:= 0 to Length(A) - 1 do
    begin
      A[Index]:= Random(RandomLimit);
      Write(A[Index]: 3);
    end;
 
  Index:= ChangeMatrix(X, A);
  WriteLn(#13#10#13#10'  Changed matrix (', Index, ' cells changed):');
  PrintMatrix(X);
 
  ReadLn;
end.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 20 декабря 2010, 09:23
Оценка за ответ: 5

Комментарий к оценке: Спасибо, правда я в Си ничего не ловлю...

Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 20 декабря 2010, 06:06; участников в обсуждении: 2.
Егор

Егор (статус: 10-ый класс), 20 декабря 2010, 05:30 [#1]:

нифига не понял. подробнее, пожалуйста
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 20 декабря 2010, 06:06 [#2]:

в чем, собственно, вопрос? Сложно сделать вложенный цикл прохождения по матрице? Или сравнить элемент матрицы с числами А1..А10? Или присвоить значение элементу матрицы?

20 декабря 2010, 08:43: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Лабораторный практикум » Delphi модератором min@y™ Причина: Скоро сессия...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 16 ноября 2024, 15:38
Выполнено за 0.03 сек.