Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Множества в Паскале.

59K
07 июля 2010 года
Budushaya_Programmistka
6 / / 07.07.2010
Опишите множество Рr(1..20) и поместите в него все простые числа в диапазоне от а до b.
8.9K
19 июля 2010 года
Apach47
130 / / 14.06.2010
ТС, реализуй решето Эратосфена для чисел в этом диапазоне, и если число проходит решето и попадает в диапазон - выводи его на экран(или куда там тебе нужно). Алгоритм элементарен, имхо.

Если сам что то сделал, выкладывай, исправлю. Если нет, связывайся со мной, поговорим о цене.
1.8K
20 июля 2010 года
LM(AL/M)
332 / / 20.12.2005
по моему достаточно описать мн-во PrAll1_20, кот. содержит все простые числа от 1 до 20:
 
Код:
PrAll1_20 := [ 2, 3, 5, 7, 11, 13, 17, 19 ];

затем -- цикл от а до б и проверка попадает ли счётчик (цилка) в это мн-во, если попадает заносим в Pr:
 
Код:
Pr := [];  for i := a to b do if i in PrAll1_20 then Pr := Pr + ;

;)
8.9K
21 июля 2010 года
Apach47
130 / / 14.06.2010
LM(AL/M), Ваше решение не универсально, но поставленную задачу выполняет. :)
1.8K
21 июля 2010 года
LM(AL/M)
332 / / 20.12.2005
оно не универсально т.к. сама исходная задача не унивесальна. как я понимаю цель задания -- продемонстрировать работу с множествами в паскале, не более
8.9K
22 июля 2010 года
Apach47
130 / / 14.06.2010
LM(AL/M), да Вы правы, в данной задаче об универсальности говорить сложно... Но давайте с Вами вспомним что пишут маломальские серьезные книжки по программированию: "Программы нужно писать так, чтобы изменение какого-либо фрагмента кода не вызывало лавинообразных изменений всей программы или чтобы эти изменения были были минимальны".

Представьте что задача будет стоять для нескольких тысяч... Или нужно будет вывести только числа кратные N.

Поэтому я считаю что более продвинутым будет следующий код

Код:
const N = 20

Num := (1..N); // Само множетсво
limA, limB : integer; // границы вычислений

begin
 limit := sqrt(N);  // исходя из критерия простоты числа вычисляем границу

 Readln(limA, limB);  // Устанавливаем значение границ

 for i = 2 to limit do
  if( (Num mod i) = 0 and Num < limB and Num > limA  )  // Если число делится без остатка на 1 и на само себя, оно просто, и если оно попадает в промежуток от А до И, выводим его на экран и переходим к следующей итериции цикла
  begin  
    write(Num, " | ");
    Continue;
  end;

end.


Меняйте число N с 20 на 100 и получайте на выходе все простые числа до 100, на 200 - до 200-ста и т.д.

Но здесь я немного упростил задачу, применив вместо решета критерий простоты числа. До пары десятков тысяч будет нормально, имхо :)
1.8K
22 июля 2010 года
LM(AL/M)
332 / / 20.12.2005
в паскале множество ограничено кол-вом элементов 256
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог