М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Морго11
Морго11
13.05.2023 22:16 •  Информатика

Дан двумерный массив из 100 элементов, значения которых находятся в интервале от 0 до 1000. найти и вывести минимальное значение среди элементов массива, которые имеют четное значение и не делятся на три.

👇
Ответ:
ladykati
ladykati
13.05.2023
Const
  n = 10;
var
  x:array[1..n,1..n] of integer;
  i,j,k,xmin: integer;
begin
  Randomize;
  Writeln('Исходный массив');
  xmin:=32767;
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      k:= Random(1001); x[i,j]:=k;
      Write(x[i,j]:5);
      if (k mod 2=0) and (k mod 3<>0) then
        if xmin>k then xmin:=k
    end;
    Writeln
  end;
  Writeln('Минимальное четное, не кратное 3: ',xmin)
end.

Тестовое решение:
Исходный массив
  804  425  286  223   93  517  955  301  708  171
  934  347  789  960  195  784  651   76  498  402
  360  170  940   62  428  226  959  173  129  723
  232  732  777  152   56  631  974   17  620  271
   61  314  974  787   70  574  756  856  232  497
  385   34   25  652  966  634  486  224  796  868
  558  781  171  985  940  201  570  636  903  564
  810  633  457  227  341   45  196  153  992  854
  470  103  942  633  338  197  707  125  187  423
  144  750  221  753  713  280  143  989  847  869
Минимальное четное, не кратное 3: 34
4,7(34 оценок)
Открыть все ответы
Ответ:
ароаурв
ароаурв
13.05.2023
{неэффективный алгоритм}

const
 k = 100;

type
 maze = array [1..k, 1..k] of integer;
 var
 l : maze;
 n, m: integer;
 i, j: integer;
 c: char;
 t: text;
 w: integer;
 x0, y0: integer;
 x1, y1: integer;

procedure ways(a,b,r:integer);
begin
 if (w = 0) or (r < w) then {нет смысла идти дальше, если текущий путь уже превосходит найденный}
 if (l[a,b] <> -2) then
 if (r < l[a,b]) or (l[a,b] = -1) then {нет смысла идти, если текущая клетка уже была достигнута за меньшее число шагов}
   begin
   l[a,b] := r;
   if (a = x1) and (b = y1) then
     w := r
   else
     begin
     if a <> 1 then ways(a - 1, b, r + 1);
     if b <> 1 then ways(a, b - 1, r + 1);
     if a <> n then ways(a + 1, b, r + 1);
     if b <> m then ways(a, b + 1, r + 1);
     end
   end;
end; 
begin
 assign(t, 'input.txt');
 reset(t);
 w := 0;
 readln(t, n, m);
 readln(t, x0, y0);
 readln(t, x1, y1);
 for i := 1 to n do
   begin
   for j := 1 to m do
     begin
     read(t, c);
     case c of
       '.' : l[i,j] := -1; {будем считать, что если клетка отмечена как -1, то путь к ней еще не найден}
       'X' : l[i,j] := -2; {-2, если клетка непроходима}
       end;
     end;
   readln(t)
   end;
 close(t);
 if (l[x0,y0] <> -2) and (l[x1,y1] <> -2) then
   begin
   l[x0,y0] := 1; {просто трюк, чтобы пройти проверку на (r < l[x0,y0])}
     ways(x0, y0, 0);
   end
 else
  l[x1,y1] := -1;
 writeln(l[x1,y1])
end.
4,4(70 оценок)
Ответ:
сонька177
сонька177
13.05.2023
Var m : array[0..6] of Integer;
  i,k,N : Integer;
Begin
  For i:=0 to 6 do m[i]:=0;
  Readln(N);
  k:=6;
  While N>0 do
  Begin
    If N>=Power(2,k) then
    Begin
      N:=N-Trunc(Power(2,k));
      Inc(m[k]);
    end else Dec(k);
  end;
  For i:=0 to 6 do Writeln(Power(2,i),'  ',m[i],' шт.');
end.

Еще вариант:
Const
  NN = 7;
  money : array[1..7] of Integer = (1,2,4,8,16,32,64);
Var m : array[1..NN] of Integer;
  i,k,N : Integer;
Begin
  For i:=1 to NN do m[i]:=0;
  Readln(N);
  k:=NN;
  While N>0 do
  Begin
    If N>=money[k] then
    Begin
      N:=N-money[k];
      Inc(m[k]);
    end else Dec(k);
  end;
  For i:=1 to NN do Writeln(money[i],'  ',m[i],' шт.');
end.
4,7(42 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ