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

Написать программу подведения итогов олимпийских игр,программу пользователь должен ввести кол-во медалей разного достоинства заваёваной каждой командой участниц,а программа должна посчитать общее число медалей и соотвествующие число очков,после чего упорядочить список в соответствии с набранным кол-ом очков за золотую 7очков,серебряная 6 очков,бронзовая 5очков.

👇
Ответ:
вопрос65378
вопрос65378
09.11.2020
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
4,5(77 оценок)
Открыть все ответы
Ответ:
BashProcker
BashProcker
09.11.2020

1.Я неуверен на 100% в 1 задаче.

Если весь текст состоит из К символов, то приалфавитном подходе размер содержащийся в ней информации I определяется по формуле:
I=K*x,
где х—информационный вес одного символа в используемом алфавите.

РЕШЕНИЕ:
Всего у нас 10 символов: 0,1,2,3,4,5,6,7,8,9.
I=K*x, 10*8=80 бит
80*80=6400 бит
ответ:6400 бит.

2.Пусть в некотором сообщении содержатся сведения о том, что произошло одно из N равновероятных событий. Тогда кол-во информации x, заключенное в этом сообщении, и число событий N связаны формулой:
2^х=N

РЕШЕНИЕ:
2^x=8
2^3=8
ответ: 3 бит.

4,8(21 оценок)
Ответ:
Рассмотрим различные варианты слов из 20 букв, которые содержат 18 букв Т (звёздочка обозначает любую из оставшихся 10 букв):
ТТТТТТТТТТТТТТТТТТ**
ТТТТТТТТТТТТТТТТТ**Т
...
**ТТТТТТТТТТТТТТТТТТ - 19 вариантов

ТТТТТТТТТТТТТТТТТ*Т*
ТТТТТТТТТТТТТТТТ*ТТ*
ТТТТТТТТТТТТТТТ*ТТТ*
...
*ТТТТТТТТТТТТТТТТТТ* - 18 вариантов

ТТТТТТТТТТТТТТТТ*Т*Т
ТТТТТТТТТТТТТТТ*ТТ*Т
ТТТТТТТТТТТТТТ*ТТТ*Т
...
*ТТТТТТТТТТТТТТТТТ*Т - 17 вариантов
   ...
Т*Т*ТТТТТТТТТТТТТТТТ
*ТТ*ТТТТТТТТТТТТТТТТ - 2 варианта

*Т*ТТТТТТТТТТТТТТТТТ - 1 вариант

19+18+17+...+2+1 = 190

Для решения задачи можно также использовать формулу для вычисления числа перестановок с повторениями:
P( n_{T}, n_{*}) = \frac{( n_{T}!+ n_{*}! )}{ n_{T}! n_{*}!}
P(nт,n*) = (18+2)!/(18!*2!) = 20!/(18!*2!) = 19*20/2 = 190

Вместо каждой из "*" может стоять любой из десяти символов (кроме Т), то есть на каждую из 190 перестановок мы имеем 10^2 = 100 вариантов распределения остальных символов на месте звёздочек.
Общее количество вариантов = 190*100 = 19000
4,8(9 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ