Код: Выделить всё
struct s
{
...
int a;
};
struct s * func(int * a_ptr)
{
if (*a_ptr > 0)
return *func(*a_ptr-1);
if (*a_ptr < 0)
return *func(*a_ptr+1);
else
return 0;
}
Код: Выделить всё
struct s
{
...
int a;
};
struct s * func(int * a_ptr)
{
if (*a_ptr > 0)
return *func(*a_ptr-1);
if (*a_ptr < 0)
return *func(*a_ptr+1);
else
return 0;
}
(по-русски говоря пытаются вернуть структуру, тогда как следует возвращать указательна на структуру) там ещё одна ошибка, когда в параметрах рекурсивного вызова передают целое значение вместо указателя на целое - func (*a_prt ...).return *func для функции func
[trn]temp писал(а):[trn]ne obrashchaja vnimanija na sintaksicheskie oshibki i prochie melochi, predlagaetsja ugadat', chto imenno dolzhna byla delat' [/trn]func()
По крайней мере логично ( что менеджер задал такой вопрос джуниору). Лично мне вообще ничего не приходит на ум.temp:
не обращая внимания на синтаксические ошибки и прочие мелочи, предлагается угадать, что именно должна была делать func()
Функция должна рецурсивно вызывать сама себя абс(Н)-1 раз. В итоге когда параметр станет 0, функция вернется.
Код: Выделить всё
void sample()
{
struct s tmp;
assert(&tmp == func(&tmp.a));
}
[trn]pozvol'te vam, tovarishch, posovetovat' perechitat' original'nyj vopros.MarkM писал(а): [trn]
Cel' dannogo zadanija, ponjat' kak ekzamenuemyj ponimaet logiku raboty programmy, kak abstagiruetsja ot melochej i sintaksicheskih oshibok. T.e. vidit li on les za derevjami.
[/trn]
А мне, например, это неочевидно, глупый я наверное...temp писал(а):[trn]vnimanie, pravil'nyj otvet[/trn]
func() [trn]vozvrashaet ukazatel' na strukturu po ukazatelju na ee pole [/trn]a[trn]. wto mozhno bylo v principe ponjat' iz togo chto (a) vopros [/trn]entry-level[trn] (b) parameter nazyvaetsja[/trn] a_ptr [trn]i vozvrashchaetsja ukazatel' na strukturu. chto eshche mozhno sdelat' s pointerom, ne znaja detalej struktury krome imeni odnogo polja? (vopros ritoricheskij)[/trn]
Код: Выделить всё
void sample() { struct s tmp; assert(&tmp == func(&tmp.a)); }
1)внимание, правильный ответ
func() возврашает указатель на структуру по указателю на ее поле a. это можно было в принципе понять из того что (а) вопрос entry-level (б) параметер называется a_ptr и возвращается указатель на структуру.
Код: Выделить всё
struct s
{
...
int a;
};
Ах...Хотя жизнь пока убеждает в обратном.
Вы, Мармот, сами говорили, что работали преподавателем. Тем более некоректно так говорить о джуниорах, имхо ("придурошные").А придурочные junior developers иногда такую туфту гонят...
Согласен. Но, не то чтобы некоректно. Здесь временный тестер людских голов показал нечто другое.Так что, вопрос был некорректный, имхо.
Вот ведь как!!! А я думал для изготовления исполняемого (выполнимого) кодаДля проверки синтаксиса есть компилятор.
1) Woozy, listen to me... No offence, But ... очень невнимательно читаешь мои постинги. Я постил, что в примере "временщика" это невозможно сделать, т.к. многоточие у него стоит перед int a. Стало быть - определить смещение не представляется возможным.Запросто, если a - первый члена в структуре, смещение - 0.