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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2009, 20:58   #1
pilot76
Пользователь
 
Регистрация: 13.08.2009
Сообщений: 13
Печаль Экзамен

доброго времени суток.
на экзамене по информатике попался такой билет.

Найти минимальное значение цельно численной матрицы m[n,k].
Подсчитать кол-во компонент матрицы m[n,k], совпадающих с минимумом.
Записать в одномерный массив v[q] значения: -1, если сумма индексов минимальной компоненты матрицы m[n,k] нечетным числом, и 1 - если четным числом.
Заменить в матрице m[n,k] минимальные компоненты нулями.
На экран вывести исходную матрицу m[n,k], значения минимума, кол-во минимумов, массив v[q], измененную матрицу m[n,k].
матрица
-5 0 -1 -5
0 -2 -5 3

Вот такой билет попался, я успел сделать тока до массива, а дальше ума нехватка.
Вот что я "наделал" что дальше помогите.

Program zadanie;

Const a:array[1..2, 1..4] of real=
(( -5, 0, -1, -5 ),
( 0, -2, -5, 3 ));
Var min:real;
k,i,j,y,x,z,f:integer;
begin
writeln('Исходная матрица: ');
for i:=1 to 2 do begin
for j:=1 to 4 do begin
write(a[i,j]:6:0)
end;
writeln;
end;
min:=a[1,1];
for i:=1 to 2 do
for j:=1 to 4 do
if min>a[i,j] then min:=a[i,j];
writeln('Минимальный элемент матрицы: ',min:3:0);
k:=0;
for i:=1 to 2 do
for j:=1 to 4 do
if a[i,j]=min then k:=k+1;
writeln('количество минимальных элементов: ',k:3);

write('Для завершения нажмите Enter');
readln;
end;
end.

Последний раз редактировалось pilot76; 13.08.2009 в 21:18.
pilot76 вне форума Ответить с цитированием
Старый 13.08.2009, 21:04   #2
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Всёже я думаю что надо написать было: a:array[1..2, 1..4] of Integer...

Вроде как всё почти сделанно.... Кроме:
"Записать в одномерный массив v[q] значения: -1, если сумма индексов минимальной компоненты матрицы m[n,k] нечетным числом, и 1 - если четным числом."

Но тут вроде элементарно.... Так в чём проблема то
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 13.08.2009, 21:09   #3
pilot76
Пользователь
 
Регистрация: 13.08.2009
Сообщений: 13
По умолчанию

проблема в том что не могу сообразить как записать, вот и прошу помощи.
pilot76 вне форума Ответить с цитированием
Старый 13.08.2009, 21:14   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

begin if a[i,j]=min then a[i,j]:=0
else a[i,j]:=0;
Это что?
puporev вне форума Ответить с цитированием
Старый 13.08.2009, 21:17   #5
pilot76
Пользователь
 
Регистрация: 13.08.2009
Сообщений: 13
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
begin if a[i,j]=min then a[i,j]:=0
else a[i,j]:=0;
Это что?
прошу прощения это я лишнее ну удалил, поправлю
pilot76 вне форума Ответить с цитированием
Старый 13.08.2009, 21:47   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
Program zadanie;
uses crt;
Const
  n=2;
  k=4;
  a:array[1..n, 1..k] of integer=(( -5, 0, -1, -5 ),
                                    (0, -2, -5, 3 ));
Var min:integer;
    i,j,q:integer;
v:array[1..n*k] of integer;
begin
clrscr;
writeln('Исходная матрица: ');
for i:=1 to n do
 begin
  for j:=1 to k do
  write(a[i,j]:4);
  writeln;
 end;
min:=a[1,1];
for i:=1 to n do
for j:=1 to k do
if min>a[i,j] then min:=a[i,j];
writeln('Минимальный элемент матрицы: ',min);
q:=0;
for i:=1 to n do
for j:=1 to k do
if a[i,j]=min then inc(q);
writeln('количество минимальных элементов=',q);
q:=0;{размер массива пока=0}
for i:=1 to n do
for j:=1 to k do
if a[i,j]=min then{если =мин}
 begin
  inc(q);{увеличиваем размер массива на 1}
  if odd(i+j) then v[q]:=-1{если сумма индексов нечетная(odd)}
  else v[q]:=1;{если четная}
 end;
writeln('Массив V:');
for i:=1 to q do
write(v[i],' ');
writeln;
writeln('Измененная матрица:');
for i:=1 to n do
 begin
  for j:=1 to k do
   begin
    if a[i,j]=min then a[i,j]:=0;
    write(a[i,j]:4);
   end;
  writeln;
 end;
write('Для завершения нажмите Enter');
readln
end.
puporev вне форума Ответить с цитированием
Старый 14.08.2009, 06:35   #7
pilot76
Пользователь
 
Регистрация: 13.08.2009
Сообщений: 13
По умолчанию

огромное спасибо! теперь понятно разобрался.
pilot76 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экзамен!! VASHUK Помощь студентам 2 16.06.2009 09:54
ЭКЗАМЕН Александр ЕЛуНИН Паскаль, Turbo Pascal, PascalABC.NET 3 15.05.2009 14:06
Экзамен Veselyn Помощь студентам 4 13.02.2009 22:37