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

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

🟡 04:45 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • 🟡 04:45 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #21
если у вас значение 0 то замените его на 2147483648

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

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

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

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

Как задать правильно условие для нулей?
Найти максимальное и присвоить 0 = MAX+1
 
  • 🟡 04:45 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #24
  • 🟡 04:45 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #25
эм, а если MAX == INT_MAX?
 
  • 🟡 04:45 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #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];
     }
}
 
  • 🟡 04:45 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #27
Неа.. Но лучше решения здесь не видел.. У тебя есть?
Могу предложить не заморачитваться отсортировать как есть и нули перенести в конец..

Код:
char lByte = 255 + 1;

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

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

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

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

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

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

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

Ну и ещё один традиционный вопрос: Как это будет работать с каким-нибудь нормальным по скорости алгоритмом сортировки типа quick sort или merge sort? Желательно в многопоточной среде.
Да все классно, аж блестит. Вообще, мой пост не к вашему решению относился:)
 
  • 🟡 04:45 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #34
Да все классно, аж блестит. Вообще, мой пост не к вашему решению относился:)
А нахрена тогда ещё одна страница флейма обсуждения идеологически неправильного да и не очень работоспособного подхода (модификации алгоритма сортировки под конкретную задачу)?
 
  • 🟡 04:45 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #35
Ответ будет простым и банальным - НАДО ТАК!:D
 
  • 🟡 04:45 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #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.
Такое поведение объясняется тем что на таких процессорах время выполнения операций со знаковыми значениями отличается от времени выполнения беззнаковых значений.
 
Останнє редагування:
  • 🟡 04:45 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #37
А вообще сортировка с массивом только упрощает задачу сортировки. ;)
Что мешает сразу перенести 0 в конец массива и считать неотсортированную часть массива на единицу короче?

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

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