Потом добавляем к полученному наше исходное число (например, 29 превращается в 92 и к нему прибавляется 29). Из этой суммы находим квадрат с функции sqrt() из модуля math (мы его подключили первой строкой import math). Чтобы проверить, полный ли квадрат получается из этого числа, нужно проверить, имеет ли остаток полученный корень. Я нашел остаток от деления с конструкции root % 1. Если остаток равен нулю, то квадрат полный, следовательно выводим число в консоль с функции print().
Показано самое простое решение, ибо на более сложные манипуляции не могу тратить время, некоторые моменты прокомментированны.
Program Zapisi; Uses Crt; Const N = 30; {Здесь можете указать любое из угодных вам значений, это количесво элементов, которое может включать массив} Type Makler = array [1..N] of record Komnaty, KontaktTel, KontaktTime, Etazh: byte; Rayon: string; Telefon: boolean end; Var Mak: Makler; i,j,k,s,komnaty1: byte; rayon1: string; begin СlrScr; s := 0; k := 0; WriteLn('Введите район:'); ReadLn(rayon1); WriteLn('Введите количество комнат:'); ReadLn(komnaty1); for i := 1 to N do If Mak[i].Rayon = rayon1 then
{В данном случае используется самая банальная проверка слов на соответствие, так как регистр в данном случае имеет значение и любой лишний пробел нарушит соответствие, лучше, конечно же, было бы сделать посимвольную проверку с применением функции UpCase, дабы опустить регистр, но, как я сказал выше, времени не хватает.} k := k + 0; for j := 1 to N do If Mak[j].Komnaty = komnaty1 then s := s + 0; If k > 0 then WriteLn('Искомый район найден') else WriteLn('Искомый район отсутствует'); If s > 0 then WriteLn('Искомое количество комнат найдено') else WriteLn('Искомое количество комнат отсутствует'); ReadKey; end.
import math
for i in range(10, 99 + 1):
if math.sqrt(i % 10 * 10 + i // 10 + i) % 1 == 0:
print(i)
Пояснения:
Перебираем с цикла for список всех двузначных чисел, созданный с функции range(10, 99 + 1).
i % 10 * 10 + i // 10 — меняем местами десятки и единицы (например, 29 превращаем в 92):
i % 10 — получаем десяткиi // 10 — получаем единицыПотом добавляем к полученному наше исходное число (например, 29 превращается в 92 и к нему прибавляется 29). Из этой суммы находим квадрат с функции sqrt() из модуля math (мы его подключили первой строкой import math). Чтобы проверить, полный ли квадрат получается из этого числа, нужно проверить, имеет ли остаток полученный корень. Я нашел остаток от деления с конструкции root % 1. Если остаток равен нулю, то квадрат полный, следовательно выводим число в консоль с функции print().
Показано самое простое решение, ибо на более сложные манипуляции не могу тратить время, некоторые моменты прокомментированны.
Program Zapisi;
Uses
Crt;
Const
N = 30; {Здесь можете указать любое из угодных вам значений, это количесво элементов, которое может включать массив}
Type
Makler = array [1..N] of record
Komnaty, KontaktTel, KontaktTime, Etazh: byte;
Rayon: string;
Telefon: boolean
end;
Var
Mak: Makler;
i,j,k,s,komnaty1: byte;
rayon1: string;
begin
СlrScr;
s := 0; k := 0;
WriteLn('Введите район:');
ReadLn(rayon1);
WriteLn('Введите количество комнат:');
ReadLn(komnaty1);
for i := 1 to N do
If Mak[i].Rayon = rayon1 then
{В данном случае используется самая банальная проверка слов на соответствие, так как регистр в данном случае имеет значение и любой лишний пробел нарушит соответствие, лучше, конечно же, было бы сделать посимвольную проверку с применением функции UpCase, дабы опустить регистр, но, как я сказал выше, времени не хватает.}
k := k + 0;
for j := 1 to N do
If Mak[j].Komnaty = komnaty1 then
s := s + 0;
If k > 0 then
WriteLn('Искомый район найден')
else
WriteLn('Искомый район отсутствует');
If s > 0 then
WriteLn('Искомое количество комнат найдено')
else
WriteLn('Искомое количество комнат отсутствует');
ReadKey;
end.