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

1.напишите программу, которая в последовательности натуральных чисел находит кол-во чисел кратных 8 из интервала [121,400] вход: программа получает на вход последовательность натуральных чисел, заканчивающиеся на 0. кол-во чисел не превышает 1000, а сами числа не превышают 30000. выход: программа должна вывести одно число-кол-во трехзначных чисел кратных 8 и принадлежащих интервалу [121,400] 2. напишите программу, которая в последовательности находит сумму чисел, не кратных 8 и оканчивающееся на 2. вход: программа получает на вход кол-во чисел, а затем сами числа. количество не превышает 1000, а сами числа не превышают 30000. выход: программа должна вывести одно число- сумму чисел, не кратных 8 и оканчивающихся на 2. pascalabc.net для 8го класса с незамысловатым решением

👇
Ответ:
1244ррровг
1244ррровг
24.10.2021
1. Чтобы найти количество чисел, кратных восьми, на заданном интервале [a;b], надо найти на этом интервале ближайшее к a число и потом прибавлять к нему по восемь, пока не пройдем весь интервал, считая, сколько чисел Но это глуповатый Он просто и бездумно программируется, но как считали раньше, когда компьютеров не было?
Определим остаток от деления а на 8. Если он нулевой, то a - первое из найденных чисел. Остаток от деления 121 на 8 равен 1, т.е. нам не повезло. Тогда прибавим к значению а число 8 и вычтем найденный остаток.121+8-1=128. Это и есть наше первое число. Сужаем интервал [128;400]. Чтобы найти, сколько на нем чисел, кратных 8, надо разделить нацело 400-128 на 8 и прибавляем к результату единицу. Получаем 35 - это и есть ответ.
Программу составим универсальную, которая будет находить на интервале [a;b] количество чисел, кратных m.

PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018
Внимание! Если программа не работает, обновите версию!

begin
  var (a,b):=ReadInteger2('Введите через пробел границы интервала:');
  var m:=ReadInteger('Укажите число для поиска кратных ему:');
  var r:=a mod m;
  if r>0 then a:=a+8-r;
  Writeln('Количество чисел равно ',(b-a) div m +1)
end.

Пример
Введите через пробел границы интервала: 121 400
Укажите число для поиска кратных ему: 8
Количество чисел равно 35

2. В этой задаче все совсем просто. Читаем очередное число p, находим остаток от деления p на восемь. Если он ненулевой, проверяем, чтобы остаток от деления p на 10 был равен двум. Если и это верно, добавляем p к накапливаемой сумме s. Так поступаем n раз.

begin
  var n:=ReadInteger('n=');
  var s:=0;
  var p:integer;
  for var i:=1 to n do begin
    Read(p);
    if p mod 8 <> 0 then
      if p mod 10 = 2 then s:=s+p
    end;
  Writeln('Сумма отобранных чисел равна ',s)
end.

Пример
n= 8
127 32 222 45 80 832 702 29
Сумма отобранных чисел равна 924
4,4(40 оценок)
Открыть все ответы
Ответ:
белка263
белка263
24.10.2021
Function NOK(a, b: integer): integer;
var
  c, d, e: integer;
begin
    c := a;
    d := b;
    while (d > 0) do
    begin
      c := c mod d;
      e := c;
      c := d;
      d := e;
    end;
    result := (a div c) * b;
end;

const
  n = 4;

var
  a: array [1..n] of integer;
  b: array [1..n*n] of integer;
  i, j, min_: integer;

begin
  writeln('Введите n целых чисел, только вот давайте без нулей, детсадовцы знают, что на 0 делить нельзя, плохо это');
  min_ := 2147483647;
  for i := 1 to n do
    readln(a[i]);
  for i := 1 to n do
    for j := 1 to n do
    begin
      if (i = j) then continue;
      b[i + n * (j - 1)] := nok(a[i], a[j]);
      min_ := min(b[i + n * (j - 1)], min_);
    end;
  write('     ');
  for i := 1 to n do
    write(i:5);
  writeln();
  for i := 1 to n do
  begin
    write(i:5);
    for j := 1 to n do
      write(b[i + n * (j - 1)]:5);
    writeln();
  end;
  writeln('min: ', min_);
end.
4,4(78 оценок)
Ответ:
KUROCHKA777
KUROCHKA777
24.10.2021
Const
  m = 50;

function NOK(a, b: integer): integer;
var
  c: integer;
begin
  if a = b then NOK := a
  else begin
    c := a * b;
    repeat
      if a > b then a := a - b else b := b - a;  
    until a = b;
    NOK := c div a
  end
end;

var
  a: array[1..m] of integer;
  i, j, n, p, q, nk, mn: integer;

begin
  Randomize;
  Write('Введите количество элементов в массиве (2..50)- ');
  Readln(n);
  Writeln('Исходный массив');
  for i := 1 to n do
  begin
    a[i] := Random(100) + 1;
    Write(a[i], ' ')
  end;
  Writeln;
  p := a[i];
  q := a[2];
  mn := p * q;
  for i := 1 to n - 1 do
    for j := i + 1 to n do
    begin
      nk := NOK(a[i], a[j]);
      if (mn > nk) then
      begin
        p := a[i];
        q := a[j];
        mn := nk
      end
    end;
  Writeln('Пара: ', p, '-', q, ' НОК=', mn);
end.

Тестовое решение:
Введите количество элементов в массиве (2..50)- 20
Исходный массив
19 36 99 86 79 83 73 69 27 14 87 67 49 84 98 79 38 4 60 22
Пара: 14-4 НОК=28
4,7(28 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ