Змінюй хід війни! Допомагай ЗСУ!

Помогите решить задачу на С+

🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #21
если у вас значение 0 то замените его на 2147483648

а почему не на 9223372036854775808? Это-же удобно, и код легко читаем :іржач:
Код:
value=(value^9223372036854775808)?value:~(value|0777777777777777777777);
 
Останнє редагування:
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #22
Не буду создавать новую тему, прошу совета в решении задачи сортировки.
есть к примеру массив

int A[7] = {5, 15, 10, 16, 0, 0, 10};

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

5,6,10,10,16,0,0

Как задать правильно условие для нулей?
Найти максимальное и присвоить 0 = MAX+1
 
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #23
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #24
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #25
эм, а если MAX == INT_MAX?
 
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #26
а почему не на 9223372036854775808? Это-же удобно, и код легко читаем :іржач:
Код:
value=(value^9223372036854775808)?value:~(value|0777777777777777777777);

на теоретическую задачу и теоретический вариант решения ;-)
как вариант еще один способ попробую сгенерить:
Код:
sortmas(mas);//сортируем массив по человечески
zerocounter = 0;
int resultmas[max_val];//не помню как именно в C++ создавать массив *стыдно*
for(int i=0;i<max_val;i++)
{
     if(mas[i] == 0)
     {
            resultmas[max_val - zerocounter] = 0;
            zerocounter++;
     }
     else
     {
             resultmas[i] = mas[i];
     }
}
 
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #27
Неа.. Но лучше решения здесь не видел.. У тебя есть?
Могу предложить не заморачитваться отсортировать как есть и нули перенести в конец..

Код:
char lByte = 255 + 1;

Чему будет равно lByte?

А вообще сортировка с массивом только упрощает задачу сортировки. ;)
Что мешает сразу перенести 0 в конец массива и считать неотсортированную часть массива на единицу короче?

P.S. Под "сразу" понимается во "время сортировки", когда 0 попадается впервые.
 
Останнє редагування:
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #28
Неа.. Но лучше решения здесь не видел.. У тебя есть?
Могу предложить не заморачитваться отсортировать как есть и нули перенести в конец..

Уважаемые batu, Lam и ASokol, а чем вас не устраивает моё решение без всяких там хитроумных пред- и пост-обработок?

Что мешает сразу перенести 0 в конец массива и считать неотсортированную часть массива на единицу короче?
P.S. Под "сразу" понимается во "время сортировки", когда 0 попадается впервые.
А можно чуть подробнее описать, как это самое "перенести в конец, когда 0 попадается впервые" будет работать с каким-нибудь нормальным по скорости алгоритмом сортировки типа quick sort или merge sort?
 
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #29
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #30
Код:
char lByte = 255 + 1;
Чему будет равно lByte?это зависит от опций компилятора, с которыми компилировали этот код :)

Чистое любопытство: какими C/C++ компиляторами нужно пользоваться и какие настройки выбрать, чтобы получить хотя бы 2 разных варианта?
 
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #31
эм... проверяйте, если у вас значение 0 то замените его на 2147483648, после чего пройдитесь в конце по массиву и присвойте значениям 2147483648 значение 0. вариант калечный, но вероятность того, что в вашем массиве будет столь большое число практически нулевая
зы: еще считайте количество нулей в массиве, и заменяйте число 2147483648 на 0 с конца массива, тогда вариант да же будет правильно работать при условии что у вас в массиве да же будут числа равные 2147483648.
А не проще завести счетчик, который при встрече в очередном члене массива значения 0 будет инкрементироваться, а после сортировки по возрастанию в конец отсортированного массива доблавляется столько нулевых значений, сколько содержится в счетчике?:зуби:
 
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #32
А не проще завести счетчик, который при встрече в очередном члене массива значения 0 будет инкрементироваться, а после сортировки по возрастанию в конец отсортированного массива доблавляется столько нулевых значений, сколько содержится в счетчике?:зуби:
TornadoDF, а Вы можете ответить, чем вас не устраивает моё решение без всяких там хитроумных пред- и пост-обработок?

Ну и ещё один традиционный вопрос: Как это будет работать с каким-нибудь нормальным по скорости алгоритмом сортировки типа quick sort или merge sort? Желательно в многопоточной среде.
 
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #33
TornadoDF, а Вы можете ответить, чем вас не устраивает моё решение без всяких там хитроумных пред- и пост-обработок?

Ну и ещё один традиционный вопрос: Как это будет работать с каким-нибудь нормальным по скорости алгоритмом сортировки типа quick sort или merge sort? Желательно в многопоточной среде.
Да все классно, аж блестит. Вообще, мой пост не к вашему решению относился:)
 
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #34
Да все классно, аж блестит. Вообще, мой пост не к вашему решению относился:)
А нахрена тогда ещё одна страница флейма обсуждения идеологически неправильного да и не очень работоспособного подхода (модификации алгоритма сортировки под конкретную задачу)?
 
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #35
Ответ будет простым и банальным - НАДО ТАК!:D
 
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #36
Чистое любопытство: какими C/C++ компиляторами нужно пользоваться и какие настройки выбрать, чтобы получить хотя бы 2 разных варианта?

многие процессоры физически не могут оперировать 8-битными значениями, на таких процессорах тип char в языке си имеет разрядность процессора, зачастую char имеет 16 или 32 разряда,т.е. способен хранить 32 битные числа. При этом sizeof(char)=1, т.к. байт на таких процессорах имеет 16 или 32 бита

Зачастую в некоторых компиляторах также бывает что тип char (без указания знаковости) является беззнаковым. Т.е. char - это на самом деле unsigned char. Например, если мне не изменяет память, компилятор IAR C для MSP430 компилирует по умолчанию тип char как unsigned char, но в опциях компилятора можно задать поведение наоборот, т.е. тип char будет интерпретироваться как signed char.
Такое поведение объясняется тем что на таких процессорах время выполнения операций со знаковыми значениями отличается от времени выполнения беззнаковых значений.
 
Останнє редагування:
  • 🟢 10:40 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #37
А вообще сортировка с массивом только упрощает задачу сортировки. ;)
Что мешает сразу перенести 0 в конец массива и считать неотсортированную часть массива на единицу короче?

P.S. Под "сразу" понимается во "время сортировки", когда 0 попадается впервые.

Во время сортировки очень плохо. Там вложеные циклы будут. Не эффективно. Либо перед сортировкой в цикле, либо после. Лучше перед. Можно уменьшить массив для сортировки
 
Назад
Зверху Знизу