На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение





Сообщение: 1
ссылка на сообщение  Отправлено: 11.03.20 10:39. Заголовок: Вопросы касательно использования языка программирования C во второй части ЕГЭ


Здравствуйте. В процессе рассмотрения теоретического материала по заданиям второй части ЕГЭ, связанные с написанием программ, у меня остались неразрешённые вопросы, которые, к сожалению, ни на каком другом ресурсе толком и не затрагиваются.
1. Динамическое выделение памяти.
Почти в каждой задаче одна из первых строк задаёт число обрабатываемых элементов. По сути говоря, если вместо выделения памяти на стеке под массив, размер которого равен маскимальному числу элементов по условию задачи, выделять память под него в куче в зависимости от реального количества элементов (которое можно узнать из входных данных), то программа получится эффективнее по памяти. Стоит ли так делать в принципе, или лучше вообще избегать динамического выделения памяти? Применимо ли это в том случае, когда в задаче по какой-то причине не указано максимальное число элементов?
2. Использование функций стандартной библиотеки C
На эту тему найти подробную информацию почти что невозможно. Хотелось бы хотя бы узнать мнение специалистов по поводу тех библиотек, которые могли бы быть разрешены для использования.
Понятное дело, что обязательно нужно будет использовать stdio.h (стандартный ввод-вывод и работа с файлами), но как насчёт таких библиотек, как stdlib.h (динамическое выделение памяти), string.h (работа со строками, которая является, в принципе, обязательной в некоторых задачах), stdint.h (целочисленные типы с независимым от среды выполнения размером)?
3. Нуль-терминированные строки
В отличие от Pascal, строки в C являются нуль-терминированными, а кроме того, стандартные средства обработки строк (string.h) являются достаточно скудными - например, отсутствуют процедуры для замены или удаления отдельных строк или символов. Допустима ли в таком случае работа с нуль-терминированными строками - например, замена определённых символов на '/0' с целью, чтобы библиотечные функции корректно обрабатывали строки? Как на подобные ухищрения смотрят проверяющие эксперты?
4. Использование макросов
Это может встречаться довольно редко, но зачастую макросы тоже могут привести к оптимизации программы, и даже улучшению её удобочитаемости. В частности, в отличие от обычных констант, макрос-константа #DEFINE не занимает память на стеке, а макрос-функция #DEFINE позволяет избежать как повторения кода, так и использования функций (например, при повторении одного и того же сложного условия в конструкции if-else). Опять же, как на это смотрят эксперты и стоит ли этого избегать?
5. Использование библиотченых функций stdio.h
В этой библиотеке есть очень удобная функция scanf(), которая позволяет очень удобно обрабатывать вводимую строку. В частности, синтаксис её аргумента, который задаёт ожидаемое форматирование, допускает считывание и отбрасывание значений. Например, обработать строку из имени, фамилии и трёх чисел, разделённых пробелами, в том случае, когда имя и фамилия не нужны, можно следующим образом: scanf("%*s %*s %d %d %d", &a, &b, &c), где a, b, c - переменные целочисленного типа. Поймут ли подобную запись эксперты, если её подробно прокомментировать?
6. Арифметика указателей.
Порой удобно (особенно при работе со строками) вместо оператора доступа к массиву [] использовать сложение/вычитание и разыменовывание указателей. Стоит ли избегать подобной практики, и минимализировать при обработке строк в особом случае, описанном в пункте 3?

Надеюсь, что я подробно разъяснил все вышеприведённые вопросы.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 2 [только новые]


Администратор




Сообщение: 2027
ссылка на сообщение  Отправлено: 11.03.20 10:49. Заголовок: cyber_cool пишет: ил..


cyber_cool пишет:
 цитата:
или лучше вообще избегать динамического выделения памяти?

Лучше избегать. Это источник дополнительных ошибок и непониманий. Это вам нужно?
 цитата:
Применимо ли это в том случае, когда в задаче по какой-то причине не указано максимальное число элементов?

В современных задачах всегда указывается максимальный размер данных там, где нужно загружать их в массив.

 цитата:
по поводу тех библиотек, которые могли бы быть разрешены для использования.

Можно использовать все подключаемые файлы стандартной библиотеки. Если пишете на С++, то и STL.
 цитата:
Допустима ли в таком случае работа с нуль-терминированными строками - например, замена определённых символов на '/0' с целью, чтобы библиотечные функции корректно обрабатывали строки?

Да. Эксперты должны это понять.
 цитата:
Использование макросов Это может встречаться довольно редко, но зачастую макросы тоже могут привести к оптимизации программы, и даже улучшению её удобочитаемости.

Лучше избегать. Ваша цель - не блеснуть своими знаниями, а получить полный балл. С помощью макросов вы не сможете принципиально ускорить программу.
 цитата:
scanf("%*s %*s %d %d %d", &a, &b, &c), где a, b, c - переменные целочисленного типа. Поймут ли подобную запись эксперты, если её подробно прокомментировать?

Можно и не комментировать. Это стандартные возможности языка С.
 цитата:
Арифметика указателей.

Лучше избегать. Это дополнительная возможность ошибиться. Не забудьте, что ваша цель - всячески облегчить работу экспертов и получить максимальный балл.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2
ссылка на сообщение  Отправлено: 11.03.20 11:04. Заголовок: Спасибо за ваш ответ..


Спасибо за ваш ответ, теперь всё стало куда более понятно.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1392
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет