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 писать мне очень лень, уж простите.
Ctrl+C — стандартное и часто используемое при работе на компьютере сочетание клавиш для копирования данных в буфер обмена Windows. Чтобы скопировать некоторый фрагмент текста, табличных данных и т. д. в буфер, нужно сначала выделить этот фрагмент (как правило, это делается нажиманием и удерживанием левой кнопки мыши, после чего мышь перемещают по фрагменту, который необходимо выделить и отпускают кнопку
Ctrl+V — стандартное и часто используемое при работе на компьютере сочетание клавиш для вставки данных из буфера обмена Windows. Позволяет не набирать повторно один и тот же текст, а скопировать его из другого или этого же документа.
wog18303
сейчас
Информатика
1 - 4 классы
+18 б.
ответ дан
с программой, даже условие не могу понять хотя-бы натолкнуть на мысль
Условие
Напишите функцию, которая как результат будет возвращать подпоследовательность элементов массива, начиная с позиции X до позиции Y включительно в обратном порядке с шагом Z как новый массив. По умолчанию шаг должен быть равен 1.
Ваша задача для заданного массива вывести срез с шагом 1 и с шагом, заданным с клавиатуры.
Формат входных данных
В первой строке задается натурально число N, (N ≤ 10000)- размер массива.
В следующей строке вводятся N целых чисел, по модулю не превосходящих 109 - элементы массива.
В последней строке вводятся три целых числа X, Y и Z (0 ≤ X ≤ Y < N, 0 < Z < N)- границы и шаг среза соответственно.
Формат выходных данных
В первой строке выведите перевернутый фрагмент массива с шагом 1.
Во второй строке выведите перевернутый фрагмент массива с шагом Z.
1
СМОТРЕТЬ ОТВЕТ
ДОБАВИТЬ ОТВЕТ
Спросите wog18303 о заданном вопросе...
wog18303 ждёт твоего решения.
ответь на вопрос и заработай .
ответ
5,0/5
1
slysnenko
хорошист
34 ответов
469 пользователей, получивших
#include <iostream>
#include <vector>
using namespace std;
void srez(vector<int> arr, int x, int y, int z = 1) {
for (int i = y; i >= x; i -= z) {
cout << arr[i] << ' ';
}
cout << '\n';
}
int main() {
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; ++i) cin >> arr[i];
int x, y, z;
cin >> x >> y >> z;
srez(arr, x, y);
srez(arr, x, y, z);
return 0;
}
Объяснение:
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)