ЗМАГАННЯ ЗАВЕРШЕНО
Номінація:
C/C++
Автор:
Наталія Козоріз
Команда:
"Юний програміст" Центру ТТМ
Завдання 1

Написати програму, яка перевіряє чи встановлений біт введеного з клавіатури цілого знакового числа а в заданій позиції b за допомогою комбінації бітових операцій.

Приклад роботи програми:

Будь-ласка введіть ціле число: 23423

Будь-ласка введіть бітову позицію позицию: 4

Біт в позиції 4 встановлений

Двійкова форма числа числа 23423 : 101101101111111

 


ОПИС РОБОТИ:
Опис результатів

Завдання 2

Написати програму, що виводить на екран бітове представлення (тобто двійковий розклад) заданого користувачем беззнакового цілого числа.

Для виведення результату (готового бітового представлення) дозволяється використовувати тільки функцію посимвольного виведення putchar. Будь-які інші функції для виводу бітового уявлення, а так само стандартні функції перетворення типів, такі як itoa (), використовувати заборонено.

Приклад роботи програми:

Пожалуйста введите беззнаковое целое: 4564

Битовое представление этого числа: 00000000 00000000 00010001 11010100

 


ОПИС РОБОТИ:
Опис результатів

Завдання 3

Дано цілочислену квадратну матрицю порядку 5. Отримати цілочисельну квадратну матрицю того ж порядку, в якій елемент дорівнює одиниці, якщо відповідний йому елемент вихідної матриці більше елемента, розташованого в його рядку на головній діагоналі, і дорівнює нулю в іншому випадку.

Числа на головній діагоналі залишити без змін.

Приклад роботи програми:

                               Вихідна матриця:

 

1       3       -1      1       2

3       -1      -1      -4      2

4       -4      3       -4      -3

-3      4       -4      -5      -2

-4      3       -5      -2      0

 

                                         Результат:

1       1       0       0       1

1       -1      0       0       1

1       0       3       0       0

1       1       1       -5      1

0       1       0       0       0

 


ОПИС РОБОТИ:
Опис результатів

Завдання 4

Завдання від Шерлока Холмса. Зашифруйте введене з клавіатури речення наступним чином: спочатку вибираються два довільних слова з базового речення, яке "зашите" в тексті програми, потім слово з речення, що шифрується, потім знову два слова з базового речення, після чого - знову слово з речення і т.д.

Допустимі символи - прописні кириличні букви; роздільний символ  ‘_’.

Приклад:

Речення, що шифрується:

ДЕЛО_ЗАКОНЧЕНО_ХАДСОН_РАССКАЗАЛ_ВСЕ_БЕРЕГИТЕСЬ

Базове речення:

С_ДИЧЬЮ_Я_ПОЛАГАЮ_ГЛАВА_ПРЕДПРИЯТИЯ_ПО_СВЕДЕНИЯМ_О_МУХОБОЙКАХ_ФАЗАНЬИХ_КУРОЧЕК

Результат шифровки:

С_ДИЧЬЮ_ДЕЛО_Я_ПОЛАГАЮ_ЗАКОНЧЕНО_ГЛАВА_ПРЕДПРИЯТИЯ_ХАДСОН_ПО_СВЕДЕНИЯМ_РАССКАЗАЛ_О_МУХОБОЙКАХ

_ВСЕ_ФАЗАНЬИХ_КУРОЧЕК_БЕРЕГИТЕСЬ

 


ОПИС РОБОТИ:
Опис результатів

Завдання 5

Програма-помічник політика-початківця.

Перенесіть 5 груп фраз (див. Таблицю 1 та Додаток) у програму у якусь структуру даних. Складіть програму автоматичної генерації мови для політика, яка складається з п'яти фраз вибираючи випадковим чином фрази з кожного стовпчика масиву. Текст таблиці дивись у ДОДАТКУ до цього завдання в підрозділі ВИХІДНІ ФАЙЛИ.

Таблиця 1. Шпаргалка для політика

Товарищи (Господа, сограждане)!

реализация намеченных плановых заданий

играет важную роль в формировании

существующих финансовых и административных условий.

С другой стороны

рамки и место обучения кадров

требуют от нас анализа

дальнейших направлений развития.

Не следует, однако, забывать, что

постоянный количественный рост и сфера нашей активности

требуют определения и уточнения

системы массового участия.

Таким образом

сложившаяся структура организации

способствуют подготовке и реализации

позиций, занимаемых участниками в отношении поставленных задач.

Повседневная практика показывает, что

новая модель организационной деятельности

обеспечивают широкому кругу (специалистов, предпринимателей, депутатов) участие в формировании

новых предложений.

Значимость этих проблем настолько очевидна, что

дальнейшее развитие различных форм деятельности

позволяют выполнить важные задания по разработке

направлений прогрессивного развития.

Разнообразный и богатый опыт

постоянное информационное обеспечение нашей деятельности

в значительной степени обусловливает создание

системы обучения кадров, соответствующей насущным нуждам.

Задача организации, в особенности же

управления и развития структуры

позволяет оценить значение

соответствующих условий активизации.

Идейные соображения высшего порядка, а также

консультация с широким активом

представляет собой интересный эксперимент проверки

модели развития.

Равным образом

начало работы по формированию верных позиции

влечет за собой интересный процесс внедрения и модернизации

форм воздействия.

Приклад роботи програми:

С другой стороны начало работы по формированию верных позиции влечет за собой интересный процесс внедрения и модернизации существующих финансовых и административных условий. 

 

 Не следует, однако, забывать, что постоянный количественный рост и сфера нашей активности обеспечивают широкому кругу участие в формировании модели развития. 

 

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

 

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

 

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

 

Вихідні файли
Таблица 1. Шпаргалка для политика.docx Таблица 1. Шпаргалка для политика.docx



ОПИС РОБОТИ:
Опис результатів

ОБГОВОРЕННЯ:
2013-01-25 18:56 Адміністратор:
Доброго вечора, учасникам! За декілька хвилин розпочнеться довгоочікуваний онлайн конкурс з С++ . Сподіваюсь ми побачимо цікаве змагання. Бажаю усім успіхів!
2013-01-25 18:57 Адміністратор:
ОСНОВНІ ІНСТРУКЦІЇ - для того, щоб прикріпити роботу до завдання, необхідно на сторінці свого проекту перейти в режим редагування (натиснути на олівець в правому верхньому кутку). Після цього під кожним завданням з`являться олівчики для завантаження файлів. Після того, як файл завантажився, рекомендується перевірити коректність завантаження - для цього збережіть його назад на свій комп`ютер та перегляньте зміст.
2013-01-25 19:14 Євген Задорожній:
Что значит "встановлений біт" и с какой стороны он считается?
2013-01-25 19:18 Адміністратор:
Євгене, це запитання до судді. Чекаємо на його відповідь.
2013-01-25 19:21 Николай Сергеев:
0000 0001 1-й бит 0000 0010 2-й
2013-01-25 19:21 Николай Сергеев:
Справа налево отсчет битов
2013-01-25 19:24 Николай Сергеев:
Задание сводиться к тому, чтобы проверить конкретный бит он установленый, то есть в значении "1" или не установленый, то есть в значении "0".
2013-01-25 19:24 Євген Задорожній:
С отсчётом понятно, но тогда почему в примере написано, что "Біт в позиції 4 не встановлений" ?=) Спасибо.
2013-01-25 19:28 Николай Сергеев:
Да там ошибка
2013-01-25 19:46 Євген Задорожній:
Що має містити опис результатів?)
2013-01-25 19:51 Николай Сергеев:
Если вы про задание 2 то там к результатам отностися собственно двоичное представление числа
2013-01-25 19:53 Євген Задорожній:
Не, я про то что для каждой программы отведено: "Опис результатів та файл з програмою:". Вот в этот "Опис результатів" нужно что-нибудь писать?
2013-01-25 19:55 Адміністратор:
Якщо є що додати, то можна змінити, інакше можна залишати.
2013-01-25 19:57 Николай Сергеев:
Главное загружайте именно исходник *.cpp, а не исполняемый файл программы
2013-01-25 20:04 Pavel Remygailo:
Там не ошибка, просто отсчёт ведётся слева направо. Пример считается правильным.
2013-01-25 20:17 Николай Сергеев:
Нет там и справа и слева 4-й бит - "1"
2013-01-25 20:17 Николай Сергеев:
Я когда резудльтат вывода программы переводил скопировал не ту строку
2013-01-25 20:18 Николай Сергеев:
Пожалуйста ввдеите целое число: 23423 Пожалуйста ввдеите битовую позицию: 4 Бит в позиции 4 установлен Двоичное представление числа 23423 : 101101101111111 Для продолжения нажмите любую клавишу . . .
2013-01-25 20:19 Николай Сергеев:
Это результат работы программы
2013-01-25 20:19 Николай Сергеев:
А отчет идет от младшего бита к старшему
2013-01-25 20:21 Николай Сергеев:
А младшая цифра во всех совремнных системах исчисления находится справа. Самая старшая цифра - слева. Например десятичное число 456 - младшая цифра 6, потом цифра 5, потом цифра 4.
2013-01-25 20:27 Олександр Громовий:
До завдання 5 іде додаток - текстовий файл із таблицею фраз. завантажити його можна із сторінки ЗАВДАННЯ. В особистих проектах учасників лінк на завантаження додатку не відображається.
2013-01-25 20:27 Євген Задорожній:
А в первом задании, если число отрицательное, выводить его как 32-битное? Дополнительный код же...
2013-01-25 20:30 Євген Задорожній:
А ладно, не важно это=)
2013-01-25 20:31 Николай Сергеев:
Правильно но размер все равно тот же. самый старший бит - последний справа первый слева устанавливается в единицу
2013-01-25 20:33 Pavel Remygailo:
Николай Сергеев, а отсчёт разве не с нулевого бита?
2013-01-25 20:34 Pavel Remygailo:
Значит, считать всё-таки справа, как у нормальных людей?
2013-01-25 20:36 Николай Сергеев:
поэтому и диапазон возможных значений у unsigned int от 0 до 4 294 967 296, а у int - 2 147 483 648 до 2 147 483 647
2013-01-25 20:37 Pavel Remygailo:
І як вводиться матриця? З клавіатури, рандомом, з файлу?
2013-01-25 20:38 Николай Сергеев:
Еще раз принцип адресации младший бит по младшему адресу, младший байт по младшему адресу именно так, за исключением особіх случаев. Адрес младшего бита, байта 0-й. Почему ві решили что єто не так я не знаю.
2013-01-25 20:40 Николай Сергеев:
Матрицу можно рандомом, можно с клавиатуры, можно из файла - как вам будет удобнее
2013-01-25 20:41 Николай Сергеев:
Насчет особенностей адресации еще раз повторяю отсчет справа - налево!
2013-01-25 20:43 Николай Сергеев:
Кто не верит пусть сделает побитовый сдвиг единицы влево несколько раз и каждый раз выведет на экран значение переменной куда эта единица была занесена.
2013-01-25 20:48 Євген Задорожній:
В общем, я готов. Можете проверять=)
2013-01-25 20:50 Адміністратор:
Євгене, конкурс ще не закінчився :) . Результати будуть опубліковані у понеділок о шостій.
2013-01-25 21:00 Микола Красан:
Завантажив те, що встиг зробити за 40 хвилин. P. S. Реалізація другого не відповідає завданню
2013-01-25 21:03 Адміністратор:
Вітаю із завершенням конкурсу! Які враження? Як завдання конкурсу?
2013-01-25 21:08 Євген Задорожній:
Давать в заданиях кирилицу - жестоко. Ибо сделать её тем, кто ни разу с ней дела в консоли с++ не имел - геморой ещё тот=) Ещё в пятой задаче мне понравилось: "у якусь структуру даних". Я вот всё думал, что же выбрать: массив или самобалансируемое двоичное дерево поиска=)
2013-01-25 21:16 Олександр Громовий:
Євгене, уточни будь-ласка дату народження на особистій сторінці, а то будеш йти в режимі "Поза конкурсом".
2013-01-25 21:17 Олександр Громовий:
А також усім цікаво знати де вчишся :)
2013-01-25 21:43 Євген Задорожній:
Вказав.
2013-01-25 21:50 Олександр Громовий:
О, виявляється, Євгене, ти не з Київа, а з славетного Запоріжжя :)
2013-01-28 23:10 Pavel Remygailo:
" Pavel Remygailo Задача 1. Сделана. Но есть комбинации при которых программа работает некорректно. При числе например 4 (0100) если поставить проверку бита № 0 и №1. Нужно либо сделать для таких ситуаций отдельную обработку с помощью if, либо сдвигать маску, а не число, либо вести отчет битов с 1-го по 8-й в этом случае сдвиг осуществлять не на position а на (position-1)." Пробачте, але Ви, здається, перевіряли не мій код. Перевірка значення біта працює бездоганно для всіх варіантів. 4,0 - не встановлено 4,1 - не встановлено 4,2 - встановлено (нумерація від 0 до 63 з права наліво). Інша проблема, що сьогодні зловив переповнення буфера при перетворенні, хоча при здачі його ніби не було - проблема в неініціалізованому буфері, в котрому останній байт за задумкою мав бути термінуючим нулем, з. №2 static_cast - стандартний оператор С++, він не входить в STL. С-подібне перетворення (type-id)value зводиться до static_cast, або, якщо це неможливо, то reinterpret_cast, після чого, при необхідності(якщо змінюються кваліфікатори const і/або volatile) виконується const_cast. №3 Згоден, переплутав result[i][j] з matrix[i][j] :) №5 включено, все працює. Для розробки використовував Microsoft Visual Studio 2008 Professional (Version 9.0.21022.8 RTM) Компілятор відповідний.
2013-01-28 23:11 Pavel Remygailo:
*№5 включено
2013-01-28 23:12 Pavel Remygailo:
Ох уже цей парсер. < time.h > включено.
2013-01-28 23:31 Pavel Remygailo:
Як я розумію, останні 3 рядки відповіді також адресовані мені. Про using namespace - це не дуже хороша практика, особливо, якщо в коді буде кілька просторів імен - можлива колізія, а простори імен як-раз і вигадані для того, щоб уникати колізії. Хоч в даному проекті цього і не може статися, але звички погано впливають. Більш прийнятним варіантом є using std::cout.
2013-01-28 23:40 Pavel Remygailo:
Ще хочу зазначити особливість коду рішення 5-ого завдання від Євгена Задорожнього - метода написання коду copy&paste - можна помітити по зміні стилю виклику звернення до елементів простору std - в заголовку написано using nmespace std, а при перевантаженні оператора використовується повне ім`я зі специфікацією простору імен. Крім того, скопійований випадково метод "split" хоч і використовує вектор із STL, але не використовується взагалі. Мертвий код. Крім того, якщо в інших рішеннях успішно використовувалася функція setlocale, то тут навіщось використано непотрібне перевантаження(навіть два) оператора. А рішення зроблено через масиви, і можливості STL не використано взагалі.
2013-01-29 00:51 Олександр Громовий:
Павле, спасибі за коментарі, суддя через деякий час дасть на них відповідь. Просимо вас вказати коректну дату народження, місто, а також місце навчання.
2013-01-29 00:53 Олександр Громовий:
Також для усіх учасників прохання - додайте якусь аватарку собі на особисту сторінку, - набагато приємніше та легше іншим користувачам переглядати списки та рейтинги.
2013-01-29 22:40 Євген Задорожній:
Pavel Remygailo.П 1) Щодо "рішення зроблено через масиви, і можливості STL не використано взагалі" мені здається, що у відгуку про мою роботу суддя переплутав номера 4 і 5. Дійсно, в 5-ій задачі можливості STL не використовуються, а ось 4-а задача повністю на них (stringstream, vector, string). 2) Усі 5 задач я робив у одному проекті, і через це при переході з 4-ої задачі на 5-у забув стерти зайве, яке і залишилось "мертвим кодом" ( це відноситься і до split, і до перевантажених операторів). 3) Перевантажені оператори та функція SetConsoleCP(1251) дозволяють працювати з кирилицею у консолі і при виводі, і при вводі, тоді як setlocale, якщо не помиляюсь, лише при виводі. Саме через це я і використав їх у задачі №4. 4) Дійсно, ці перевантажені оператори я використовував раніше, і узяв готовий код, який був під рукою. Та я не бачу правила, яке б забороняло використовувати prewritten code. Тим паче, не варто забувати, що це - заочне змагання.
2013-01-30 00:29 Pavel Remygailo:
Євген Задорожній, почитав код. Вірю.
2013-01-30 21:04 Николай Сергеев:
Євген Задорожній благодарю за то что помогли прояснить ситуацию. Действительно я имел в виду задачу № 4. Pavel Remygailo. Так же благодарю за активное участие. Признаю static_cast - оператор С++ который не входит в STL. По задаче 1 да ошибка переполнения наблюдается уже при выводе результата. При чем в моем случае именно на значениях 4 (0100) и 6 (0110) при запросе 0-го бита. Но в любом случае она имеет место, поэтому общая рекомендация для всех - тестировать программу в том числе для крайних случаев (начало/конец выделенного объема памяти). Что касается using namespace - это я привел для примера. Пространство имен в полученном мной исходном коде объявлено не было, как не был объявлен и хидер / . Отсюда и такая постановка комментария в отзыве.