Требуется програмист со знанием алгоритмов
Требуется програмист со знанием алгоритмов
Я придумал программу, но не могу составить к ней алгоритм поэтому ищу человека который мог бы это сделать.
Нужная программа очень экономит время для тех кто опаздывает куда нибудь)
подробнее здесь:Irc.lan.du канал school№8 ник Unknown
Нужная программа очень экономит время для тех кто опаздывает куда нибудь)
подробнее здесь:Irc.lan.du канал school№8 ник Unknown
Последний раз редактировалось unknown 27 ноя 2010, 18:06, всего редактировалось 1 раз.
Re: Требуется програмист со знанием алгоритмов
По ссылке:
Опишите здесь, что за алгоритм, требуемый язык исполнения, сроки и бюджет проекта.
Код: Выделить всё
Илья ограничил доступ к своей странице.
Код: Выделить всё
Аватар: нет мозга
Опишите здесь, что за алгоритм, требуемый язык исполнения, сроки и бюджет проекта.
- Filimon Кykyev
- Сообщения: 15458
- Зарегистрирован: 18 апр 2008, 22:15
- Откуда: БВ-ЛБ
- Контактная информация:
Re: Требуется програмист со знанием алгоритмов
Дока, кто ж по таким сцылкам ходит и смысл жизни ищет, у тебя что "нет мозга"?
![Smile :smile:](./images/smilies/smile.gif)
![Wink :wink:](./images/smilies/wink.gif)
![Smile :smile:](./images/smilies/smile.gif)
Re: Требуется програмист со знанием алгоритмов
и так, Бюджет это общественные начала, я не могу оценить проект.
язык м не помню, но вобщем обычное окно не помню как называется, можете писать в мирку #school№8
ник Unknown
язык м не помню, но вобщем обычное окно не помню как называется, можете писать в мирку #school№8
ник Unknown
Re: Требуется програмист со знанием алгоритмов
ну, что, составили алгоритм? теперь можно грабить корованы? ![ROFL :ROFL:](./images/smilies/rofl.gif)
![ROFL :ROFL:](./images/smilies/rofl.gif)
Re: Требуется програмист со знанием алгоритмов
Сегодня что, день археолога?
Re: Требуется програмист со знанием алгоритмов
не ну фигле, ветка ж мёртвая. надо пнуть.Basileos писал(а):Сегодня что, день археолога?
-
- Сообщения: 29
- Зарегистрирован: 07 май 2014, 12:54
Re: Требуется програмист со знанием алгоритмов
Так хотя бы само ТЗ к алгоритму выложил, так поупражняться на досуге. Жадина прямо:). Может тут бы его и соорудили бы:).Basileos писал(а):Сегодня что, день археолога?
- LuckyOne [away]
- Сообщения: 4466
- Зарегистрирован: 14 сен 2012, 16:52
Re: Требуется програмист со знанием алгоритмов
Держи простенькую задачку на поупражняться, для любого строго типизированного языка типа плюсов или джавы.
Дан массив в N (10,100,1000...N) элементов фиксированного типа INT (знаковый - как положительные, так и отрицательные), в котором могут встретиться элементы, близкие по модулю к INT_MAX, но общей суммой гарантированно меньше INT_MAX. Сложи все элементы данного массива, используя исключительно промежуточные переменные того же типа INT (т.е. никаких более размерных типов). Ответ надо отдать тоже типом INT.
зы: естественно, для получения правильного ответа нужно избежать переполнения типа при сложении.
Дан массив в N (10,100,1000...N) элементов фиксированного типа INT (знаковый - как положительные, так и отрицательные), в котором могут встретиться элементы, близкие по модулю к INT_MAX, но общей суммой гарантированно меньше INT_MAX. Сложи все элементы данного массива, используя исключительно промежуточные переменные того же типа INT (т.е. никаких более размерных типов). Ответ надо отдать тоже типом INT.
зы: естественно, для получения правильного ответа нужно избежать переполнения типа при сложении.
Re: Требуется програмист со знанием алгоритмов
Тогда надо запретить использование любого типа алгоритмов сортировки=)
Linux laptop 3.13.0-35-generic Ubuntu
Gnome, Tmpk, Tp-Link(WiFi), Dvb(36E)
Gnome, Tmpk, Tp-Link(WiFi), Dvb(36E)
Re: Требуется програмист со знанием алгоритмов
Я тут с температурой и сильно думать не получается.
Но вроде как решается без всяких сортировок и в один проход по массиву. Ну и две переменные, одна под результат, другая - своего рода стек разрядов.
Но вроде как решается без всяких сортировок и в один проход по массиву. Ну и две переменные, одна под результат, другая - своего рода стек разрядов.
Re: Требуется програмист со знанием алгоритмов
И N должно быть меньше MAX_INT. :)
- LuckyOne [away]
- Сообщения: 4466
- Зарегистрирован: 14 сен 2012, 16:52
Re: Требуется програмист со знанием алгоритмов
хорошо, пусть первым будет отсортированный массив вида: [ -INT_MAX + 1, -INT_MAX + 2, 0, +INT_MAX - 2, +INT_MAX - 1]. Алгоритм кое-где всё равно нужен, да? :)Ism писал(а):Тогда надо запретить использование любого типа алгоритмов сортировки=)
Итить! Не подсказывать, пусть человек сам домучает алгоритм. И проверку на переполнение без эксепшнов и переполнений соорудит.Ega23 писал(а):Я тут с температурой и сильно думать не получается.
Но вроде как решается без всяких сортировок и в один проход по массиву. Ну и две переменные, одна под результат, другая - своего рода стек разрядов.
Re: Требуется програмист со знанием алгоритмов
Век живи - век учись. В процессе написания теста выяснил одну любопытную фишку. Сижу и гуглю, так ли это.
UPD. В натуре туплю из-за температуры. Вспомнил, что уже с таким сталкивался.
UPD. В натуре туплю из-за температуры. Вспомнил, что уже с таким сталкивался.
Re: Требуется програмист со знанием алгоритмов
Тоже мне, бином Ньютона. Обычное сложение с переносом (hw - для хранения переноса, lw - младшая часть):
Кстати, этот как раз тот случай, когда на ассемблере такое сложение - ровно две машинные инструкции (add+adc), а на языке более высокого уровня надо огород городить.
Код: Выделить всё
void add(int& hw, int& lw, int x)
{
int sum = lw + x;
lw = (sum & (INT_MAX+1U)) ? (((x > 0) ? ++hw : --hw), sum & INT_MAX) : sum;
}
// использовать так:
int hw(0), lw(0);
for (int i = 0; i < array_size; ++i)
add(hw, lw, array[i]);
// результат будет в lw; для общего случая резуьтат = lw + hw*(INT_MAX+1U)
- LuckyOne [away]
- Сообщения: 4466
- Зарегистрирован: 14 сен 2012, 16:52
Re: Требуется програмист со знанием алгоритмов
Ну почти есть решение! Вот только представим, что у нас не ассемблер конкретного процессора, и мы не знаем, что получится в результате lw + x или INT_MAX+1U. Implementation defined. overflow_error. Да мало ли еще какая бяка.. Короче, надо бы это как-то обойти, да? Языки высокого уровня компилируются на разных процессорах, и нам нужно, чтобы результат был предсказуем.SaaBaka писал(а):Кстати, этот как раз тот случай, когда на ассемблере такое сложение - ровно две машинные инструкции (add+adc), а на языке более высокого уровня надо огород городить.
Re: Требуется програмист со знанием алгоритмов
Тоже смутило.LuckyOne [away] писал(а):INT_MAX+1U. Implementation defined. overflow_error.
INT_MIN использовать можно? А то уж больно геморно старший бит выставлять, бо размер INT заранее не указан.
Re: Требуется програмист со знанием алгоритмов
На всех известных мне процессорах (x86, x64, ARM, MIPS, SPARC, IA64, плюс всякие микроконтроллеры) получится именно это - старший бит в целых используется для знака, не зависимо от длины слова. И не будет никаких overflow.LuckyOne [away] писал(а):Ну почти есть решение! Вот только представим, что у нас не ассемблер конкретного процессора, и мы не знаем, что получится в результате lw + x или INT_MAX+1U.
Можете привести обратный пример
![Very Happy :D](./images/smilies/biggrin.gif)
Ну а если вы такие занудные и не хотите работать с битами, вместо проверки старшего бита можно использовать условие sum < x.
И я еще застал девайсы вроде i8048, где вообще не было инструкции SUB :)
Re: Требуется програмист со знанием алгоритмов
Если по-хрестоматийному, то надо INT_MAX привести к беззнаковому, прибавить единицу, и после этого привести к знаковому.SaaBaka писал(а):старший бит в целых используется для знака, не зависимо от длины слова. И не будет никаких overflow.
Хотя чё-й та я торможу. INT_MIN = not INT_MAX.
Re: Требуется програмист со знанием алгоритмов
Запись INT_MAX+1U именно это и означает. Буква U там не просто так :) А вообще INT_MAX = ((1 << (INT_BITS - 1) - 1), если INT_BITS - ширина целого значения в битах.
Re: Требуется програмист со знанием алгоритмов
Я понимаю. Я не настолько хорошо владею сями, чтобы сходу такие весчи читать, но гугл ещё никто не отменял.SaaBaka писал(а):Запись INT_MAX+1U именно это и означает.
Но изначально в условии говорилось о языке со строгой типизацией.
В том же пацкале запись
const
c = 1;
даст разный результат в разных версиях компилятора.
Точнее, sizeof(c) даст разный результат.
А приведение этой пихни к Variant вообще чудеса даёт.
Re: Требуется програмист со знанием алгоритмов
Ну так мой вариант работает при любой ширине слова. Хоть char туда подставь (и заменив INT_MAX на SCHAR_MAX). Можно вообще эти ...MAX не использовать, а вместо него (1 << (sizeof(n)*8 - 1) - 1), где n может быть целым любого типа/любой длины. Просто лаки хотел INT_MAX, а мне не жалко :)
- LuckyOne [away]
- Сообщения: 4466
- Зарегистрирован: 14 сен 2012, 16:52
Re: Требуется програмист со знанием алгоритмов
Устал сегодня, лень писать самому. Отделаюсь копипастой :)
Никаких MAX+1, исключительно вычитания и больше-меньше. Причем кроссплатформенные :)
Код: Выделить всё
int add(int lhs, int rhs) {
if (lhs >= 0 && rhs >= 0) {
if ( ( INT_MAX - lhs ) <= rhs) {
/* overflow has occurred */
}
}
else if (lhs < 0 && rhs < 0) {
if (lhs <= ( INT_MIN - rhs ) ) {
/* overflow has occurred */
}
}
}
Re: Требуется програмист со знанием алгоритмов
Я так понимаю, что Лаки хотел сравнений (INT_MAX - x).
Хотя я уже всё, не соображаю совсем, 39,2.
Хотя я уже всё, не соображаю совсем, 39,2.
Re: Требуется програмист со знанием алгоритмов
Мой вариант короче, проще и быстрее :) И в общем-то не менее кроссплатформенный, для всех практических применений.
![Embarassed :oops:](./images/smilies/blush.gif)
![Embarassed :oops:](./images/smilies/blush.gif)