ksvish2012
?>

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

Информатика

Ответы

Узлиян Фурсов1488
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
Иванина
Десятичная -> двоичнаявсё просто, для начала переведем целую часть: делим постоянно на 2 и округляем в меньшую сторону, остаток записываем: 162/2=81, остаток 0 81/2=40, остаток 1 40/2=20, остаток 0 20/2=10, остаток 0 10/2=5, остаток 0 5/2=2, остаток 1 2/2=1, остаток 0 1 < 2, её не делим, считаем за остаток. запишим полученные остатки, снизу вверх: 10100010 - это 162 в двоичной. переводим дробную часть: ! при переводе из системы в систему, дробные части в 99% случаев имеют погрешность и переводить их можно до бесконечности, так что ограничемся 6 знаками после запятой. в переводе дробной части, делаем на оборот, не деление, а умножение, но умножение только дробной части: 0.43*2=0.86 0.86*2=1.72 0.72*2=1.44 0.44*2=0.88 0.88*2=1.76 0.76*2=1.52 0.52*2=1.04 так можно продолжать до бесконечности, но мы уже посчитали 6 значений, тут записываем целые части чисел полученных, сверху вниз: 0110111  - это 0.43 в двоичной. просто склеим эти два числа через точку и получим: 162.43 = 10100010.0110111 двоичная -> восьмиричная проще всего перевести в восьмиричную из двоичной, все что нужно, это представить число в виде троек: целая часть: 010'100'010 - целая часть (дописали спереди 0, просто что бы было целая тройка чисел) 011'011'100 - дробная часть (дописали уже два 0 в конце числа, то же что бы было по три цифры) теперь дело за малым, смотрим в прикрепленную картинку, берем целую часть, первые три цифры, смотрим по столбику для двоичной системы, ищем там 010, когда нашли, ведем пальчиком по рядочку на соответствующую цифру в столбике для восьмиричной системы, это будет 2. проделываем ту же операцию для следующих трех цифр: 100 - в восьмиричной это 4, ну и наконец 010 как уже знаем - 2. получается число 242 - целая часть. абсолютно точно так же считаем дробную часть: 011 - 3 011 - 3 100 - 4 дробная часть это 334 склеиваем через точечьку: 242.334 хотите большую точность? не вопрос! делите точно так же как мы переводили из 10чной в 2чную, только теперь не на 2, а на 8, принцип перевода везде одинаковый : ) двоичная -> шеснадцатиричнаятеперь попробуем перевести в 16ричную, у вас этого не написанно, но если это ошибка в условии, то не помешает, если ещё и учесть, что это не сложно! снова простой принцип перевода и табличку, ведь всё что нужно сделать на этот раз, это то ж самое, что и при переводе в восьмиричную, с тем лишь изменением, что формируем не тройки чисел а четверки: целую часть 10100010 для удобства представим так: 1010'0010 дробную часть 01101110 тоже запишем вот так: 0110'1100 тот же алгоритм действий по табличке, только пальцем ведем до столбца с цифрой 16 вверху, получится что 1010 из двоичной в шестнадцатеричной это 'a', ну и так далее: целая часть: 1010 = a 0010 = 2 a2 дробная часть: 0110 = 6 1110 = e 6e уже по классике, склеиваем через точечьку: 162.43 в шестнадцатиричной это a2.6e
bolosolo77
Если обратиться к любому толковому словарю, то можно увидеть, что слово "ресурс" обозначает запас, накопление чего-либо. в современном индустриальном обществе основные усилия направлены на материальное производство, отчего чаще всего и можно встретить с этим термином такие качественные характеристики, как природный, энергетический, финансовый, трудовой и т. д. однако в настоящее время можно услышать понятие "информационные ресурсы общества", которое обозначает знания и опыт человечества, зафиксированные на определенном носителе, пригодном для сохранения и использования информации. сюда можно отнести различные документы, базы данных и знаний, компьютерные программы, а также произведения искусства и результаты научных трудов.  информационные ресурсы общества - это продукт интеллектуальной деятельности людей, который в настоящее время рассматривается, большей частью, как стратегический запас развития, не уступающий по своей значимости материальным ценностям. за исключением некоторых случаев, которые оговариваются в российском законодательстве, эти данные могут быть товаром, на который распространяются права владения, распоряжения и пользования. на информационные ресурсы общества устанавливается правовой режим их формирования и использования. они могут быть как государственными, так и частными, входить в собственность отдельных граждан, общественных организаций, органов власти. если говорить о составе данной категории, то сюда могут входить первичные документы на различных носителях (книги, диски, периодика и т. библиографическая продукция, базы данных и т. д. информационные ресурсы современного общества некоторыми свойствами, которые обусловлены их спецификой. во-первых, это неисчерпаемость, то есть эти запасы можно использовать много раз и с различными целями. 

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

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

Популярные вопросы в разделе

tarasowamash4
bakerkirill
Natalya1070
mira15963256
Пимкина Сергеевич
shhelina
akbmaslafarkop3175
Елизавета Александр2011
ftyh6
Vasilevich Fokin
mishagoride885
Valentina
klepa-79
billl24
fox-cab3444