Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
XP
1 / 1 / 0
Регистрация: 09.11.2012
Сообщений: 35

Рекурсия и теорема Лагранжа

09.11.2012, 19:25. Показов 3532. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.

Помогите, пожалуйста, разобраться:
1)В первой программе нужно по заданному количеству цифр (n) и самим цифрам, при помощи рекурсии, вывести и в порядке 1, n, 2, n-1, 3 и т.д.. Вот собственно код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{$APPTYPE CONSOLE}
uses
  SysUtils,
  math;
 
var
  z,x,i,n,a:integer;
  q:array[1..1000] of integer;
 
procedure sequence(var q:array of integer;n,a:integer);
begin
  inc(a);
  if (a mod 2=1) and (a<>n) then write(q[a],' ');
  if (a mod 2=0) and (a<>n) then write(q[n+1-a],' ');
  if (a<>n) then sequence(q,n,a);
end;
 
begin
read(n);
a:=0;
for i:=1 to n do
 read(q[i]);
 sequence(q,n,a);
 readln;readln;
end.
Не понимаю ошибки

2)Нужно вывести двумерный массив (опять же рекурсией) c спиралькой до числа n2 ( на вход число n).
Например:
Вход:3
Выход:
1 2 3
8 9 4
7 6 5
Столкнулся с проблемой, как задать двумерный массив в функцию. Вот код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
program egorlox;
{$APPTYPE CONSOLE}
uses
  SysUtils,
  math;
 
var
  z,a,b,c,x,y,i,w,n,chet:integer;
  q:array[1..10,1..10] of integer;
 
 
procedure spiral(var q:array of integer;x,y,chet,n:integer); // Вот попытка ввода двумерного массива
begin
 if (x<=n) then
  begin
    if (y<=n) then
     begin
      q[x,y]:=chet;
      inc(chet);
     end
    else
     begin
       y:=1;
       q[x,y]:=chet;
       inc(chet);
     end;
  end;
 spiral(q,x,y,chet,n);
end;
 
 
begin
 read(n);
 x:=1;
 y:=1;
 chet:=1;
 spiral(q,x,y,chet,n);
 for i:=1 to n do
  for z:= 1 to n do
   write(q[i,z],' ');
 readln;readln;
end.
3) Никак не придумать алгоритм для решения теоремы Лагранжа для вводимого числа (Теорема Лагранжа утверждает, что каждое натуральное число может быть представлено в виде суммы четырех квадратов целых чисел. )

Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.11.2012, 19:25
Ответы с готовыми решениями:

Теорема Лагранжа
Теорема Лагранжа утверждает, что любое натуральное число можно представить в виде суммы не более, чем четырех точных квадратов. По данному...

Теорема Лагранжа
В теореме Лагранжа есть два условия: 1.f непрерывна на отрезке 2.f дифференцируема на интервале (a,b) Заключение:...

Всегда ли верна теорема Лагранжа в физике?
1) Всегда ли верна теорема Лагранжа в физике, возможны ли случаи когда энергия сохраняется по иным законам - иными способами, и также...

4
 Аватар для Rolion
14 / 14 / 8
Регистрация: 04.01.2011
Сообщений: 195
10.11.2012, 00:13
1) Передавать массив не обязательно. Достаточно объявить его глобальной переменной и работать с ним в процедуре
2) Ты уверен, что прога №2 вообще работает? Судя по функции, значения x и y не меняются.
3) Какое ограничение в третьем? Может зайдёт просто перебор.

Добавлено через 29 минут
Первая:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
var
  n,q,count,k:integer;
 
procedure r(c:integer);
var
  t:integer;
  f:boolean;
begin
  if count<k then
    begin
      f:=true;
      if (c=q) then
        begin
          write(c,' ');
          inc(count);
          dec(n);
          f:=false;
          r(c+1);
        end
      else
      if (c=n) then
        begin
          write(c,' ');
          inc(count);
          inc(q);
          f:=false;
          r(1);
        end;
      if f then r(c+1);
    end;
end;
 
begin
  read(n);
  k:=n;
  n:=n+1;
  q:=1;
  count:=0;
  r(1);
  readln;readln;
end.
1
XP
1 / 1 / 0
Регистрация: 09.11.2012
Сообщений: 35
10.11.2012, 00:46  [ТС]
Цитата Сообщение от Rolion Посмотреть сообщение
1) Передавать массив не обязательно. Достаточно объявить его глобальной переменной и работать с ним в процедуре
2) Ты уверен, что прога №2 вообще работает? Судя по функции, значения x и y не меняются.
3) Какое ограничение в третьем? Может зайдёт просто перебор.
Спасибо!
Только в первой программе дается не только количество элементов последовательности, но и сами элементы.

Свою вторую программу я не имею возможности запустить, т.к. я пытался в процедуру ввести двумерный массив и не придумал как

А насчет теоремы я не думаю, что перебор уложится в 2-е секунды с учетом, что максимальное число, дающееся на вход = 10000
0
 Аватар для Rolion
14 / 14 / 8
Регистрация: 04.01.2011
Сообщений: 195
10.11.2012, 17:30
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
var
  n,q,count,k,i:integer;
  A:array [1..1000] of integer;
 
procedure r(c:integer);
var
  t:integer;
  f:boolean;
begin
  if count<k then
    begin
      f:=true;
      if (c=q) then
        begin
          write(A[c],' ');
          inc(count);
          dec(n);
          f:=false;
          r(c+1);
        end
      else
      if (c=n) then
        begin
          write(A[c],' ');
          inc(count);
          inc(q);
          f:=false;
          r(1);
        end;
      if f then r(c+1);
    end;
end;
 
begin
  read(n);
  for i:=1 to n do read(A[i]);
  k:=n;
  n:=n+1;
  q:=1;
  count:=0;
  r(1);
  readln;readln;
end.
Добавлено через 25 минут
Вторая:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
var
  z,i,n:integer;
  q:array[1..10,1..10] of integer;
 
 
procedure spiral(x,y,chet,w,count:integer); // w -- ïóòü
begin
  q[y,x]:=chet;
  if count<n*n then
    case w of
    1:
      begin
        if q[y-1,x]<>0 then spiral(x+1,y,chet+1,2,count+1)
        else spiral(x,y-1,chet+1,1,count+1);
      end;
    2:
      begin
        if x=n then spiral(x,y+1,chet+1,3,count+1)
        else if q[y,x+1]<>0 then spiral(x,y+1,chet+1,3,count+1)
        else spiral(x+1,y,chet+1,2,count+1);
      end;
    3:
      begin
        if y=n then spiral(x-1,y,chet+1,4,count+1)
        else if q[y+1,x]<>0 then spiral(x-1,y,chet+1,4,count+1)
        else spiral(x,y+1,chet+1,3,count+1);
      end;
    4:
      begin
        if x=1 then spiral(x,y-1,chet+1,1,count+1)
        else if q[y,x-1]<>0 then spiral(x,y-1,chet+1,1,count+1)
        else spiral(x-1,y,chet+1,4,count+1);
      end;
    end;
end;
 
 
begin
 read(n);
 spiral(1,1,1,2,1);
 for i:=1 to n do
 begin
  for z:= 1 to n do
   write(q[i,z],' ');
  writeln;
 end;
 readln;readln;
end.
1
XP
1 / 1 / 0
Регистрация: 09.11.2012
Сообщений: 35
10.11.2012, 22:30  [ТС]
Rolion, огромное тебе спасибо!

Добавлено через 1 час 0 минут
Спасибо всем

Добавлено через 3 минуты
Кто знает как удалить тему? Просто кнопки "Править" у первого сообщение нету? (В правилах и справке не нашел)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2012, 22:30
Помогаю со студенческими работами здесь

Теорема Ферма и теорема Безу
Уважаемые господа, предлагаю вашему вниманию доказательство Великой теоремы Ферма с помощью теоремы Безу. Великая теорема Ферма...

Покажите, что если бы теорема Райса–Успенского была неверна, то и теорема Клини была бы неверна
Покажите, что если бы теорема Райса–Успенского была неверна, то и теорема Клини была бы неверна.

Теорема ИИ
ИИ - это процесс замены усредненных величин памяти в момент получения информации пример: ребенок не знает, что такое горячо -...

Теорема пифагора
Доброго времени суток, есть теорема Пифагора a2= b2+ c2−2bc ·cos(A) я пытаюсь ее перенести в программу, но оно упорно не правильно...

Теорема Дидукции
Ребята, вот начал решать пример по теореме дидукции и сразу же не могу понять, как дальше преобразовывать, какими аксиомными схемами...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru