Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2012, 21:01   #1
HelloInside
 
Регистрация: 13.05.2012
Сообщений: 7
По умолчанию Множини

Ребят помогите решить задачу,а то я что-то запутался;( Притом в множинах не очень розбираюсь.

В порядке возрастания напечатать все целые числа из диапазона 1 ... 256, которые можно представить в виде sqr (n) + sqr (m), где m, n> = 0 - целые числа.
HelloInside вне форума Ответить с цитированием
Старый 13.05.2012, 21:10   #2
HelloInside
 
Регистрация: 13.05.2012
Сообщений: 7
По умолчанию

Код:
program gr;
 
var k,n,m:integer;
    i,j,s:integer;
    w:boolean;
begin
 
for k:=1 to 256 do {проходим этим циклом от 1 до 256}
begin
w:= false; {присваиваем изначально этой переменной ЛОЖЬ}
for n:=1 to k do {цикл проверки чисед "N"}
for m:=n to k do {цикл проверки чисед "M"}
if sqr(n)+sqr(m)=k then w:= true; {проверяем условие "n( в квадрате)+ m (в квадрате)"}
if w then writeln(k);     end;  {если верно то выводим это число}
 
readln; readln;
end.
Вот я так сделал, правильно или нет?

Вроде должно работать, но у меня выдает ошыбку, "Арифметическое переволнение"
HelloInside вне форума Ответить с цитированием
Старый 13.05.2012, 21:20   #3
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

держите) оптимизируйте)
Код:
var  a:set of byte;
i,j:integer;
begin
a:=[];
for I := 1 to trunc(sqrt(256)) do
  for j :=  trunc(sqrt(256)) downto i do
   if ((sqr(i)+sqr(j))>=1) and ((sqr(i)+sqr(j))<=256) then
   a:=a+[(sqr(i)+sqr(j))];
for I := 1 to 256 do
  if i in a then   write(i,' ');
readln;
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 13.05.2012, 21:30   #4
HelloInside
 
Регистрация: 13.05.2012
Сообщений: 7
По умолчанию

Спасибо. Но выдает ошыбку: "Ошыбка проверки диапазона."
HelloInside вне форума Ответить с цитированием
Старый 13.05.2012, 21:34   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

не оптимально но Работает же
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 13.05.2012, 21:35   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Байты от 0 до 255, а не от 1 до 256.
Arigato вне форума Ответить с цитированием
Старый 13.05.2012, 21:38   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

set of byte подразумевает диапазон 0..255, а не 1..256
замените a:=a+[(sqr(i)+sqr(j))]; на a:=a+[(sqr(i)+sqr(j))-1];
и for I := 1 to 256 do if i in a then write(i,' '); на for I := 0 to 255 do if i in a then write(i+1,' ');
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 13.05.2012, 21:45   #8
HelloInside
 
Регистрация: 13.05.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
set of byte подразумевает диапазон 0..255, а не 1..256
замените a:=a+[(sqr(i)+sqr(j))]; на a:=a+[(sqr(i)+sqr(j))-1];
и for I := 1 to 256 do if i in a then write(i,' '); на for I := 0 to 255 do if i in a then write(i+1,' ');
Спасибо большое
HelloInside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача про множини nat@ Помощь студентам 2 30.10.2012 00:21
Множини... Кулибаба Петро Паскаль, Turbo Pascal, PascalABC.NET 12 05.05.2012 18:35
МНОЖИНИ STALKER7538 Паскаль, Turbo Pascal, PascalABC.NET 0 10.10.2010 23:09