Помощь - Поиск - Пользователи - Календарь
Полная версия: простенькая задача на множества
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
emm
Из множества целых чисел 1..100 выделить множество чисел, являющихся в свою очередь квадратами целых чисел
APAL
не понял условия... sad.gif

Квадратами каких целых чисел???
volvo
emm
Можно переформулировать задачу так:
"Найти все числа из интервала 1..100, являющиеся квадратами целых чисел"?

Или я не прав?
APAL
Хм... volvo, ты уже не в первый раз придаешь непонятным топикам хоть какой-то смысл... :p9:

Если это действительно так, то какие затруднения emm?
Будем учить Pascal или все подать на "тарелочке"?
emm
ну никак не получается
посмотрите, что нетак с этой программой
Код
var
b:set of 1..100;
kv:set of byte;
i:integer;

begin
kv:=[];
for i:=1 to 100 do if (sqr(i) in B)=true then include(kv,sqr(i));
for i:=1 to 100 do if (i in kv)=true then write(' ',i);
readln;
writeln;
end.
APAL
Может вместо set будем использовать array ?

emm, забываешь заключать код в теги!
volvo
emm
Описываешь Set of Byte и пытаешься засунуть туда 100*100 ?
Romtek
Множества, в своём большинстве, не превосходят 10 элементов.
Для 100 элементов лучше использовать массив (array), как уже заметили раньше.
Romtek
Поправь так:
Код
Sq := Sqr (N);
if (Sq <= Max) then Include (kv, Sq);

И вместо write(' ',i); напиши write (i : 4);
Так красивее.

Множества, по-моему, здесь вообще не нужны.
Код
Sq := Sqr (N);
if (Sq <= Max) then write (Sq : 4);
emm
ну если нам дали эту задачу из раздела множества и сказали решать с множествами, дак как вы думаете!!! нужны тут множества или нет?!!! Что-то я пока ни одного ценного совета здесь не заметила!!!
volvo
emm Спокойнее... У Вас где-нибудь было сказано, что эту задачу нужно решать при помощи множеств? Нет... А решается она при помощи множеств вот так:

const
 maxNum = 100;
var
 kv:set of byte;
 i: 1 .. maxNum;
const
 b = [1 .. maxNum];

begin
kv:=[];
{Работаем с квадратами, поэтому достаточно
 пройти до корня из макс числа...}
for i:=1 to Trunc(sqr(maxNum)) do
 if (sqr(i) in b) then include(kv,sqr(i));

for i:=1 to maxNum do
 if (i in kv) then write(i:4);
readln;
writeln;
end.



P.S. А можно встречный вопрос? Что будет, если Вашему преподавателю вздумается найти все числа из интервала 1 .. 400, являющиеся квадратами целых чисел ? А множества вмещают 256 элементов ... Используя те советы, которые давались здесь, Вы можете этого избежать...
emm
Ну неужели хоть кто-то помог. Спасибо большое!!! :no:
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.