Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
#1

В древности этим преподаватели якобы"убивали" зарвавшихся студентов - C++

15.12.2012, 12:34. Просмотров 1219. Ответов 28
Метки нет (Все метки)

Мне рассказали историю, что этот вопрос валил студентов напрочь

"напишите прототип функции, принимающей в качестве одного из своих аргументов, указатель на такую же функцию"
Вопрос - это задание имеет смысл?
Можно ли его выполнить.
И в чем подвох?
Может это просто бессмыслица?

Так как мне в такой теоретической постановке ничего подобного делать не приходилось.
Подскажите пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2012, 12:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В древности этим преподаватели якобы"убивали" зарвавшихся студентов (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

Обработка структур "Преподаватели" - C++
Создать структуру, которая состоит из следующих полей: факультет (основное место работы преподавателя), фамилия преподавателя, группа, с...

что дальше? (программа вводит информацию из ведомости и печатает фамилии студентов, учащихся на "4". "5" и их процентное соотношение с другими) - C++
Ведомость о результатах зимней сессии содержит информацию: фамилия и инициалы студента, номер группы, оценки с 3-х предметов: а)...

Класс "Студент", реализовать динамический список "Группа студентов" - C++
реализовать динамический список " группа студентов". Узел: -группа -фамилия Функции списка: -добавление по алфавиту ...

Результаты сдачи экзамена группой из N сту-дентов находятся в массиве REZ. Подсчитать количество студентов, сдавших экзамен на "хорошо" и "отлично" - C++
Задача 68. Результаты сдачи экзамена группой из N сту-дентов находятся в массиве REZ. Подсчитать количество студентов, сдавших экзамен на...

Структура: Вывести тех студентов, кто сдал оба экзамена либо на "4" либо на "5" - C++
Условие задачи: Дана ведомость студентов: Фамилия студента, оценка_1, оценка_2. Вывести тех студентов, кто сдал оба экзамена либо на...

28
Croessmah
Эксперт CЭксперт С++
13425 / 7579 / 856
Регистрация: 27.09.2012
Сообщений: 18,668
Записей в блоге: 3
Завершенные тесты: 1
15.12.2012, 17:47 #16
Цитата Сообщение от nsl Посмотреть сообщение
Но написать можно , что бы посмотреть как все рухнет :-)
В смысле рухнет?
0
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
15.12.2012, 18:13  [ТС] #17
Цитата Сообщение от Croessmah Посмотреть сообщение
В смысле рухнет?
Зациклится, уйдет в период, зависнет. Из обсуждения я понял так.
Я просто ни разу не сталкивался. Но подозревал бессмысленность затеи. Типа как померить бесконечность в миллиметрах :-)
0
Croessmah
Эксперт CЭксперт С++
13425 / 7579 / 856
Регистрация: 27.09.2012
Сообщений: 18,668
Записей в блоге: 3
Завершенные тесты: 1
15.12.2012, 18:14 #18
Цитата Сообщение от nsl Посмотреть сообщение
Зациклится, уйдет в период, зависнет.
Ну так никто не мешает сделать условие выхода, чтобы не зациклилось ничего.
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
15.12.2012, 18:14 #19
Именно по Вашему заданию - нельзя вообще написать такой прототип.
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.12.2012, 18:21 #20
Цитата Сообщение от nsl Посмотреть сообщение
"напишите прототип функции, принимающей в качестве одного из своих аргументов, указатель на такую же функцию"
Словосочетание "русский язык" само вполне русское.

Добавлено через 2 минуты
Цитата Сообщение от WhiteP Посмотреть сообщение
Все варианты ведут либо к переполнению стека, либо к нарушению доступа, либо к бессмысленности таковой функи (вернее такого прототипа).
Разве? Во-первых почитай ка про рекурсию. Во-вторых очередной параметр может быть NULL. В третьих по параметру не обязательно вызывать, он может использоваться в одной ветви, а исполнение пойти по другой.

Добавлено через 2 минуты
Цитата Сообщение от nsl Посмотреть сообщение
наверняка в реальном коде это можно решить по другому.
Можно. А можно и по-индусски написать вполне осмысленную прогу.

Добавлено через 43 секунды
Цитата Сообщение от nsl Посмотреть сообщение
Преподаватель просто издевался.
Нет. Он просто ищет среди своих учеников будущего хакера.
0
Kastaneda
Форумчанин
Эксперт С++
4656 / 2864 / 228
Регистрация: 12.12.2009
Сообщений: 7,276
Записей в блоге: 2
Завершенные тесты: 1
15.12.2012, 19:19 #21
Nick Alte, первый раз вижу такой typedef
C++
1
typedef void foofunc(footype);
что-то не догоняю, как можно создать экземпляр (не указатель) этого типа?
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
15.12.2012, 19:34 #22
Kastaneda, как я понял, создается простой прототип функции.
Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
typedef void foo( int );
 
int main() {
   foo b;
 
   b( 10 );
 
   return 0;
}
 
void b( int num ) {
   std::cout << num << std::endl;
}
Добавлено через 1 минуту
EDIT: наверно правильнее будет сказать создается сигнатура а не прототип.
1
Kastaneda
15.12.2012, 20:44
  #23

Не по теме:

Ну да, что-то сам не додумался. Век живи - век учись

0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
15.12.2012, 21:20 #24
Цитата Сообщение от Kastaneda Посмотреть сообщение
как можно создать экземпляр (не указатель) этого типа?
Экземпляр (с телом функции) нельзя, но в данном случае оно нам и не надо, достаточно указателей/ссылок/объявлений.
1
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
16.12.2012, 10:52  [ТС] #25
Все таки удалось от моего собеседника добиться МУ, он утверждает что условиям соответствует всего лишь одна строчка кода. И с видом павлина удалился.:-)

C++
1
void func(void (*)(...));
Честно говоря я смущен. Кто что может подсказать?
0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
16.12.2012, 11:00 #26
Параметр - указатель на функцию, принимающую произвольный набор параметров. Указатель на саму эту func не может быть приведён к такому типу неявно, только через принудительный reinterpret_cast. То есть, мы не можем просто вызвать func(func);, приходится преобразовывать, а значит, это не решение. С тем же (на самом деле, даже с бОльшим) успехом можно было бы преобразовывать указатель на void func(unsigned long). С практической точки зрения, здесь открывается простор для всяких ошибок и неприятных вещей.
1
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
16.12.2012, 11:10  [ТС] #27
Дискуссия чисто теоретическая. Поэтому всем спасибо за участие.
0
Kastaneda
Форумчанин
Эксперт С++
4656 / 2864 / 228
Регистрация: 12.12.2009
Сообщений: 7,276
Записей в блоге: 2
Завершенные тесты: 1
16.12.2012, 13:01 #28
Цитата Сообщение от nsl Посмотреть сообщение
Все таки удалось от моего собеседника добиться МУ, он утверждает что условиям соответствует всего лишь одна строчка кода. И с видом павлина удалился.:-)

C++
1
void func(void (*)(...));
У меня была така мысль, но я не стал ее озвучивать. Потому что в условии сказано
"напишите прототип функции, принимающей в качестве одного из своих аргументов, указатель на такую же функцию"
и приведенный выше прототип ни как не соответствует поставленой задаче.
1
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
16.12.2012, 13:34  [ТС] #29
Цитата Сообщение от Kastaneda Посмотреть сообщение
У меня была така мысль, но я не стал ее озвучивать. Потому что в условии сказано

и приведенный выше прототип ни как не соответствует поставленой задаче.
В принципе мне и нужно было мнение сведующего специалиста, спасибо. Из дискуссии мне понятно, что мой собеседник просто что то подзабыл :-)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2012, 13:34
Привет! Вот еще темы с ответами:

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Не компилируется, ошибки: "отсутствует оператор, соответствующий этим операндам" - C++
Помогите исправить ошибку, данные проект создавался в среде eclipse при переносе на VS 2010 стал выдавать ошибки при компиляции. Исправьте...

"Отсутствует оператор >> соответствующий этим операндам" - в чем ошибка? - C++
в книге приводится пример. main (){ string a=&quot; &quot;; string b; while (cin&gt;&gt;b) { if (a==b){ cout&lt;&lt;&quot;Повторяющееся слово...

Ошибка: отсутствует оператор "<<", соответствующий этим операндам - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;windows.h&gt; #include &lt;conio.h&gt; struct Student //объявляем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Yandex
Объявления
16.12.2012, 13:34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru