Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
 Аватар для Talkoflights
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274

Рекурсия: с помощью признака делимости на 3 проверить, кратно ли данное натуральное число 3

17.12.2012, 11:53. Показов 2547. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Извините, что отвлекаю.
2 таких задачки попались на рекурсии.
1)С помощью признака делимости на 3 проверить, кратно ли данное натуральное число 3. Написать рекурсивную функцию.
2)Дана матрица a(m,n) из 0 и 1. Найти в ней квадратную подматрицу из одних единиц максимального размера.(Тоже с помощью рекурсии)
Сказали сделать с вводом из файла fayl и выводом результат туда же(для каждой задачи отдельный файл(fayl1.txt, fayl2.txt).

Добавлено через 16 минут
Задачу 1 знаю, как решить.
А вот со второй задачей проблема. Как решать знаю, но без рекурсии.
Добавлено через 1 час 56 минут
2-ю программу можно и без рекурсии, лишь бы работала. Потому как сколько ни бился над алгоритмом, сам никак не могу вывести.
Добавлено через 8 часов 45 минут
Еще актуально

Добавлено через 1 час 8 минут
Подсказали код на С++, нужно перевести.
C++
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
int col=0, i, j, i1, j1, tmp, tmp1;
 for(i=0; i<m; i++)
        for(j=0; j<n; j++)
      {
          if(a[i][j]!=0)
          {
              tmp=0;
              for(j1=j; j1<n && a[i][j1]!=0; j1++)
              {
 
                  tmp1=0;
                  for(i1=i; i1<m && a[i1][j1]!=0; i1++)
                      tmp1++;
                  if(!tmp)
                      tmp=tmp1;
                  else
                  {
                      if(tmp>tmp1)
                          tmp=tmp1;
                  }
                    if(col<tmp*(j1-j+1))
                        col=tmp*(j1-j+1);                    
              }
          }
      }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.12.2012, 11:53
Ответы с готовыми решениями:

Рекурсия: с помощью признака делимости на 11, проверьте кратно ли заданное натуральное число 11
с помощью признака делимости на 11, проверьте кратно ли заданное натуральное число 11. напишите рекурсивную функцию Очень нужна помощь!

Дано натуральное число P. Проверьте, кратно ли число P девяти, используя признак делимости на 9
Дано натуральное число P. Проверьте, кратно ли число P девяти, используя признак делимости на 9.

Рекурсия: проверить, кратно ли данное натуральное число 9
1)Разработать программу решения задачи с использованием процедур и функций над строками и операций над множествами.+блок схема ...

5
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
17.12.2012, 13:38
Еще одно up, или Upd, зашибу.
1
 Аватар для Talkoflights
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
17.12.2012, 13:39  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
Еще одно up, или Upd, зашибу.
А как тему-то подымать?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
17.12.2012, 13:43
Talkoflights, А Правила читать не пробовал?
1
 Аватар для Talkoflights
25 / 25 / 17
Регистрация: 23.09.2012
Сообщений: 274
18.12.2012, 19:24  [ТС]
Задача актуальна.

Добавлено через 3 часа 34 минуты
Задача актуальна.

Добавлено через 46 минут
Задача актуальна.

Добавлено через 20 минут
Задача актуальна.

Добавлено через 1 час 29 минут
Задача актуальна.

Добавлено через 58 минут
Задача актуальна.

Добавлено через 3 минуты
Код на С++
C++
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
?#include
#define bool int
#define R 6
#define C 5
 
void printMaxSubSquare(bool M[R][C])
{
  int i,j;
  int S[R][C];
  int max_of_s, max_i, max_j; 
 
  /* Set first column of S[][]*/
  for(i = 0; i < R; i++)
     S[i][0] = M[i][0];
 
  /* Set first row of S[][]*/
  for(j = 0; j < C; j++)
     S[0][j] = M[0][j];
 
  /* Construct other entries of S[][]*/
  for(i = 1; i < R; i++)
  {
    for(j = 1; j < C; j++)
    {
      if(M[i][j] == 1)
        S[i][j] = min(S[i][j-1], S[i-1][j], S[i-1][j-1]) + 1;
      else
        S[i][j] = 0;
    }
  } 
 
  /* Find the maximum entry, and indexes of maximum entry
     in S[][] */
  max_of_s = S[0][0]; max_i = 0; max_j = 0;
  for(i = 0; i < R; i++)
  {
    for(j = 0; j < C; j++)
    {
      if(max_of_s < S[i][j])
      {
         max_of_s = S[i][j];
         max_i = i;
         max_j = j;
      }
    }
  }     
 
  printf("\n Maximum size sub-matrix is: \n");
  for(i = max_i; i > max_i - max_of_s; i--)
  {
    for(j = max_j; j > max_j - max_of_s; j--)
    {
      printf("%d ", M[i][j]);
    }
    printf("\n");
  }
}     
 
/* UTILITY FUNCTIONS */
/* Function to get minimum of three values */
int min(int a, int b, int c)
{
  int m = a;
  if (m > b)
    m = b;
  if (m > c)
    m = c;
  return m;
}
 
/* Driver function to test above functions */
int main()
{
  bool M[R][C] =  {{0, 1, 1, 0, 1},
                   {1, 1, 0, 1, 0},
                   {0, 1, 1, 1, 0},
                   {1, 1, 1, 1, 0},
                   {1, 1, 1, 1, 1},
                   {0, 0, 0, 0, 0}};
 
  printMaxSubSquare(M);
  getchar();
}
Добавлено через 10 часов 58 минут
Задача актуальна.

Добавлено через 8 часов 9 минут
Задача актуальна.

Добавлено через 2 часа 9 минут
Задача актуальна.
0
 Аватар для ermolay
3451 / 2389 / 2135
Регистрация: 04.12.2011
Сообщений: 3,966
18.12.2012, 20:32
2-я задача без рекурсии

Pascal
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
const
  nmax = 20;
 
var
  a: array[1..nmax, 1..nmax] of integer;
  i, j, p, q, t, max, x1, y1, x2, y2: byte;
  boo: boolean;
  n, m, ch: integer;
  f,f1: text;
 
begin
  n := 0;
  m := 0;
  assign(f, 'c:\input.txt');
  reset(f);
  
  while not EOF(f) do
  begin
    readln(f, ch);
    inc(n)
  end;
  close(f);
  reset(f);
  
  while not EOLn(f) do
  begin
    read(f, ch);
    inc(m)
  end;
  writeln('строк: ',n, ',  столбцов: ', m);
  close(f);
  writeln;
  reset(f);
  for i := 1 to n do
    for j := 1 to m do
      read(f, a[i, j]);
  close(f);
  for i := 1 to n do
  begin
    for j := 1 to m do
      write(a[i, j]:2);
    writeln;
  end;
  
  for i := 1 to n do
    for j := 1 to m do      
      if a[i, j] = 1 then
      
      begin
        boo := true; t := 0;
        while (boo = true) and (i + t <= n) and (j + t <= m) do
        begin
          inc(t);
          if (boo) and (max < t) then
          begin
            max := t;  x1 := i; y1 := j;
            x2 := i + t - 1; y2 := j + t - 1;
          end;          
          for p := i to i + t do
          begin
            if p <= n then
            begin
              for q := j to j + t do
              begin
                if q <= m then
                  if a[p, q] = 0 then boo := false;  
              end;
            end;
            if boo = false then break;             
          end;
        end;       
      end;
  assign(f1, 'c:\output.txt');
  rewrite(f1);
  writeln(f1,'Размер матрицы = ', max);
  writeln(f1,'Левый верхний угол ',x1,'  ',y1);
  writeln(f1,'Правый нижний угол ',x2,'  ',y2);
  writeln('Размер матрицы = ', max);
  writeln('Левый верхний угол ',x1,'  ',y1);
  writeln('Правый нижний угол ',x2,'  ',y2);
  close(f1);
end.
Добавлено через 1 минуту
вывод во второй файл сделал, подкорректируйте, если нужно..

Добавлено через 10 минут
подправил
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2012, 20:32
Помогаю со студенческими работами здесь

Дано целое число n. Вывести числа от 2 до 11, на которые поделится данное число (используя только признаки делимости)
Дано целое число n. Вывести числа от 2 до 11, на которые поделится данное число (используя только признаки делимости) Помогите...

Рекурсия: с использованием признака делимости на 9, проверьте, кратно ли данное натуральное число 9
С помощью признака делимости на 9, проверьте кратно ли данное натуральное число 9. Напишите рекурсивную процедуру.

С признака делимости на 11 проверьте, кратно ли данное натуральное число 11. Напишите рекурсивную функцию
С признака делимости на 11 проверьте, кратно ли данное натуральное число 11. Напишите рекурсивную функцию. (Признак делимости на 11,...

С признака делимости на 11 проверьте, кратно ли данное натуральное число 11.Напишите рекурсивную функ
С признака делимости на 11 проверьте, кратно ли данное натуральное число 11. Напишите рекурсивную функцию. (Нужно через признак делимости...

Дано натуральное число n, проверить, кратно ли оно 11 используя признак делимости на 11
Помогите задачу решить: Дано натуральное число n, проверить, кратно ли оно 11 используя признак делимости на 11. Вот моя работа под...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru