singlepost

переведите, плз, задание? << На главную или назад  

функция возвращает строку, которая получается из строки С1 путем побитной дизъюнкции со строкой С2

Как это может быть? Дизъюнкция, это "Или" как я понимаю %)

11 ответов в теме “переведите, плз, задание?”

  1. 11
    Алена Кулехова ответил:

    даа)) за это огромное спасибо))

  2. 10
    Александр Чазов ответил:

    Не будем гадать как правильно а как нет. Как это часто бывает, задание требует уточнения. Мало информации. Не указан язык, тип "строк" … хорошо еще что дизъюнкция а не XOR :)

    По заданию – все выполнено, 2 строки на входе, одна на выходе, применена побитная дизъюнкция. Правильно ли она применена или нет, полностью или частично, тут не указано :)

    Главное "перевели автору задание".

  3. 9
    Алексей Гридин ответил:

    Эм символ окончания?? а потом вы приводите код на делфи. Паскалевские строки это не нуль-терминальные.
    Собственно всё это неважно, не про то речь. В задании сказано, что на вход подаются две строки, а на выходе одна. Про то, что они будут одинаковой длины – ни слова. Как следствие задача решена неверно.

  4. 8
    Александр Чазов ответил:

    > Ведь отсутствие символов во второй строке – нулевые байты.
    Зависит от конкретной реализации. Нельзя гарантированно сказать что после последнего символа строки есть нули. Ну один нуль понятно – символ окончания, а после!? там может быть все что угодно, да и извлечение символа с несуществующей позиции выдаст ошибку.
    Тогда:
    Извлекать символы в цикле с проверкой, и задавать символ 00, если указатель вышел за пределы строки

    For I:=1 to Max( Length(Str1),Length(Str2) ) do begin
    if I<=Length(Str1) then Ch1:=Str1[I] else Ch1:=#00;
    if I<=Length(Str2) then Ch2:=Str2[I] else Ch2:=#00;
    Str3:=Str3+chr( ord(Ch1) OR ord(Ch2) ) ;
    end;

    что то типа такого)

    можно еще сравнить строки
    скопировать наибольшую, и в ней произвести замену первых символов напросуммированные с символами короткой

  5. 7
    Алексей Гридин ответил:

    А зачем одинаковая длина? Ведь отсутствие символов во второй строке – нулевые байты. То есть непарные символы первой строки передадутся без изменений.

  6. 6
    Алена Кулехова ответил:

    спасибо, Александр, Ягами-сан))

  7. 5
    Александр Чазов ответил:

    дизъюнкция как и любая другая логическая функция может быть применена не только к логическому типу (множество {0,1} ) но и к байтам данных.
    то есть, байт = 8 логических значений или 8 бит. операция OR будет применена для каждого бита.
    "Byte1 OR Byte2" вернет Byte3, составленный из битов
    (1.1 or 2.1).(1.2 or 2.2 )…(1.8 or 2.8 )
    Например:
    10110000 (176) OR 11000010(194) =11110010(242)
    ———————————–
    > функция возвращает строку, которая получается
    > из строки С1 путем побитной дизъюнкции со строкой С2

    тебе надо брать от каждой строки по одному символу(переводить их в байты)и складывать их операцией OR.
    Внимание: необходимо чтобы Длины С1 и С2 были одинаковы.

  8. 4
    Алена Кулехова ответил:

    побитной дизъюнкции со строкой С2

  9. 3
    Роман Дынник ответил:

    дизъюнкция – это функция двух переменных (они же – операнды операции). Переменные могут принимать значения из множества {0,1}. Результат также принадлежит множеству {0,1}. Вычисление результата производится по простому правилу, либо по таблице истинности. Вместо значений {0,1} может использоваться любая другая пара подходящих символов, например"ложь", "истина".
    Правило: результат равен 0, если оба операнда равны 0; во всех остальных случаях результат равен 1.

  10. 2
    Подмогаев Свят ответил:

    а это уже верно!!

  11. 1
    Алена Кулехова ответил:

    это-то я понимаю, а вот что делать с этим заданием – нет..

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.