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

В этом году третий раз одна известная компания проводит соревнование по программированию искусственного интеллекта для игровых стратегий. В этот раз участникам предложили написать искусственный интеллект для управления командой хоккеистов. После проведения очередного тура, Вася решил, что для дальнейшего улучшения своей стратегии необходимо все бои с теми соперниками, которые сопоставимы с ним по проценту побед. Задана таблица результатов боев в раунде. В каждой строке записаны ник соперника Васи и итоговый счет. Первое число показывает, сколько шайб забила стратегия Васи, вторая — сколько шайб забила стратегия соперника. Необходимо подсчитать процент побед каждого участника и вывести результат, отсортировав его в порядке неубывания процентов. Если процент побед оказался одинаковым, то нужно упорядочить записи по никам лексикографически.

Формат ввода
В первой строке входного файла записано целое число N (1 ≤ N ≤ 105) — количество записей в таблице. В каждой из последующих N строк через пробел записаны ник соперника, сколько забила Васина команда и сколько забил соперник. Гарантируется, что каждый ник — непустая строка, длина которой не превосходит 10 символов и состоящая из строчных букв латинского алфавита. Так же известно, что никто из участников не забивал больше 1000 голов.

Формат вывода
В первой строке выходного файла выведите количество соперников. В последующих строках выведите ник соперника и процент побед Васиной команды с точностью не хуже шести знаков после запятой.

Пример 1
Ввод
1
tpusct 1 60
Вывод
1
tpusct 0.0000000000
Пример 2
Ввод
35
v 86 45
v 77 90
pmuehueqm 74 40
mslrsnshk 71 13
fy 43 1
mslrsnshk 76 87
gwpr 37 78
mxzsoel 4 39
pmuehueqm 78 75
v 59 45
gwpr 25 52
bjyaiptxmw 48 48
mxzsoel 13 76
givnyujn 38 70
mslrsnshk 58 66
givnyujn 33 66
pmuehueqm 100 53
pmuehueqm 80 17
pmuehueqm 2 48
mxzsoel 68 4
bjyaiptxmw 43 40
be 81 92
be 34 55
bjyaiptxmw 88 5
mslrsnshk 49 82
givnyujn 91 30
bjyaiptxmw 33 19
bjyaiptxmw 46 17
i 70 35
givnyujn 38 55
pmuehueqm 7 81
mxzsoel 0 9
i 64 30
v 80 42
mslrsnshk 79 64
Вывод
10
be 0.0000000000
gwpr 0.0000000000
givnyujn 25.0000000000
mxzsoel 25.0000000000
mslrsnshk 40.0000000000
pmuehueqm 66.6666666667
v 75.0000000000
bjyaiptxmw 80.0000000000
fy 100.0000000000
i 100.0000000000 ​

👇
Ответ:
Mariyam005
Mariyam005
05.03.2021

PascalABC.NET 3.5.1

program D_contest;

type

 TStat = record

   nick: string;

   wins, battles: integer;

   proc: real;

 end;

var

 N, i, num: integer;

 str: array of string;

 stat: array of TStat;

 nick: string;

function found(ni_ck: string): integer;

begin

 found := -1;

 for var e := 0 to Length(stat) - 1 do

 begin

   if stat[e].nick = ni_ck then  

   begin

     found := e;

     break;

   end;

 end;

end;

var

 v_pts, e_pts, l_e: integer;  

 F: textfile;

 k: real;

 s: string;

begin

 Assign(F, 'input.txt');

 Reset(F);

 readln(F, n);

 SetLength(str, n);

 SetLength(stat, 1);

 for i := 0 to n - 1 do

 begin

   readln(F, str[i]);    

   //get enemy_nick

   nick := Copy(str[i], 1, Pos(' ', str[i]) - 1);    

   Delete(str[i], 1, Pos(' ', str[i]));

   

   if (stat[0].nick <> '') then

   begin

     num := found(nick);

     if (num = -1) then //not found

     begin

       l_e := Length(stat);

       SetLength(stat, l_e + 1);

       num := l_e;

       stat[num].nick := nick;

     end;

   end

     else

   begin

     stat[0].nick := nick;

   end;

   

   stat[num].battles += 1;

   

     //get Vania_points

   v_pts := StrToInt(Copy(str[i], 1, Pos(' ', str[i])));    

   Delete(str[i], 1, Pos(' ', str[i]));

   

     //get enemy_points

   e_pts := StrToInt(str[i]);

   

   if v_pts > e_pts Then

     stat[num].wins += 1;

 end;

 Close(F);        

 

 //вычисляю процент побед

 for i := 0 to Length(stat) - 1 do

 begin

   stat[i].proc := stat[i].wins / stat[i].battles;  

 end;

 

 //сортировка по процентам

 for i := 0 to Length(stat) - 2 do  

 begin

   for var j := 0 to Length(stat) - i - 2 do  

   begin

     if stat[j].proc > stat[j + 1].proc then  

     begin

       k := stat[j].proc;

       stat[j].proc := stat[j + 1].proc;

       stat[j + 1].proc := k;

       

       s := stat[j].nick;

       stat[j].nick := stat[j + 1].nick;

       stat[j + 1].nick := s;

     end;

   end;

 end;

 

 //сортировка по алфавиту

 for i := 0 to Length(stat) - 2 do  

 begin

   for var j := 0 to Length(stat) - i - 2 do  

   begin

     if (stat[j].proc = stat[j + 1].proc) and (stat[j].nick > stat[j + 1].nick) then  

     begin

       k := stat[j].proc;

       stat[j].proc := stat[j + 1].proc;

       stat[j + 1].proc := k;

       

       s := stat[j].nick;

       stat[j].nick := stat[j + 1].nick;

       stat[j + 1].nick := s;

     end;

   end;

 end;

 

 writeln(Length(stat));

 for i := 0 to Length(stat) - 1 do

 begin

   write(stat[i].nick, ' ');

   writeln(stat[i].proc * 100:0:6);

 end;

end.

Объяснение:

Смотри код

4,7(47 оценок)
Открыть все ответы
Ответ:
2006zahar2006
2006zahar2006
05.03.2021
Виды компьютерной графики    Компьютерная графика - раздел информатики, который изучает средства и создания и обработки графических изображений при компьютерной техники. Несмотря на то, что для работы с компьютерной графикой существует множество классов программного обеспечения, различают четыре вида компьютерной графики. Это растровая графика, векторная графика, трёхмерная и фрактальная графика. Они отличаются принципами формирования изображения при отображении на экране монитора или при печати на бумаге. 

   Растровую графику применяют при разработке электронных (мультимедийных) и полиграфических изданий. Иллюстрации, выполненные средствами растровой графики, редко создают вручную с компьютерных программ. Чаще для этой цели используют отсканированные иллюстрации, подготовленные художником на бумаге, или фотографии. В последнее время для ввода растровых изображений в компьютер нашли широкое применение цифровые фото- и видеокамеры. Соответственно, большинство графических редакторов, предназначенных для работы с растровыми иллюстрациями, ориентированы не столько на создание изображений, сколько на их обработку. В Интернете применяют растровые иллюстрации в тех случаях, когда надо передать полную гамму оттенклв цветного изображения. 

   Программные средства для работы с векторной графикой наоборот предназначены, в первую очередь, для создания иллюстраций и в меньшей степени для их обработки. Такие средства широко используют в рекламных агентствах, дизайнерских бюро, редакциях и издательствах. Оформительские работы, основанные на применении шрифтов и простейших геометрических элементов, решаются средствами векторной графики намного проще. Существуют примеры высокохудожественных произведений, созданных средствами векторной графики, но они скорее исключение, чем правило, поскольку художественная подготовка иллюстраций средствами векторной графики чрезвычайно сложна. 

   Трёхмерная графика широко используется в инженерном программировании, компьютерном моделировании физических объектов и процессов, в мультипликации, кинемотографии и компьютерных играх. 

   Программные средства для работы с фрактальной графикой предназначены для автоматической генерации изображений путем математических расчетов. Создание фрактальной художественной композиции состоит не в рисовании или оформлении, а в программировании. Фрактальную графику редко применяют для создания печатных или электронных документов, но ее часто используют в развлекательных программах.
4,7(40 оценок)
Ответ:
sasha1977al
sasha1977al
05.03.2021
1. Решение "по-взрослому"

// PascalABC.NET 3.2, сборка 1389 от 01.03.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var F:real->real:=x->2*x*x-6*x+8;
  var a,b:real;
  Write('a b= '); Read(a,b);
  Writeln('Min=',Range(a,b,9).Select(x->F(x)).Min)
end.

Пример
a b= -2 6
Min=3.50617283950617

2. Решение "по-школьному" ("дедушкин метод")

function F(x:real):real;
begin
  F:=2*x*x-6*x+8
end;

var
  a,b,y,h,min:real;
  i:integer;
begin
  Write('a b= '); Read(a,b);
  h:=(b-a)/9;
  min:=F(a);
  for i:= 1 to 9 do begin
    y:=F(a+i*h);
    if y<min then min:=y
    end;
  Writeln('Min=',min)
end.

Пример
a b= -2 6
Min=3.50617283950617
4,5(3 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ