Все табуляции и пробелы сайт ломает, копировать не советую. Ниже приложен скриншот оригинала кода. Программа протестирована и делает вид что работает как должна. Если есть вопросы - спрашивай, отвечу. Если прям надо просто скопировать, могу залить на pastebin.com
Примеры чисел x, y, при которых программа неверно работает:
1, 0 (пишет не принадлежит, а должна писать принадлежит)
3, 1 (пишет не принадлежит, а должна писать принадлежит)
2, 2 (ничего не пишет, а должна писать не принадлежит)
Пример доработки программы:
var
x, y: real;
c: string;
begin
readln(x, y);
c := 'не принадлежит';
if y >= 0 then
if y <= 1 then
if x >= 0 then
if x <= pi then
if (x > pi / 2) or (y <= sin(x)) then c := 'принадлежит';
write(c);
end.
Ещё пример доработки программы:
var
x, y: real;
begin
readln(x, y);
if y >= 0 then
if y <= 1 then
if x >= 0 then
if x <= pi then
if (x > pi / 2) or (y <= sin(x)) then write('принадлежит')
else write('не принадлежит')
else write('не принадлежит')
else write('не принадлежит')
else write('не принадлежит')
else write('не принадлежит');
end.
Объяснение:
Исходная программа вообще давала правильный ответ лишь для точек указанного прямоугольника, у которых игрек равен синусу икс, а также для точек в левой половине прямоугольника, лежащих выше синуса икс.
А для точек вне прямоугольника она не писала никакого ответа, т.к. сообщение "не принадлежит" выводится после else, которое принадлежит к последнему if, а до него дело даже и не доходит, ведь срабатывает одно из четырёх условий, идущих перед ним.
Если исходный алгоритм встроить в цикл для отрисовки графика (что я и сделал для проверки, заменив лишь вывод текстовых сообщений на установку переменной в единицу или ноль и добавив округления в условие последнего if), то можно получить отрисовку лишних линий на всю область графика из за того, что последнее значение было 1, а для точек выше- алгоритм его уже не меняет, пока координаты вновь не попадут в прямоугольник.
def clean_text(text:str):
scrap = ['.', ',', '?', '!', ':', ';']
splited_text = text.split(' ')
for word in splited_text:
for lit in word:
if lit in scrap:
word.replace(lit, '')
print(splited_text)
return splited_text
def find_biggest(text:list):
biggest_word = ''
for word in text:
if len(word) > len(biggest_word):
biggest_word = word
return biggest_word
def findCommonword(text:list):
common_word = ''
for word in text:
if text.count(word) > text.count(common_word):
common_word = text.pop(text.index(word))
return common_word
def parse(text:str):
clear_text = clean_text(text)
biggest_word = find_biggest(clear_text)
common_word = findCommonword(clear_text)
return (common_word, biggest_word)
def main():
text = input()
print(*parse(text))
if __name__ == '__main__':
main()
Объяснение:
Все табуляции и пробелы сайт ломает, копировать не советую. Ниже приложен скриншот оригинала кода. Программа протестирована и делает вид что работает как должна. Если есть вопросы - спрашивай, отвечу. Если прям надо просто скопировать, могу залить на pastebin.com
Примеры чисел x, y, при которых программа неверно работает:
1, 0 (пишет не принадлежит, а должна писать принадлежит)
3, 1 (пишет не принадлежит, а должна писать принадлежит)
2, 2 (ничего не пишет, а должна писать не принадлежит)
Пример доработки программы:
var
x, y: real;
c: string;
begin
readln(x, y);
c := 'не принадлежит';
if y >= 0 then
if y <= 1 then
if x >= 0 then
if x <= pi then
if (x > pi / 2) or (y <= sin(x)) then c := 'принадлежит';
write(c);
end.
Ещё пример доработки программы:
var
x, y: real;
begin
readln(x, y);
if y >= 0 then
if y <= 1 then
if x >= 0 then
if x <= pi then
if (x > pi / 2) or (y <= sin(x)) then write('принадлежит')
else write('не принадлежит')
else write('не принадлежит')
else write('не принадлежит')
else write('не принадлежит')
else write('не принадлежит');
end.
Объяснение:
Исходная программа вообще давала правильный ответ лишь для точек указанного прямоугольника, у которых игрек равен синусу икс, а также для точек в левой половине прямоугольника, лежащих выше синуса икс.
А для точек вне прямоугольника она не писала никакого ответа, т.к. сообщение "не принадлежит" выводится после else, которое принадлежит к последнему if, а до него дело даже и не доходит, ведь срабатывает одно из четырёх условий, идущих перед ним.
Если исходный алгоритм встроить в цикл для отрисовки графика (что я и сделал для проверки, заменив лишь вывод текстовых сообщений на установку переменной в единицу или ноль и добавив округления в условие последнего if), то можно получить отрисовку лишних линий на всю область графика из за того, что последнее значение было 1, а для точек выше- алгоритм его уже не меняет, пока координаты вновь не попадут в прямоугольник.