Сделать из реального варианта егэ.требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x в десятеричной системе счисления, не превосходящее 1000, и выводится это же число, но в восьмеричной системе счисления. программист торопился и написал программу неправильно.varx, y, f: integer; n, i, j: integer; beginreadln(x); n : = 0; y : = x; while x > 0 dobeginn : = n + 1; x : = x div 10; end; for i : = n downto 1 dobeginf : = 1; for j : = 1 to n - 1 dof : = f * 8; write(y div f mod 8); end; end.последовательно выполните следующее: 1. напишите, что выведет в итоге эта программа при вводе числа 15.2. пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.3. найдите все ошибки в этой программе (их может быть одна или несколько). известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, т. е. правильный вариант строки.
nums = {
"один":1, "два":2, "три":3, "четыре":4, "пять":5, "шесть":6, "семь":7, "восемь":8, "девять":9, "десять":10, "одиннадцать":11, "двенадцать":12, "тринадцать":13, "четырнадцать":14, "пятнадцать":15, "шестнадцать":16, "семнадцать":17, "восемнадцать":18, "девятнадцать":19, "двадцать":20, "тридцать":30, "сорок":40, "пятьдесят":50, "шестьдесят":60, "семьдесят":70, "восемьднсят":80, "девяносто":90, "сто":100, "двести":200, "триста":300, "четыреста":400, "пятьсот":500, "шестьсот": 600, "семьсот":700, "восемьсот":800, "девятьсот":900
}
text = input()
result = 0
list = text.split()
for i in list:
result += nums[i]
print(result)
class WordConstructor:
def __init__(self, number):
self.number = number
def vocab(self, number, args=None):
if number == 1:
return "Один"
elif number == 0:
return "Ноль"
elif number == 2 and args:
return "Две"
elif number == 2:
return "Два"
elif number == 3:
return "Три"
elif number == 4 and args:
return "Четыр"
elif number == 4:
return "Четыре"
elif number == 5:
return "Пять"
elif number == 6:
return "Шесть"
elif number == 7:
return "Семь"
elif number == 8:
return "Восемь"
elif number == 9:
return "Девять"
elif number == 10:
return "Десять"
elif number == 11:
return "Одиннадцать"
elif number == 12:
return "Двенадцать"
elif number == 'suf.nadcat':
return "надцать"
elif number == 'suf.dcat':
return "дцать"
elif number == "suf.yat":
return "десят"
elif number == "suf.ok":
return "ок"
elif number == 90:
return "Девяносто"
elif number == 100:
return "Сто"
elif number == 'suf.sot':
return "сот"
def get_num_from_number(self, number, pos):
return int(str(number)[pos])
def construct(self):
if self.number < 13:
print(self.vocab(self.number))
elif self.number < 20:
if self.number == 14:
print(self.vocab(int(str(self.number)[1]), args=True) + self.vocab("suf.nadcat"))
else:
print(self.vocab(int(str(self.number)[1]), args=True).replace("ь", "") + self.vocab("suf.nadcat"))
elif self.number < 100:
first = self.get_num_from_number(self.number, 0)
second = self.get_num_from_number(self.number, 1)
if second == 0:
if first == 4:
print("Сор" + self.vocab("suf.ok"))
elif first < 5:
print(self.vocab(first, args=True) + self.vocab("suf.dcat"))
elif first < 9:
print(self.vocab(first) + self.vocab("suf.yat"))
elif first == 9:
print(self.vocab(self.number))
else:
print(self.vocab(first, args=True) + self.vocab("suf.dcat"))
else:
if first == 4:
print("Сор" + self.vocab("suf.ok") + " " + self.vocab(second).lower())
elif first < 5:
print(self.vocab(first, args=True) + self.vocab("suf.dcat") + " " + self.vocab(second).lower())
elif first < 9:
print(self.vocab(first) + self.vocab("suf.yat") + " " + self.vocab(second).lower())
elif first == 9:
print(self.vocab(self.number - second) + " " + self.vocab(second).lower())
else:
print(self.vocab(first, args=True) + self.vocab("suf.dcat") + " " + self.vocab(second).lower())
elif self.number < 1000:
zero = self.get_num_from_number(self.number, 0)
first = self.get_num_from_number(self.number, 1)
second = self.get_num_from_number(self.number, 2)
if second == 0 and first == 0:
if zero == 4:
print(self.vocab(zero) + self.vocab(100).lower())
elif zero == 2:
print("Двести")
elif zero == 3:
print(self.vocab(zero) + self.vocab(100).lower().replace("о", "а"))
elif zero == 1:
print(self.vocab(100))
elif zero <= 9:
print(self.vocab(zero) + self.vocab('suf.sot').lower())
for i in range(0, 1000):
a = WordConstructor(i)
a.construct()
Код очень нетривиален и не оптимизорован. Работает с 0-100 числами и может еще 200, 300...
Дальше с >100 писать мне очень лень, уж простите.