Как исправить ноль на один

Заменить 0 на 1; 1 на 0 Turbo Pascal Решение и ответ на вопрос 383943

Slim_py

47 / 47 / 42

Регистрация: 17.10.2011

Сообщений: 136

1

14.11.2011, 20:37. Показов 4275. Ответов 1

Метки нет (Все метки)


Здесь нужно заменить в строке все единицы на нули и наоборот
Вот у меня ошибку выдает там где я обращаюсь к процедуре… что не правильно, исправьте пожалуйста!

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
program proga_3;
var s:string; k:integer;
procedure zam(n:integer; s:string; var r:integer);
var i:integer;
begin
   for i:=1 to length(s) do
      begin
         if n=1 then
            n:=0;
         if n=0 then
            n:=1;
      end;
end;
begin
   writeln('Введите строку символов');
   readln(s);
   zam(length(s),s);
   writeln(s)
end.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

14.11.2011, 20:37

Ответы с готовыми решениями:

Процедура: заменить в текстовом файле каждую цифру на следующую по величине (‘9’ заменить на ‘0’)
Используя подпрограмму-процедуру, заменить в текстовом файле каждую цифру на следующую по…

В каждой строке матрицы max элемент заменить на 1, а min заменить на 0
Матрица F в каждой строке Max элемент заменить 1, а min заменить 0.

Заменить каждую букву «а» предшествующем символом. Если буква «а» первая, то заменить ее на последнюю.
Напишите пожалуйста решение!СПАСИБО!
Заменить каждую букву «а» предшествующем символом. Если буква…

массиве А(n) каждый элемент, заменить суммой всех предыдущих элементов первый заменить на 0
помогите пожалуйста!
Например, в массиве 5 чисел: 1,2,3,4,5 Они должны заменяться таким образом: A…

1

2 / 2 / 2

Регистрация: 27.09.2011

Сообщений: 26

14.11.2011, 20:43

2

в процедуре три параметра, а при вызове вводишь только два

Цитата
Сообщение от Slim_py
Посмотреть сообщение

zam(length(s),s);



0



как из 0 сделать 1 используя только арифметические операторы (любые), но не используя никких аргументов??

Очевидно, что только арифметическими операциями (сложение, вычитание, умножение и деление) из нуля ничего другого не получишь. Поэтому в задаче, очевидно, подразумевается использование любых математических операций.

Вариантов может быть (наверное) много, вот два «с ходу»:

1) 0! + 0! + 0! + 0! + 0!
(! — знак факториала) .

2) exp(0)+exp(0)+exp(0)+exp(0)+exp(0)
exp(x) = e^x — экспонента

3) cos(0) + cos(0) + cos (0) + cos (0) + cos (0)
и т. д. , и т. п.

Замечание предыдущему ответившему: выражение 0^0 не определено. К тому же Ваша запись потребовала не пять, а десять нулей.

0! = 1? или почему факториал нуля равен единице

Давным давно, еще в классе 10-ом (лет 8 назад) я случайно обнаружил довольно нехитрое объяснение того, почему факториал нуля равен единице.

Я рассказывал про это многим учителям, но никого не торкнуло. Поэтому я просто выложу это знание здесь, а то вдруг кому-то пригодится или наведет на определенные мысли. Сразу скажу я не математик, наткнулся на это случайно, когда игрался с числами. Я тогда даже не знал что такое факториал 🙂

Для начала вспомним общую теорию:

Факториа́л числа n — произведение всех натуральных чисел до n включительно:

image

По определению полагают 0! = 1. Факториал определён только для целых неотрицательных чисел.

На самом же деле факториал нуля вполне вычислим!
Для этого нам нужно проделать простую последовательность обычных математических операций.

Попробуем в действии на примере факториала n = 4 (4! = 1 * 2 * 3 * 4 = 24)

    Сначала берем последовательность из n + (1 или больше) чисел, где каждое последующее число больше предыдущего на 1.

На выходе получаем ряд чисел количество которых меньше на 1:

50 110 194
(110 — 50) (194 — 110)

60 84
(84 — 60)

Попробуем вычислить этим способом факториал 3 (3! = 1 * 2 * 3 = 6)

Берем четыре числа в степени 3 и вычисляем «пирамидальную разность» (сам придумал)

1 3 2 3 3 3 4 3
1 8 27 64
(8 — 1) (27 — 8) (64 — 27)

7 19 37
(19 — 7) (37 — 19)

12 18
(18 — 12)

Ну и для 1 попробуем (1! = 1)

Вы уже догадались? 🙂

Все очень просто и для нуля:

Берем n + 1 чисел в степени 0, тоесть достаточно и одного

Вуaля! Любое число в степени 0 равно 1. В этом, кстати, слабость моего способа, он использует определение.

Преобразование 0 в 1 и наоборот

На самом деле существует бесконечное число полиномов, которые будут отображать от 1 до 0 и наоборот. Например:

возьмите скрепку. Уладьте это. Это 1. Согните его так, чтобы он соответствовал своим концам. Это 0. Чтобы сделать его 1, выпрямить его.

Они, вероятно, ожидали, что вы будете использовать побитовое не

Некоторые Тригонометрические: COS (PI * N)^2

Я не могу поверить, что люди забыли модуля:

Это не лучший, но он работает:

Я думаю, вы могли бы сделать ABS (VAR — 1), но я думаю, что ваши подходы более элегантны

-n в JavaScript. Он преобразует 1 в -1, который представлен как 11111111 , затем переворачивает биты 00000000 что равно 0. Второй отрицательный знак не влияет на 0. С другой стороны, если n 0, то первый отрицательный знак не имеет никакого эффекта, Тильда переворачивает биты, а второй отрицательный знак преобразует -1 до 1.

Это должно работать для любых двух чисел.

(EDIT: глядя на другие ответы, я, возможно, неправильно понял вопрос. но мне все равно нравится мой ответ 🙂

In some part of my Python program I have a val variable that can be 1 or 0. If it’s 1 I must change to 0, if it’s 0 I must change to 1.

How do you do it in a Pythonic way?

if val == 1:
    val = 0
elif val == 0:
    val = 1

it’s too long!

I did:

swap = {0: 1, 1:0}

So I can use it:

swap[val]

Other ideas?

Asclepius's user avatar

Asclepius

54.5k16 gold badges157 silver badges139 bronze badges

asked Nov 22, 2009 at 17:10

Juanjo Conti's user avatar

Juanjo ContiJuanjo Conti

28.3k39 gold badges107 silver badges132 bronze badges

3

This isn’t pythonic, but it is language neutral. Often val = 1 - val is simplest.

answered Nov 22, 2009 at 17:13

CB Bailey's user avatar

CB BaileyCB Bailey

733k101 gold badges626 silver badges651 bronze badges

6

The shortest approach is using the bitwise operator XOR.

If you want val to be reassigned:

val ^= 1

If you do not want val to be reassigned:

val ^ 1

Asclepius's user avatar

Asclepius

54.5k16 gold badges157 silver badges139 bronze badges

answered Dec 9, 2009 at 3:35

enrnpfnfp's user avatar

1

Since True == 1 and False == 0 in python,

you could just use var = not var

It will just swap it.

answered Nov 22, 2009 at 17:13

YOU's user avatar

YOUYOU

118k34 gold badges186 silver badges218 bronze badges

9

Just another possibility:

i = (1, 0)[i]

This works well as long as i is positive, as dbr pointed out in the comments it doesn’t work for i < 0.

Are you sure you don’t want to use False and True? It sounds almost like it.

Asclepius's user avatar

Asclepius

54.5k16 gold badges157 silver badges139 bronze badges

answered Nov 22, 2009 at 18:23

Georg Schölly's user avatar

Georg SchöllyGeorg Schölly

123k48 gold badges218 silver badges264 bronze badges

2

In your case I recommend the ternary:

val = 0 if val else 1

If you had 2 variables to swap you could say:

(a, b) = (b, a)

answered Nov 22, 2009 at 18:05

rplevy's user avatar

rplevyrplevy

5,3333 gold badges31 silver badges30 bronze badges

1

To expand upon the answer by «YOU», use:

int(not(val))

Examples:

>>> val = 0
>>> int(not(val))
1

>>> val = 1
>>> int(not(val))
0

Note that this answer is only meant to be descriptive, not prescriptive.

answered Jul 13, 2016 at 21:19

Asclepius's user avatar

AsclepiusAsclepius

54.5k16 gold badges157 silver badges139 bronze badges

I have swapped 0s and 1s in a list.

Here’s my list:

list1 = [1,0,0,1,0]

list1 = [i^1 for i in list1] 
#xor each element is the list

print(list1)

So the outcome is: [0,1,1,0,1]

Pim's user avatar

Pim

8307 silver badges17 bronze badges

answered Oct 11, 2019 at 5:59

Ravi Wray's user avatar

Ravi WrayRavi Wray

1191 silver badge2 bronze badges

Here’s a simple way:

val = val + 1 - val * 2

For Example:

If val is 0

0+1-0*2=1

If val is 1

1+1-1*2=0

answered Oct 14, 2020 at 13:42

wizz's user avatar

1

If you want to be short:

f = lambda val: 0 if val else 1

Then:

>>> f(0)
1
>>> f(1)
0

answered Nov 22, 2009 at 17:19

Loïc Wolff's user avatar

Loïc WolffLoïc Wolff

3,04626 silver badges26 bronze badges

The most pythonic way would probably be

int(not val)

But a shorter way would be

-~-val

nbro's user avatar

nbro

14.8k29 gold badges108 silver badges193 bronze badges

answered May 21, 2017 at 2:41

nog642's user avatar

nog642nog642

5403 silver badges15 bronze badges

Another option:

val = (not val) * 1

tdy's user avatar

tdy

32.6k15 gold badges66 silver badges67 bronze badges

answered Aug 8, 2021 at 17:40

gildniy's user avatar

gildniygildniy

3,1801 gold badge30 silver badges23 bronze badges

Just another way:

val = ~val + 2

answered May 6, 2015 at 10:53

Kristof's user avatar

KristofKristof

4084 silver badges15 bronze badges

(0,1)[not val]
flips the val from 0 to 1 and vice versa.

answered Aug 5, 2015 at 22:39

rashmi.bmanyam's user avatar

1

After seeing all these simpler answers i thought of adding an abstract one , it’s Pythonic though :

val = set(range(0,2)).symmetric_difference(set(range(0 + val, val + 1))).pop()

All we do is return the difference of 2 sets namely [0, 1] and [val] where val is either 0 or 1.

we use symmetric_difference() to create the set [0, 1] — [val] and pop() to assign that value to variable val.

answered May 22, 2018 at 15:12

Arnav Das's user avatar

Arnav DasArnav Das

2812 gold badges5 silver badges11 bronze badges

2

Function with mutable argument. Calling the swaper() will return different value every time.

def swaper(x=[1]):
    x[0] ^= 1
    return x[0]

answered Mar 24, 2014 at 19:03

avalanchy's user avatar

avalanchyavalanchy

7541 gold badge10 silver badges19 bronze badges

Your way works well!

What about:

val = abs(val - 1)

short and simple!

answered Nov 29, 2016 at 18:47

Matt Rumbel's user avatar

1

use np.where

ex.

np.where(np.array(val)==0,1,0)

this gives 1 where val is 0 and gives 0 where val is anything else, in your case 1

EDIT: val has to be array

answered Dec 11, 2018 at 1:19

ha554an's user avatar

In some part of my Python program I have a val variable that can be 1 or 0. If it’s 1 I must change to 0, if it’s 0 I must change to 1.

How do you do it in a Pythonic way?

if val == 1:
    val = 0
elif val == 0:
    val = 1

it’s too long!

I did:

swap = {0: 1, 1:0}

So I can use it:

swap[val]

Other ideas?

Asclepius's user avatar

Asclepius

54.5k16 gold badges157 silver badges139 bronze badges

asked Nov 22, 2009 at 17:10

Juanjo Conti's user avatar

Juanjo ContiJuanjo Conti

28.3k39 gold badges107 silver badges132 bronze badges

3

This isn’t pythonic, but it is language neutral. Often val = 1 - val is simplest.

answered Nov 22, 2009 at 17:13

CB Bailey's user avatar

CB BaileyCB Bailey

733k101 gold badges626 silver badges651 bronze badges

6

The shortest approach is using the bitwise operator XOR.

If you want val to be reassigned:

val ^= 1

If you do not want val to be reassigned:

val ^ 1

Asclepius's user avatar

Asclepius

54.5k16 gold badges157 silver badges139 bronze badges

answered Dec 9, 2009 at 3:35

enrnpfnfp's user avatar

1

Since True == 1 and False == 0 in python,

you could just use var = not var

It will just swap it.

answered Nov 22, 2009 at 17:13

YOU's user avatar

YOUYOU

118k34 gold badges186 silver badges218 bronze badges

9

Just another possibility:

i = (1, 0)[i]

This works well as long as i is positive, as dbr pointed out in the comments it doesn’t work for i < 0.

Are you sure you don’t want to use False and True? It sounds almost like it.

Asclepius's user avatar

Asclepius

54.5k16 gold badges157 silver badges139 bronze badges

answered Nov 22, 2009 at 18:23

Georg Schölly's user avatar

Georg SchöllyGeorg Schölly

123k48 gold badges218 silver badges264 bronze badges

2

In your case I recommend the ternary:

val = 0 if val else 1

If you had 2 variables to swap you could say:

(a, b) = (b, a)

answered Nov 22, 2009 at 18:05

rplevy's user avatar

rplevyrplevy

5,3333 gold badges31 silver badges30 bronze badges

1

To expand upon the answer by «YOU», use:

int(not(val))

Examples:

>>> val = 0
>>> int(not(val))
1

>>> val = 1
>>> int(not(val))
0

Note that this answer is only meant to be descriptive, not prescriptive.

answered Jul 13, 2016 at 21:19

Asclepius's user avatar

AsclepiusAsclepius

54.5k16 gold badges157 silver badges139 bronze badges

I have swapped 0s and 1s in a list.

Here’s my list:

list1 = [1,0,0,1,0]

list1 = [i^1 for i in list1] 
#xor each element is the list

print(list1)

So the outcome is: [0,1,1,0,1]

Pim's user avatar

Pim

8307 silver badges17 bronze badges

answered Oct 11, 2019 at 5:59

Ravi Wray's user avatar

Ravi WrayRavi Wray

1191 silver badge2 bronze badges

Here’s a simple way:

val = val + 1 - val * 2

For Example:

If val is 0

0+1-0*2=1

If val is 1

1+1-1*2=0

answered Oct 14, 2020 at 13:42

wizz's user avatar

1

If you want to be short:

f = lambda val: 0 if val else 1

Then:

>>> f(0)
1
>>> f(1)
0

answered Nov 22, 2009 at 17:19

Loïc Wolff's user avatar

Loïc WolffLoïc Wolff

3,04626 silver badges26 bronze badges

The most pythonic way would probably be

int(not val)

But a shorter way would be

-~-val

nbro's user avatar

nbro

14.8k29 gold badges108 silver badges193 bronze badges

answered May 21, 2017 at 2:41

nog642's user avatar

nog642nog642

5403 silver badges15 bronze badges

Another option:

val = (not val) * 1

tdy's user avatar

tdy

32.6k15 gold badges66 silver badges67 bronze badges

answered Aug 8, 2021 at 17:40

gildniy's user avatar

gildniygildniy

3,1801 gold badge30 silver badges23 bronze badges

Just another way:

val = ~val + 2

answered May 6, 2015 at 10:53

Kristof's user avatar

KristofKristof

4084 silver badges15 bronze badges

(0,1)[not val]
flips the val from 0 to 1 and vice versa.

answered Aug 5, 2015 at 22:39

rashmi.bmanyam's user avatar

1

After seeing all these simpler answers i thought of adding an abstract one , it’s Pythonic though :

val = set(range(0,2)).symmetric_difference(set(range(0 + val, val + 1))).pop()

All we do is return the difference of 2 sets namely [0, 1] and [val] where val is either 0 or 1.

we use symmetric_difference() to create the set [0, 1] — [val] and pop() to assign that value to variable val.

answered May 22, 2018 at 15:12

Arnav Das's user avatar

Arnav DasArnav Das

2812 gold badges5 silver badges11 bronze badges

2

Function with mutable argument. Calling the swaper() will return different value every time.

def swaper(x=[1]):
    x[0] ^= 1
    return x[0]

answered Mar 24, 2014 at 19:03

avalanchy's user avatar

avalanchyavalanchy

7541 gold badge10 silver badges19 bronze badges

Your way works well!

What about:

val = abs(val - 1)

short and simple!

answered Nov 29, 2016 at 18:47

Matt Rumbel's user avatar

1

use np.where

ex.

np.where(np.array(val)==0,1,0)

this gives 1 where val is 0 and gives 0 where val is anything else, in your case 1

EDIT: val has to be array

answered Dec 11, 2018 at 1:19

ha554an's user avatar

Деление на 0: как исправить ошибку в программах 1С?

Опубликовано 25.01.2022 16:09
Автор: Administrator
Просмотров: 11924

Совсем скоро предстоит начислять зарплату за январь в программах 1С. И большинство расчетчиков и бухгалтеров столкнутся с такой ошибкой в базах как «Деление на 0». Почему это происходит и как самостоятельно, не прибегая к помощи программистов, исправить самую частую ошибку января любого года расскажем в данной публикации. 

 Итак, ошибка выглядит следующим образом:

Возникает она потому, что не указана норма дней на новый календарный год.

Есть несколько причин почему так происходит:

1. Не заполнены графики работы на новый календарный год – это самая популярная ситуация.

В 1С: ЗУП ред. 3.1 они находятся в разделе «Настройка» – «Предприятие» — «Графики работы сотрудников», в 1С: Бухгалтерии предприятия ред. 3.0 — в разделе «Зарплата и кадры» — «Справочники и настройки» — «Графики работы».

По кнопке «Заполнить» сформируется график и ошибка уйдет.

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

2. Неверно заполнен производственный календарь

В вышеуказанных разделах 1С есть производственные календари. Редко, но бывает, что ошибка деления на 0 происходит из-за некорректно заполненного календаря.

На скриншоте приведен календарь на следующий 2023 год. Видите, он полностью красный? Именно так и выглядит эта ошибка. Разработчики к концу 2022 года ее поправят, и норма дней будет считаться корректно.

3. В графике работ все дни помечены как выходные

Да, такое тоже бывает. Иногда пользователи вводят индивидуальные графики сотрудникам, «играются» с их заполнением, но не всегда программа это понимает и порой выдает ошибку деления на 0.

4. Ошибка в формуле расчета

Иногда пользователю необходимо считать зарплату по своим индивидуальным формулам расчета. Но зачастую формула вводится неверно, отсюда и возникает эта ошибка. В этом случае мы рекомендуем обращаться к консультантам 1С. Возможно вашу формулу можно настроить штатными механизмами 1С.

Тут же стоит сказать еще об одной вытекающей из этого пункта ошибке — не верно настроен приоритет видов начислений. Именно в случае когда создается много начислений со своими формулами расчета они начинают конфликтовать со стандартным начислением оплаты по окладу.
Так что, друзья, не выдумываем велосипед там, где его давно изобрели, а обращаемся к специалистам 1С.

5. В редких случаях такая ошибка возникает в следствие экстренного отключения электроэнергии, аварийного завершения 1С. В этом случае необходимо почистить кэш и прибегнуть к тестированию базы 1С.

Автор статьи: Ирина Плотникова

Text.ru - 100.00%

Понравилась статья? Подпишитесь на рассылку новых материалов

Добавить комментарий

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

Нерадивый ученик брал малое количество порошкообразной хлорки и размешивал ее с небольшим количеством воды. Полученным раствором он с помощью малой кисточки обрабатывал место исправления, подложив перед этим под лист тетради чистый лист бумаги. Постепенно чернила исчезали. После надо было промокнуть мокрое место промокашкой. Вот собственно и всё. Но есть несколько проблем с применением этого способа. Во-первых, этот способ действует только на чернила перьевой, а не шариковой ручки. Во-вторых, таким способом можно пользоваться при удалении записей с белой бумаги. Иначе оставались белые пятна на цветной.

Следующий способ более продуктивен и безвреден для здоровья человека. Для удаления нежелательных записей с бумаги Вам понадобится: около 1 чайной ложки 70% уксусного концентрата, небольшое количество марганцовки (на кончике ножа). Для приготовления «волшебной» жидкости следует смешать эти ингредиенты.

Для применения подложите под лист, на котором будете исправлять ошибку, чистый лист бумаги. Для нанесения жидкости применяйте маленькую кисточку с мелким и тонким волосом, чем меньше, тем лучше для работы. Смочите кисть в растворе и проводите ей по надписи, пока она не исчезнет. В этом месте бумага приобретёт коричневый оттенок, который удаляется с помощью ваты, смоченной в перекиси водорода. Затем просушите исправляемый участок с помощью тёплого утюга. Проложите его между листом чистой бумаги и материей и прогладьте сверху.

Данный способ желательно применять для удаления надписей с тонкой бумаги — для удаления с толстой бумаги следует применять вместо кисточки ушные палочки. Это способ эффективный, но не единственный.

Для приготовления аналогичного раствора смешайте 10 г щавелевой кислоты, 10 г лимонной кислоты, 100 мл воды. Смочите надпись этим раствором с помощью мелкой кисти несколько раз. Потом, тоже кистью, смочите водой. После удаления надписи просушите бумагу.

Следующий состав, который состоит из 10 г соляной кислоты, 10 г поваренной соли,
30 мл воды, применяют так же, как и остальные.

Успехов!

Понравилась статья? Поделить с друзьями:
  • Как исправить ноль на два
  • Как исправить ноль на 1 на бумаге
  • Как исправить ноздри безоперационно
  • Как исправить ножки сокета на материнской плате
  • Как исправить ножки процессора