Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Поиск пифагоровых чисел, а заданном интервале 
:(
    Опции темы
Kuvaldis
Дата 14.10.2006, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


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

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



Со знаком поправил, см. предыдущий пост


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Tauros
Дата 14.10.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



после значения верхней границы 181 выдает ошибку 207 (ту же самую)
PM MAIL   Вверх
Kuvaldis
Дата 14.10.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


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

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



Tauros, 
Понял!!!smile 
Ты ж пишешь в паскале (я тестил в консольке Delphi). А какое максимально допустимое значение для типа integer в паскале?? Правильно: 32767 (2 байтовое знаковое число). Поэтому так и работает. Чтобы исправить, замени все переменные типа integer на longint 

Это сообщение отредактировал(а) Kuvaldis - 14.10.2006, 15:50


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Tauros
Дата 14.10.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Kuvaldis, 
действительно помогло!!!!!!  smile 
а что насчет разных знаков интервала???? очень много менять придется?
PM MAIL   Вверх
Kuvaldis
Дата 14.10.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


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

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



Tauros, 
ну, ты душу всю вынешь. smile  Вот
Добавилась процедура, которая проверяет все возможные комбинации из 3 чисел (их 8) на попадание в заданный интервал. Если попадает, то выводим

P.S. int на longint сам замени. Мне лень.

Код

program Project2;
var
    m0, n0  : integer;
    m, n    : integer;
    a, b, c : integer;   
    k       : integer;   
    b2      : integer;
    count   : integer;
//*****************************************************************************
procedure OutputAnswer(var count : integer; a, b, c, n0, m0 : integer);
var
  i, j, k : integer;
begin   
   for i := 1 to 2 do
   begin
       for j := 1 to 2 do
       begin
           for k := 1 to 2 do
           begin
                if ((c >= n0) and (c <= m0)) and ((b >= n0) and (b <= m0)) and
                   ((a >= n0) and (a <= m0))  then
                begin
                    count := count + 1;
                    writeln('"', count, '" ', a  : 6, b : 6, c : 6);  
                end;
                c := -c;
           end;
           b := -b;
       end;
       a := -a;
   end;
end;   
//*****************************************************************************
begin
    writeln('Input lower border n');
    readln(n0);
    writeln('Input higer border m');
    readln(m0);
    
    if (m0 * n0 > 0) and (m0 < 0) then    // exchange
    begin
        n := -m0;
        m := -n0;
    end
    else if (m0 * n0 < 0) then
    begin
        n := 0;
        if abs(n0) > abs(m0) then
          m := abs(n0)
        else
          m := abs(m0);
    end
    else
    begin
        n := n0;
        m := m0;
    end;

    c := integer( Trunc(n * sqrt(2)) ) + 1;
    count := 0;
    while (c <= m) do
    begin
        k := integer (Trunc(c / sqrt(2)) );
        for a := n to k do
        begin
            b2 := c * c - a * a;
            b := integer (Trunc(sqrt(b2)) );
            if (b * b = b2) then
            begin
                OutputAnswer(count, a, b, c, n0, m0);            
            end;
        end;
        c := c + 1;
    end;
    if (count = 0) then
       writeln('Not found');
    readln;
End.


Это сообщение отредактировал(а) Kuvaldis - 14.10.2006, 16:21


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Tauros
Дата 14.10.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Kuvaldis, 
дааа ))) мягко говоря потруднее стало ))))  Спасибо большое за помощь!!! )))

p.s. ты в код еще какую то программу засунул!!! ))))
PM MAIL   Вверх
Kuvaldis
Дата 14.10.2006, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


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

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



Tauros, 
1.Надеюсь, теперь ты удовлетворен?
2. 
Цитата

p.s. ты в код еще какую то программу засунул!!! ))))

Основная программа осталась без изменений почти. Мы корректируем отрезок из положительных (!) чисел для поиска. Если одно число < 0, а другое > 0, то ищем все варианты на отрезке 0 .. max(m0, n0).

Ищем неотрицательные тройки. Потом вызываем процедуру, которая перебирает все возможные варианты троек (когда а, b, c +/-) и проверяет попадают ли эти числа в заданный интервал. Если да, то вывод


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Tauros
Дата 16.10.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Kuvaldis, 
Цитата(Sartorius @  12.10.2006,  18:08 Найти цитируемый пост)
Перебирай просто все троики из интервала.... 


Цитата(Kuvaldis @  13.10.2006,  12:12 Найти цитируемый пост)
Это не рационально.


может и не рационально, но преподша сказала , про тот вариант что я показал (твой), цитирую: "Зачем так сложно?... Что это? я это не понимаю.... давай, я этого не видела, переделай..." и еще оказалось что пофиг на то положительные числа или отрицательные

Это сообщение отредактировал(а) Tauros - 16.10.2006, 16:12
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

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


 




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


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.