В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
11Катя11111
11Катя11111
17.02.2020 18:20 •  Информатика

написать код! Нужно дополнить код по условиям задания Дано: Изображение, на котором показан фрагмент звездного неба с круглой или эллиптической (овальной) черной областью. Если это эллипс, то гарантируется, что его длинная ось расположена горизонтально (то есть эллипс не будет повернут). На приведенном выше изображении черный звездолет обрисован светлым контуром, но это только для наглядности, на загруженном для обработки изображении такого контура не будет. Пиксели, затененные звездолетом, имеют идеально черный цвет (значение 0).

Требуется: найти и вывести видимый диаметр звездолета, то есть максимальную ширину непрерывной черной области, в пикселях.

Как отлаживать: закомментируй строку с "url=input()", а вместо нее раскомментируй следующую строку. Также можно раскомментировать строку с print(wa,ha). После этого шаблон программы должен выполняться без ошибок, выводя на консоль "200 200" (размер картинки) и "0" (вместо правильного ответа). Дальше дописываешь, что нужно, и добиваешься правильного ответа. Когда все работает, переносишь готовую программу обратно в Степик, только не забудь снова закомментировать/раскомментировать нужные строки!

Подсказки и пояснения:

Картинка уже загружена в переменную photo (это объект Image из библиотеки PIL, если интересно, документацию можно легко найти в интернете).

Картинка уже преобразована в формат greyscale (градации серого), каждая точка изображения представлена числом от 0 (черная точка) до 255 (белая).

Чтобы получить яркость точки по координатам (x,y), используется вызов photo.getpixel((x,y)). Двойные скобки означают, что x и y объединены в кортеж (x,y), передаваемый в getpixel() как один параметр.

Чтобы найти максимум чего-либо, берем переменную ("текущий максимум"), назначаем ей заведомо маленькое значение. Затем в цикле каждый раз сравниваем с текущим максимумом очередное значение, и если оно больше, то заменяем текущий максимум на это значение.

Чтобы найти длину непрерывной последовательности заданных значений (например, черных точек в строке), берем переменную ("счетчик") с начальным нулевым значением и начинаем просматривать наш массив (строку изображения и т.п.). Каждый раз, когда попадается заданное значение, счетчик увеличивается на 1. Каждый раз, когда попадается любое другое значение, мы запоминаем счетчик как длину последовательности (и, если надо, используем для обновления текущего максимума), после чего его снова обнуляем (поскольку последовательность уже кончилась).

КОД:

# Это загрузка картинки, здесь ничего трогать не надо!

from PIL import Image

import requests

url = input() # для отладки замените на:

# url = "https://stepik.org/media/attachments/lesson/578362/stars1h.png"

loaded_image=Image.open(requests.get(url, stream=True).raw) #загружаем картинку

photo=loaded_image.convert(mode="L") # переводим в greyscale (тона серого)

wa, ha = photo.size # это размеры картинки (ширина и высота, соотв.)

#print(wa,ha) # раскомментируй для отладки - должен выдавать "200, 200"

# Дальше идет ваш код!

alien_ship_width = 0 # здесь должен оказаться результат

# здесь пишем, что еще требуется перед обработкой всей картинки

# ...

for y in range(ha): # цикл просмотра по строкам

# здесь пишем, что требуется перед просмотром очередной строки

# ...

for x in range(wa): # цикл просмотра точек очередной строки

pix = photo.getpixel((x,y)) # взяли точку...

# и вот тут что-то с ней делаем!

# ...

# здесь пишем, что требуется после просмотра очередной строки

# ...

print(alien_ship_width) # выводим полученный результат

Показать ответ
Ответ:
lopas12341234
lopas12341234
20.06.2021 17:53

Квадрат разлинован на N×N клеток (1 < N < 17). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку, по команде вниз – в соседнюю нижнюю. При попытке выхода за границу квадрата Робот разрушается. Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клетке маршрута Робота.

Определите максимальную и минимальную денежную сумму, которую может собрать Робот, пройдя из левой верхней клетки в правую нижнюю.

В ответе укажите два числа – сначала максимальную сумму, затем минимальную.

Исходные данные представляют собой электронную таблицу размером N×N, каждая ячейка которой соответствует клетке квадрата.

0,0(0 оценок)
Ответ:
федя666
федя666
27.12.2021 20:23

1)x = (input('x= '))

y = (input('y= '))

z = (input('z= '))

c = ((x % 3 == 0) and (y % 3 == 0) and (z % 3 == 0))

print(

else:

print

2)uses crt;

var x,y:real;

   f1,f2:boolean;

begin

clrscr;

writeln('Введите 2 числа:');

readln(x,y);

f1:=(x>2)and(y>3);

f2:=(x>1)and(y>-2);

writeln(f1);

write(f2);

readln

end.

3)uses crt;

var a,r:real;

 

begin

clrscr;

write('Введите сторону квадрата и радиус круга-> ');

readln(a,r)

if sqr(a)>pi*sqr(r) then write('У квадрата') else write('У круга');

readln;

end.

5)uses crt;

Var a, i, n, S: integer;

Begin

Write('Vvedite n '); readln(n);

S:=0;

For i:=40 to 140 do

 begin

 read(a);

 if (a mod 6 =0) then S:=S+a;

 end;

Writeln(S);

End.

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота