Здравствуйте, ggg, Вы писали:
A>>Если он не ответит — значит зря он пошёл учиться. Значит человек занимает НЕ СВОЁ место. ggg>Интересно, а сам спрашивающий может _правильно_ ответить, что такое интеграл Римана и интеграл Лебега? ggg>Или имелось в виду попросить посчитать неопр. интеграл от е в степени х ?
Надеюсь не к Вашему удивлению, но знаю
И не только посчитать, но и с определением и если посидеть, то и кучу доказательств на эту тему вспомню
Здравствуйте, Pzz, Вы писали:
>> Первая 2-ка тоже должна быть локальным экстемумом >> pzz, это так по вашей постановке задачи ?
Pzz>Я об этом умышленно умолчал. Я рад, что Вы это заметили и спросили. В
Сами дали определение:
Локальный максимум — такой элемент массива, который больше своих соседей.
Здравствуйте, aik, Вы писали:
aik>Зря. Программер должен быть способен безо всякой доки налабать хоть и очень тупой, но рабочий алгоритм на любой случай. Если чел на это не способен, то книжки ему ни разу не помогут.
Хм... странная т.з.
Я думаю этого сам Кнут не сможет, "налабать на любой случай".
Программер широкое понятие.
Алгоритмы надо спрашивать там, где на их понимании основана вся работа. Тем более, что алгоритмов миллион штук и разновидностей и подразновидностей.
Здравствуйте, Gorbatich, Вы писали: >>> Первая 2-ка тоже должна быть локальным экстемумом >>> pzz, это так по вашей постановке задачи ? Pzz>>Я об этом умышленно умолчал. Я рад, что Вы это заметили и спросили. В G>Сами дали определение: G>Локальный максимум — такой элемент массива, который больше своих соседей. G>Слева от "2" — нет соседей!!!
Это спорно. На основании исходного задания в этом нельзя быть уверенным.
Здравствуйте, aik, Вы писали:
aik>Здравствуйте, execve, Вы писали:
E>>Последние несколько лет сталкиваюсь с компаниями из US — огромное кол-во менеджеров-индусов, иногда попадаются китайцы, но русских — ни одного.
aik>Все верно. Манагер должен бегло говорить по-английски. Наши — не умеют. А индусы — с малолетства.
А это значит, что причина #2 работать практически не будет.
По моим наблюдениям самый частый случай: поработал наш человек там программистом, оброс связями, договорился с тамошними менеджерами (всё ещё оставаясь программистом), потом чего вернулся сюда и уже здесь стал менеджером аутсоурсящей команды.
Садитесь, два балла.
> #include<stdio.h> > gopstop(int *a, int *k){ > int i; > for(i=1; i<=6; i++) > if(a[i]>a[i-1]&&a[i]>a[i+1]) > *k=*k+1; > }
1) Кому нужна функция, которая работает только с массивом из 6-и элементов?
2) А Вы пробовали скомпилировать свою программу?
3) А зачем целое число возвращать через указатель?
4) Если уж возвращаете, почему инициализировать его должна вызывающая
сторона?
В общем, чем дальше, тем хуже. Я же сразу Вам сказал, Вам не надо
программировать — Вам надо сразу в Большие Начальники.
Я, вообще-то, и раньше предполагал, что люди, которые не хотять знать,
как работает qsort из принципа, программировать в принципе не могут. Но
я не ожидал получить этому столь быстрое и наглядное подтверждение. Спасибо!
> int main(){ > int m=0; > int z[7]={2,1,8,6,3,4,1}; > gopstop(z, &m); > printf("\n%i", m); > > return 0; > }
\n в начале строки — это круто. Это явно способствует формированию
хорошего вкуса у пользователей Вашей программы.
A_l_e_x_e_y wrote: > > Pzz>>Я об этом умышленно умолчал. Я рад, что Вы это заметили и спросили. В > G>Сами дали определение: > G>Локальный максимум — такой элемент массива, который больше своих соседей. > G>Слева от "2" — нет соседей!!! > > Это спорно. На основании исходного задания в этом нельзя быть уверенным.
Мда. Вот с Вами я бы поговорил насчет возможного сотрудничества, если бы
у меня были открытые вакансии...
Спасибо за очередную демонстрацию локальной победы разума над коллективной мыслью.
Вообще такие вот простенькие задачки очень хорошо позволяют оценить человека в первом приближении. имхо, конечно.
В частности:
— дефенсивность кода — ассерты, проверки, эксепшены — depends on предметной области и необходимости.
— краевые условия задачи, частные случаи
— обобщенность (отвлеченность от конкретных входных данных), и в то же время отсутствие излишней обобщенности (i.e. виртуальные интерфейсы и шаблонные функции )
— адекватность — когда на задачку дают 2 минуты, ее нужно сразу же закодить, а над душой сидят 2 человека — почти все допускают ошибки/описки. По тому, как кандидат реагирует на наводящие вопросы, которые могут вывести его на правильный путь — очень многое можно сказать о человеке
xtile wrote: > > — адекватность — когда на задачку дают 2 минуты, ее нужно сразу же > закодить, а над душой сидят 2 человека — почти все допускают > ошибки/описки. По тому, как кандидат реагирует на наводящие вопросы, > которые могут вывести его на правильный путь — очень многое можно > сказать о человеке
Мы, кстати были не такимы злыми. Мы давали несколько задачек, объясняли,
как найти туалет, и выходили на час-полтора из комнаты
Pzz>1) Кому нужна функция, которая работает только с массивом из 6-и Pzz>элементов?
Если я и сделаю "умный" список, то наверное не бесплатно и уж явно не чтобы сюда кинуть.
Pzz>2) А Вы пробовали скомпилировать свою программу?
0 err, 1 warn — забыл слово void
Pzz>3) А зачем целое число возвращать через указатель?
Не люблю конструкции типа y=f(x). Предпочитаю f(x,&y).
Поработайте с большим объемом дыннах — узнаете почему.
Pzz>В общем, чем дальше, тем хуже.
а дальше только распечатка
Pzz>Я же сразу Вам сказал, Вам не надо Pzz>программировать — Вам надо сразу в Большие Начальники.
Сразу не быывает. Только универ закончил.
Pzz>Я, вообще-то, и раньше предполагал, что люди, которые не хотять знать, Pzz>как работает qsort из принципа, программировать в принципе не могут. Но Pzz>я не ожидал получить этому столь быстрое и наглядное подтверждение. Pzz>Спасибо!
Может быть когда-нибудь я буду вашим начальником Но я не буду таким занудным это уж точно )
>> int main(){ >> int m=0; >> int z[7]={2,1,8,6,3,4,1}; >> gopstop(z, &m); >> printf("\n%i", m); >> >> return 0; >> }
Pzz>\n в начале строки — это круто. Это явно способствует формированию Pzz>хорошего вкуса у пользователей Вашей программы.
Каждый считает себя самым умным. Удачи Вам в этом, возможно, заблуждении.
Gorbatich wrote: > > Pzz>1) Кому нужна функция, которая работает только с массивом из 6-и > Pzz>элементов? > > Если я и сделаю "умный" список, то наверное не бесплатно и уж явно не > чтобы сюда кинуть.
Сколько же Вы хотите получить за решение этой простенькой задачки?
> Pzz>Я же сразу Вам сказал, Вам не надо > Pzz>программировать — Вам надо сразу в Большие Начальники. > > Сразу не быывает. Только универ закончил.
Надо было МГИМО заканчивать.
> Pzz>Я, вообще-то, и раньше предполагал, что люди, которые не хотять знать, > Pzz>как работает qsort из принципа, программировать в принципе не могут. Но > Pzz>я не ожидал получить этому столь быстрое и наглядное подтверждение. > Pzz>Спасибо! > > Может быть когда-нибудь я буду вашим начальником Но я не буду таким > занудным это уж точно )
Вот это вряд ли. Но и я Вашим начальником тоже вряд ли буду
Pzz wrote: > xtile wrote: > >>— адекватность — когда на задачку дают 2 минуты, ее нужно сразу же >>закодить, а над душой сидят 2 человека — почти все допускают >>ошибки/описки. По тому, как кандидат реагирует на наводящие вопросы, >>которые могут вывести его на правильный путь — очень многое можно >>сказать о человеке > > > Мы, кстати были не такимы злыми. Мы давали несколько задачек, объясняли, > как найти туалет, и выходили на час-полтора из комнаты
sigsegv wrote: > >> Мы, кстати были не такимы злыми. Мы давали несколько задачек, объясняли, >> как найти туалет, и выходили на час-полтора из комнаты > > ну так взяли кого-нибудь в итоге-то ?
Здравствуйте, aik, Вы писали:
aik>Здравствуйте, LuciferMoscow, Вы писали:
LM>>У меня знакомая преподает в ВУЗе. В таком выражение: LM>>dx/dt букву d сокращали! aik>боян. Нам его еще училка в школе рассказывала
Так я все время считал это анекдотом. А тут в реале такое...
Gorbatich wrote: > > Pzz>\n в начале строки — это круто. Это явно способствует формированию > Pzz>хорошего вкуса у пользователей Вашей программы. > > Каждый считает себя самым умным. Удачи Вам в этом, возможно, заблуждении.
Вы, кстати, не расстраивайтесь так. Вы смелый человек — кроме Вас никто
не рискнул выставить свой код на публичное обсуждение. Думаю, многие из
тех, кто сейчас сидит и посмеивается, выступили бы не лучше Вас...
sigsegv wrote: > > Pzz wrote: >> >> Вы, кстати, не расстраивайтесь так. Вы смелый человек — кроме Вас никто >> не рискнул выставить свой код на публичное обсуждение. > > Можно и выставить
О Боже! Я не построить список локальных максимумов. Я просил подсчитать
их количество!
Ну давайте вашу алгоритму тоже поругаю, если уж Вам так хочется.
Грубые ошибки:
1. Случай пустого массива (size == 0) не обработан. На пустом массиве
Ваша програмка просто упадет, слазив в a[1].
2. Если про крайние элементы можно еще поспорить, являются ли они
локальными максимумами, или нет, по причине отсутствия соседа с одной
стороны, то уж единственный элемент массива из одного элемента точно на
локальный максимум не тянет
3. Неправильно понято условие задачи — просили количество локальных
максимумов, а не их список. Фактически, поставленная задача не решена.
Придирки:
1. Зачем Вам отдельный терминирующий элемент в списке? Вполне хватило
бы того, что у последнего элемента next == NULL
2. Мне очень не нравится макрос ADD. Он трогает переменные,
определенные вокруг него, но в том месте, где этот макрос вызывается,
этого не видно.
3. Логику, которая аллоцирует память, проверяет на NULL и завершает
программу, я бы предпочел видеть в одном месте, а не размазанную по
всему коду.
4. Зачем эти сравнения с INT_MIN?
5. С крайними элементами эффективнее разобраться вне цикла. Впрочем
ладно, забудем пока про эффективность.
6. Когда Вы печатаете числа printf'ом, было бы неплохо хоть чем-нибудь
их разделять.
7. Зачем нужен fflush(stdout) прямо перед exit'ом. Горе от ума?
8. Я бы не стал называть локальную переменную словом, которое является
зарезервированным в C++ (я имею ввиду, new).
Результат, конечно, лучше, чем у предыдущего оратора, но общем, тоже
цирк с кОнями
И главное, зачем надо было так выпендриваться?...
> #include <stdio.h> > #include <stdlib.h> > #include <limits.h> > #include <err.h> > > struct e_list { > struct e_list *next; > int ind; > }; > > int > find_max(int *a, int size, struct e_list **e) > { > int i; > struct e_list *new; > > #define ADD do { \ > new = calloc(1, sizeof(*new)); \ > if (new == NULL) { \ > errx(1, "get more ram"); \ > } \ > new->ind = i; \ > new->next = *e; \ > *e = new; \ > } while(0) > > if (size < 0) { > return -1; > } > > if (size == 1) { > i = 0; > ADD; > return 0; > } > > for (i = 0; i <= size — 1; i++) { > if (i == 0) { > if (a[i] > INT_MIN && a[i] > a[i + 1]) { > ADD; > } > } else if (i == size — 1) { > if (a[i] > a[i — 1] && a[i] > INT_MIN) { > ADD; > } > } else { > if (a[i] > a[i — 1] && a[i] > a[i + 1]) { > ADD; > } > } > } > > return 0; > } > > int > main() > { > struct e_list *e, *curr; > int l[] = {2, 1, 4, 1, 1, 1, 5, 6}; > int rc; > > e = calloc(1, sizeof(*e)); > if (e == NULL) { > errx(1, "get more ram"); > } > > rc = find_max(l, sizeof(l)/sizeof(l[0]), &e); > if (rc != 0) { > errx(1, "shit happens!"); > } > > while (e->next != NULL) { > fprintf(stdout, "%5i", e->ind); > curr = e; > e = e->next; > free(curr); > } > > fprintf(stdout, "\n"); > fflush(stdout); > > free(e); > > return 0; > } >