Дан прямоугольник размером 647 x 170 сколько квадратов со стороной 30 можно вырезать из него
Перейти к содержимому

Дан прямоугольник размером 647 x 170 сколько квадратов со стороной 30 можно вырезать из него

Разрезать прямоугольник на квадраты и вывести список с размерами сторон

На вход функции подается длина и ширина прямоугольника, нужно разрезать его на квадраты и вывести список с размерами сторон этих квадратов. Если исходная длина и ширина равны, вывести 0. Подскажите алгоритм пожалуйста.

Пример вход rect(5,3), выход [3,2,1,1]

user avatar

Берем минимальный из двух размеров и выводим его. Затем уменьшаем максимальный размер на минимальный и начинаем сначала. Продолжаем пока один из размеров не станет равен нулю.

Неясно только, почему дано такое неестественное требование «если исходная длина и ширина равны, вывести 0». Логично было бы просто вывести длину — тогда бы этот случай подпадал под общий алгоритм.

Проблема решена за помощи итератора — рекурсивная функция def to_quadrats() при каждом запросе о последующее значение выдает его командой yield i (и затем приостановится и ждёт на последующий запрос).

Сам запрос о последующее и последующее значения итератора (пока он не исчерпается) реализуется функцией list() .

мы ищем самое большое значение (сторону квадрата), для которого его вторая степень (площадь квадрата) ещё не превышает текущую площадь — да, вместо area бы лучше было взять его квадратный корень.

После нахождения такого значения текущая площадь соответственно уменьшится, самое значение выдастся командой yield и цикл for прекращается командой break .

Дан прямоугольник размером 647 x 170 сколько квадратов со стороной 30 можно вырезать из него

Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2005

Репутация: нет
Всего: нет

Профиль
Группа: Участник
Сообщений: 56
Регистрация: 28.1.2006
Где: Россия, Нижний Но вгород

Репутация: нет
Всего: нет

Профиль
Группа: Комодератор
Сообщений: 2072
Регистрация: 15.11.2004

Репутация: 2
Всего: 116

Профиль
Группа: Участник
Сообщений: 64
Регистрация: 14.6.2005
Где: Хабаровск

Репутация: нет
Всего: нет

Профиль
Группа: Участник
Сообщений: 32
Регистрация: 20.12.2005

Репутация: нет
Всего: нет

div это процедура которая делит одно число на другое и выписывает целое число
а
mod наоборот остаток

соответственно 543 div 130 и будет столько квадратов на сколько можно поделить
а
543 mod 130 будет оставшаяся часть прямоугольника

Профиль
Группа: Участник
Сообщений: 117
Регистрация: 9.11.2005
Где: 239

Репутация: нет
Всего: нет

div — деление без остатка (7 div 3 =2)
mod- остаток от деления (7 mod 3 =1)
ответ задачи следовательно
543 div 130 — на сколько можно поделить,
а 543 mod 130- сколько от прямоугольника останется;

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »

[ Время генерации скрипта: 0.1149 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Школе NET

Submit to our newsletter to receive exclusive stories delivered to you inbox!

Васян Коваль

Помогите с паскалем!)

Задание 1.
Дана масса в килограммах. Найти число полных тонн в ней.
Задание 2.
Дан прямоугольник с размерами 543*130 мм. Сколько квадратов со стороной 130 мм можно отрезать от него.
Задание 3.
С клавиатуры вводится четырехзначное число, необходимо получить новое число, приписав к нему слева цифру 9.
Задание 4.
Дано трехзначное число. В нем зачеркнули первую цифру слева и приписали ее вконце. Найти полученное число.
Задание 5.
Пешеход шел по пересеченной местности. Его скорость движения по равнине v1 км/ч, в гору — v2 км/ч и под гору — v3 км/ч. Время движения соответственно t1, t2 и t3 ч. Какой путь прошел пешеход?

Нужно выполнять в таком виде:

Лучший ответ:

Пармезан Черница

program p1;
var k,t:integer;
begin
write(‘кг = ‘);
readln(k);
t:=k div 1000;
writeln(‘В ‘,k,’ кг полных тонн ‘,t);
end.

Пример:
кг = 54937
В 54937 кг полных тонн 54

program p2;
var a,b,k:integer;
begin
a:=543;
b:=130;
k:=a div b;
writeln(‘Количество квадратов = ‘,k);
end.

Результат:
Количество квадратов = 4

program p3;
var a,b:integer;
begin
write(‘Введите четырехзначное число: ‘);
readln(a);
b:=9*10000 a;
writeln(‘Полученное число = ‘,b);
end.

Пример:
Введите четырехзначное число: 4937
Полученное число = 94937

program p4;
var a,b:integer;
begin
write(‘Введите трехзначное число: ‘);
readln(a);
b:=(a mod 100)*10 a div 100;
writeln(‘Полученное число = ‘,b);
end.

Пример:
Введите трехзначное число: 437
Полученное число = 374

program p5;
var v1,v2,v3,t1,t2,t3,s:real;
begin
write(‘v1, t1: ‘);
readln(v1,t1);
write(‘v2, t2: ‘);
readln(v2,t2);
write(‘v3, t3: ‘);
readln(v3,t3);
s:=v1*t1 v2*t2 v3*t3;
writeln(‘Пройденный путь = ‘,s:5:2, ‘ км ‘);
end.

Пример:
v1, t1: 5 2
v2, t2: 3 0.5
v3, t3: 4 1.5
Пройденный путь = 17.50 км

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *