Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
7 / 6 / 5
Регистрация: 08.12.2009
Сообщений: 105
1

Рекурсия: проверка массива на симметричность

16.02.2010, 18:54. Показов 2131. Ответов 7
Метки нет (Все метки)

вобщем задание я думаю понятно из названия темы.. нужно проверить одномерный массив на симметричность использую рекурсию.
И ещё задачка: Дан массив из чисел в котором встречаются повторяющиеся элементы, нужно вывести все возможные перестановки чисел при чём они не должны повторятся..(опять же используя рекурсию)
помогите пожалуйста т.к рекурсию начали проходить ток сегодня и вот уже не понятно..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.02.2010, 18:54
Ответы с готовыми решениями:

Проверка матрицы на симметричность
Помогите с лабой. Двумерный динамический массив нужно заполнить случайными числами и вывести...

Рекурсия - определить симметричность строки
Используя рекурсивную логическую функцию от целых i, j, проверяющую является ли симметричной часть...

Проверка на симметричность слова
void main() { char line; printf("vvedite stroku\n"); scanf("%s",line); for (int...

проверка на симметричность матрицы
uses crt; const n=10; var a: array of integer; i,j,s,s1:integer; procedure zapoln; begin...

7
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
17.02.2010, 02:55 2
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
type
  TMyArr= array [0..4] of integer;
var
  Form1: TForm1;
  Arr: TMyArr;
 
implementation
 
{$R *.dfm}
 
function Symmetry(const S: TMyArr; i: integer): boolean;
begin
  if i+1>(Length(S)/2) then Symmetry:=True
  else begin
    if S[i]=S[high(S)-i] then Symmetry:=Symmetry(S,i+1)
    else Symmetry:=False;
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Symmetry(Arr,0) then ShowMessage('YES!')
  else ShowMessage('NO!');
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  Arr[0]:=2;
  Arr[1]:=9;
  Arr[2]:=5;
  Arr[3]:=9;
  Arr[4]:=2;
  for i := low(Arr) to high(Arr) do begin
    Label1.Caption:=Label1.Caption+IntToStr(Arr[i])+' ';
  end;
end;
если что не понятно спрашивай
0
7 / 6 / 5
Регистрация: 08.12.2009
Сообщений: 105
17.02.2010, 07:33  [ТС] 3
Biggemot, ой извините, забыл указать... apptype console))
0
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
17.02.2010, 10:22 4
даже переделать самому лень? в консоли все тоже кроме клика по кнопке и ShowMessage
0
7 / 6 / 5
Регистрация: 08.12.2009
Сообщений: 105
17.02.2010, 15:43  [ТС] 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
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
const
  n=5;
type
  TMyArr= array [0..n] of integer;
function Symmetry(const S: TMyArr; i: integer): boolean;
  begin
    if i+1>(Length(S)/2) then Symmetry:=True
      else begin
        if S[i]=S[high(S)-i] then Symmetry:=Symmetry(S,i+1)
      else Symmetry:=False;
    end;
  end;
var
  i:integer;
  Arr: TMyArr;
begin
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
for i:=1 to n do
  begin
    writeln ('Введите ',i,'-й элемент массива');
    readln (Arr[i]);
  end;
if Symmetry (Arr,0) then
  writeln ('Массив симметричен')
else
  writeln ('Массив не симметричен');
readln;
end.
0
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
17.02.2010, 15:53 6
индексы массива от 0 до N
Delphi
1
TMyArr= array [0..n] of integer;
а значения ты получаешь от 1 до N.
сделай так
Delphi
1
for i:=0 to n do
1
7 / 6 / 5
Регистрация: 08.12.2009
Сообщений: 105
17.02.2010, 17:16  [ТС] 7
Biggemot, вот сделал
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
program symmetry;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
const
  n=5;
type
  TMyArr= array [0..n] of integer;
function Symmetry(const S: TMyArr; i: integer): boolean;
  begin
    if i+1>(Length(S)/2) then Symmetry:=True
      else begin
        if S[i]=S[high(S)-i] then Symmetry:=Symmetry(S,i+1)
      else Symmetry:=False;
    end;
  end;
var
  i:integer;
  Arr: TMyArr;
begin
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
for i:=0 to n do
  begin
    writeln ('Введите ',i+1,'-й элемент массива');
    readln (Arr[i]);
  end;
if Symmetry (Arr,0) then
  writeln ('Массив симметричен')
else
  writeln ('Массив не симметричен');
readln;
end.
благодарю) а со второй задачей поможете разобраться? хотябы идею подкиньте пожалуйста
0
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
17.02.2010, 19:04 8
Цитата Сообщение от STL1te Посмотреть сообщение
а со второй задачей поможете разобраться? хотябы идею подкиньте пожалуйста
пока ничего не лезет в голову
если придумаю напишу
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2010, 19:04

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Проверка числа на симметричность цифр
Определить, является ли n>0 симметричным в десятичной записи. Например число 4664 симметрично

Проверка квадратной матрицы на симметричность
Помогите сделать программу, вот мой код: #include "stdafx.h" #include "stdio.h" #include...

Проверка последовательности символов на симметричность
Уважаемые пользователи, помогите пожалуйста. Необходимо реализовать структуру проверки...

Проверка строки матрицы на симметричность
Как проверить строку матрицы на симметричность, если строка симметрична то в вектор b занести 1...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.