Kirschen
1

Подсчет количества грядок на садовом участке (Pascal -> C++)

19.04.2009, 23:14. Показов 2250. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!Задача:

Прямоугольный садовый участок шириной N и длиной M метров разбит на квадраты со стороной 1 метр. На этом участке вскопаны грядки. Грядкой называется совокупность квадратов, удовлетворяющая таким условиям:
• из любого квадрата этой грядки можно попасть в любой другой квадрат этой же грядки, последовательно переходя по грядке из квадрата в квадрат через их общую сторону;
• никакие две грядки не пересекаются и не касаются друг друга ни по вертикальной, ни по горизонтальной сторонам квадратов (касание грядок углами квадратов допускается).
Подсчитайте количество грядок на садовом участке.
Ограничения: 1 <= N, M <= 200, время 1 с.
Ввод из файла beds.in. В первой строке находятся числа N и M через пробел, далее идут N строк по M символов. Символ # обозначает территорию грядки, точка соответствует незанятой территории. Других символов в исходном файле нет.
Вывод в файл beds.out. Вывести одно число - количество грядок на садовом участке.
Примеры
Ввод 1
5 10
##......#.
.#..#...#.
.###....#.
..##....#.
........#.
Вывод 1
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
#include <fstream.h>
 
char c[202][202];
 
typedef arr, byte[40000];
 
unsigned short first,last;
 
int n,m,i,j,coun;
 
arr *ii, *jj;
 
void put(int i, int j)
{
  if (c[i][j] == '#')
    {
      last++;
      ii[last] = i;
      jj[last] = j;
      c[i][j] = '.';
    }
}
 
void get(int *i, int *j)
{
  *i = ii[first];
  *j = jj[first];
  first++;
}
 
void paint(int i, int j)
{
  first = 1;
  last = 0;
  put(i,j);
  while (first<=last)
    {
      get(&i,&j);
      put(i+1,j);
      put(i-1,j);
      put(i,j+1);
      put(i,j-1);
    }
}
 
void main()
{
  ii = new arr;
  jj = new arr;
  ifstream input("beds.in");
  ofstream output("beds.out");
  input >> n;
  input >> m;
  for (i = 0; i <= n+1; i++)
    for (j = 0; j <= m+1; j++)
      c[i][j] = '.';
  for (i = 1; i <= n; i++)
    {
      for (j = 1; j <= m; j++)
        input >> c[i][j];
    }
  coun = 0;
  for (i = 1; i <= n; i++)
    for (j = 1; j <= m; j++)
      if (c[i][j] == '#')
        {
          paint(i,j);
          coun++;
        }
/*  delete[] ii;
  delete[] jj;  */
  output << coun;
}
Где-то с указателями бага (ошибка при освобождении), но ответ вроде правильный...
Помогите исправить!

Добавлено через 6 минут 18 секунд
извините за название темы,нужно просто ошибку исправить..
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2009, 23:14
Ответы с готовыми решениями:

Подсчитать количество грядок на садовом участке
Прямоугольный садовый участок шириной N и длиной M метров разбит на квадраты со стороной 1 метр. На...

Составьте программу расчета количества грядок на садовом участке
Грядки. Садовый участок, имеющий прямоугольную форму и разбитый на квадратные клетки со стороной...

Подсчитайте количество грядок на садовом участке
Господа, помогите. Все написала, а вот в чем дело понять не могу! Вот, собственно, задача:...

Подсчёт количества бортиков для грядок в зависимости от длины и ширины
Привет всем! Вот такая задачка. Есть бортики для грядок. 2 метра, 1 метр, 0,7 метра и 0,5 метра....

3
3326 / 2591 / 313
Регистрация: 11.03.2009
Сообщений: 5,921
20.04.2009, 02:13 2
Попробуй delete ii и delete jj вместо delete [] ii delete [] jj.
1
Maniac
Эксперт С++
1463 / 964 / 160
Регистрация: 02.01.2009
Сообщений: 2,818
Записей в блоге: 1
20.04.2009, 04:55 3
Цитата Сообщение от Kirschen Посмотреть сообщение
Вот практически рабочий вариант:
теоретически так точнее.
меня вот
C++
1
typedef arr, byte[40000];
эта строка смутила. и желательно все глобальные переменные где то спрятать.
1
Kirschen
20.04.2009, 21:21 4
Если это чем-то поможет,то я могу скинуть эту же задачу на питоне или паскале)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2009, 21:21
Помогаю со студенческими работами здесь

Валя и Вера на своем садовом участке собрали А кг клубники. Из них В кг собрала Вера.Кто из девочек собрал клубники боль
Валя и Вера на своем садовом участке собрали А кг клубники. Из них В кг собрала Вера.Кто из девочек...

Перевод с Pascal на C#: подсчет количества цифр
Здравствуйте, очень нужно перевести задачи из паскаля в C#. Тут задачи и ссылки на задачи на...

Подсчет суммы на определенном участке
Необходимо посчитать отдельно сумму для участка R33 (WAFIOS), он находиться в справочнике...

Подсчёт количества символов и количества строк в файле
Нужно написать программу, которая запрашивает у пользователя имя (адрес) текстового файла, далее...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru