В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
algebraigeometria1
algebraigeometria1
07.12.2020 02:14 •  Информатика

Написать программы с циклами:1. вводится натуральное число. найти сумму шести цифр, кратных шести, входящих в его состав

Показать ответ
Ответ:
haylayjonesty
haylayjonesty
12.04.2022 23:07
Program Olympic;

const
  nMax = 50; { максимум 50 команд }
  cGold = 7;
  cSilver = 6;
  cBronze = 5;

type
  cName = string[20];
  RC = record
    position: byte;
    name: cName;
    nGold: byte;
    nSilver: byte;
    nBronze: byte;
    cTotal: byte
  end;
  tM = array[1..nMax, 1..2] of byte;

procedure Shell(var a: tM; n: integer);
{ Сортировка методом Шелла массива a[1..n, 1..2]
  по убыванию значений элементов второго столбца. }
var
  i, j, step, t1, t2: integer;

begin
  step := n div 2;
  while step > 0 do
  begin
    for j := n - step downto 1 do
    begin
      i := j;
      while i <= n - step do
      begin
        if a[i, 2] < a[i + step, 2] then
        begin
          t1 := a[i, 1]; t2 := a[i, 2];
          a[i, 1] := a[i + 1, 1]; a[i, 2] := a[i + 1, 2];
          a[i + 1, 1] := t1; a[i + 1, 2] := t2
        end;
        i := i + step
      end
    end;
    step := step div 2
  end
end;

{ Основная программа }
var
  f: file of RC;
  a: tM;
  i, n: byte;
  s: cName;
  t: RC;

begin
  { Организуем ввод данных }
  Assign(f, 'Olympic.in');
  Rewrite(f);
  n := 0;
  repeat
    Writeln('Введите наименование команды или * для окончания ввода');
    Readln(s);
    if s[1] <> '*' then
    begin
      n := n + 1;
      Write('Количество медалей: золото, серебро, бронза: ');
      Readln(t.nGold, t.nSilver, t.nBronze);
      t.position := n;
      t.name := s;
      t.cTotal := t.nGold * cGold + t.nSilver * cSilver + t.nBronze * cBronze;
      Write(f, t);
      a[n, 1] := t.position; a[n, 2] := t.cTotal
    end
  until s[1] = '*';
  Reset(f);
  { Выполняем сортировку заполненного массива a,
    определяя положение записей в файле }
  Shell(a, n);
  { Выводим результаты, используя прямой доступ к файлу }
  Writeln('Результаты олимпиады');
  for i := 1 to n do
  begin
    seek(f, a[i, 1] - 1);
    Read(f, t);
    Writeln(i, ': ', t.name, '(', t.nGold, ' зол, ', t.nSilver, ' сер, ',
      t.nBronze, ' бронз), очков- ', t.cTotal)
  end;
  Close(f);
end.

Тестовое решение:
Введите наименование команды или * для окончания ввода
Веселые медузы
Количество медалей: золото, серебро, бронза: 4 6 10
Введите наименование команды или * для окончания ввода
Юные сурки
Количество медалей: золото, серебро, бронза: 2 0 5
Введите наименование команды или * для окончания ввода
Черепашки-ниндзя
Количество медалей: золото, серебро, бронза: 3 7 11
Введите наименование команды или * для окончания ввода
*
Результаты олимпиады
1: Черепашки-ниндзя(3 зол, 7 сер, 11 бронз), очков- 118
2: Веселые медузы(4 зол, 6 сер, 10 бронз), очков- 114
3: Юные сурки(2 зол, 0 сер, 5 бронз), очков- 39
0,0(0 оценок)
Ответ:
Лилия515
Лилия515
03.05.2023 13:28
Обозначу КД = множество результатов поиска по запросу Конан Дойль, БС = Г. Бичер-Стоу, ДД = Джером К. Джером. Кроме того, пересечение множеств обозначим *, объединение +.

A. КД * БС * ДД
Б. КД + БС + ДД
В. КД + БС * ДД
Г. БС * ДД

Сравнивать количества элементов множеств можно, используя трюк: количества элементов соотносятся точно также, как и записанные мною выше выражения, в которых вместо КД, БС, ДД записаны какие-то числа между нулем и единицей. Можно даже просто подставить, например, КД = БС = ДД = 0,1 и посмотреть, что получится.

А. 0,1 * 0,1 * 0,1 = 0,001
Б. 0,1 + 0,1 + 0,1 = 0,3
В. 0,1 + 0,1 * 0,1 = 0,11
Г. 0,1 * 0,1 = 0,01

Б > В > Г > А


Для справедливости всего, что написано, в каждом выражении каждая переменная должна встречаться не более, чем по одному разу.
Трюком можно пользоваться, если известно, что при любых значениях переменных порядок не будет меняться (это условие эквивалентно тому , что задача при любых количествах элементов и любых соотношениях будет разрешима, и ответ не меняется)
Например, рассмотрим пример, который явно не определен однозначно: сравним количество результатов по запросу (A. Конан Дойл & Г. Бичер-Стоу) и (Г. Бичер-Стоу & Джером К. Джером). Следуя методу, надо сравнить при всех возможных 0 < КД, БС, ДД < 1 выражения:
КД * БС и БС * ДД
При разных выборах значений результат будет разным, например:
- КД = БС = 0,1; ДД = 0,2:    0,01 < 0.02
- КД = БС = ДД = 0,1:       0,01 = 0,01
- КД = 0,2; БС = ДД = 0,1:    0,02 > 0.01
Это означает, что без дополнительных условий задача не разрешима.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота