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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2015, 19:39   #1
Nil09511
Пользователь
 
Регистрация: 11.11.2014
Сообщений: 13
По умолчанию Помогите разобраться и доделать цикл в программе. Задача на числа

Задача :
Для заданного натурального N определить наименьшее число S, которое можно представить в виде суммы а^N + b^N по крайней мере двумя различными способами (а, b - натуральные числа; представления, отличающиеся лишь порядком слагаемых, различными не считаются).

Последние циклы не доделаны и выводятся все значения, проходящие через условие. Мне же нужно лишь наименьшее, то есть первое.

Код:
const
   l = 100;
var
   a, b, n, c, d, a1, b1, i : integer;
   s : array[1..l, 1..l] of integer;
begin
   write('Введите n. n = '); readln(n);
   
   for a := 1 to l do {заполнение нулями}
      for b := 1 to l do
         s[a, b] := 0; 
   
   for a := 1 to l do {заполнение значениями}
     for b := 1 to a do begin 
         i := 1;
         a1 := a;
         b1 := b;
         while i < n do begin
            a1 := a1 * a;
            b1 := b1 * b;
            i := i + 1;
         end;
         s[a, b] := a1 + b1;
      end;
   
   for a := 1 to l do {проверка совпадений}
      for b := 1 to l - 1 do
         for c := 2 to l do
            for d := 1 to l do 
               if (s[a, b] = s[c, d]) and (s[a, b] > 0) and (a <> c) and (b <> d) 
                  then write('s = ', s[a, b], ' = ', a, '^', n, ' + ', b, '^', n, ' = ', c, '^', n, ' + ', d, '^', n, '.');
end.
Эту вещь нужно доделать так, чтобы циклы прерывались при первом найденном нужном значении.
Код:
   for a := 1 to l do {проверка совпадений}
      for b := 1 to l - 1 do
         for c := 2 to l do
            for d := 1 to l do 
               if (s[a, b] = s[c, d]) and (s[a, b] > 0) and (a <> c) and (b <> d) 
                  then write('s = ', s[a, b], ' = ', a, '^', n, ' + ', b, '^', n, ' = ', c, '^', n, ' + ', d, '^', n, '.');

Последний раз редактировалось Nil09511; 19.03.2015 в 19:42.
Nil09511 вне форума Ответить с цитированием
Старый 19.03.2015, 20:22   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
чтобы циклы прерывались
способов прерывания вложенных циклов дофига. а язык паскаль или delphi?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите пожалуйста разобраться в программе vaseel1ch Паскаль, Turbo Pascal, PascalABC.NET 1 19.12.2013 11:44
Помогите разобраться в программе... Tee Jay Помощь студентам 0 25.06.2009 19:20
помогите разобраться в программе iwaniwan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 15.04.2009 19:38
Помогите разобраться в программе Gekada Общие вопросы C/C++ 1 09.12.2008 19:23
Задача Delphi. Помогите доделать! Oksana11 Помощь студентам 8 27.12.2007 23:00