Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Надо найти "острова" на квадратной матрице - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ работа со строками. http://www.cyberforum.ru/cpp-beginners/thread37992.html
Здравствуйте, я студент 1го курса, попросили решить задачки на C++, а я с ним как то не очень.буду рад любой помоши, задачи выкладываю ниже Задача 55 Переформировать матрицу таким образом, чтобы...
C++ нахождение минимальных слов Помогите пожалуйста нужна програмка для нахождение минимальных слов в строке и подсчёта их количества :help: слово минимальной длинны (самое короткое, состоящее из наименьшего количества... http://www.cyberforum.ru/cpp-beginners/thread37989.html
Графики функций C++
В курсовой задание построить графики функций входного и выходного сигналов времени Входной: Uvh=U/exp(pow(a,2.0)*pow(t,2.0)) Выходной: for(i=0;i<N;i++) {if (Uvh<0) Uvih=0; else if...
C++ Ошибка с дебагом...
есть код программы #include "stdafx.h" #include <iostream> #include <iomanip> #include <conio.h> #include <string.h> using namespace std; void Choice(); int c=0; //Глобальная...
C++ Максимальный элемент массива http://www.cyberforum.ru/cpp-beginners/thread37954.html
#include <stdio.h> #include <conio.h> main() { int n,i; int a; printf("\n Vvedite kolichestvo elementov v massive \n"); scanf("%d",&n); printf("Vedite %d elementov massiva \n",n);...
C++ Работа с файлом и Обратная матрица Срочно нужна помошь! Практика горит! Вот задачи: 1)Создать файл, содержащий текст на английском языке. Выбрать из него те символы, которые встречаются в нем только один раз, в том порядке, в... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17935 / 6163 / 409
Регистрация: 30.03.2009
Сообщений: 16,918
Записей в блоге: 27
09.06.2009, 21:52
Цитата Сообщение от Трой Посмотреть сообщение
Не думал, что так сложно будет написать код за так. Алчных и жадных людей стало много. Эх Вы!
А ты не думал о том, что людям твои проблемы мягко говоря до фонара (т.е. проблемы негроф шерифа не е$ут) и что задача в общем-то не простая и надо помудохаться, чтобы её написать и отладить. Или ты считаешь, что народ на форуме тусутеся только для того, чтобы тебе программу написать?

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
84
85
86
87
88
89
90
91
92
#include <stdio.h>
#include <stdlib.h>
 
#define DEBUG 1
 
#define N 6
int a[N][N] =
{
 { 1, 0, 1, 1, 0, 1 },
 { 0, 1, 1, 0, 1, 0 },
 { 1, 0, 1, 0, 1, 1 },
 { 1, 1, 1, 0, 0, 1 },
 { 0, 0, 1, 1, 0, 1 },
 { 1, 1, 0, 1, 1, 0 },
};
 
/* Внутренний контроль */
#define ASSERT(x) \
  if (!(x)) abort ();
 
/* Рекурсивная процедура стирания острова, содержащего точку (x,y) */
static void
delete_island (int x, int y)
{
  int dx[4] = { -1, 0, 1, 0 };
  int dy[4] = { 0, -1, 0, 1 };
  int i, x1, y1;
 
  ASSERT (a[x][y] == 1);
 
  /* Сразу сотрём данную точку, чтобы повторно сюда не зайти
   * и не зациклиться */
  a[x][y] = 0;
 
  /* Обходим четырёх соседей и удаляем их */
  for (i = 0; i < 4; i++)
    {
      /* Координаты соседа */
      x1 = x + dx[i];
      y1 = y + dy[i];
 
      /* Проверяем, что сосед попадает в поле и удаляем */
      if (x1 >= 0 && x1 < N && y1 >= 0 && y1 < N)
        if (a[x1][y1] == 1)
          delete_island (x1, y1);
    }
}
 
static void
print (void)
{
  int i, j;
 
  printf ("--------\n");
 
  for (j = 0; j < N; j++)
    {
      for (i = 0; i < N; i++)
        printf ("%d", a[i][j]);
 
      printf ("\n");
    }
}
 
int
main (void)
{
  int count = 0;
  int i, j;
 
  /* Контроль, что матрицу не перекосило */
  ASSERT (sizeof(a) == (sizeof(int) * N * N));
 
  if (DEBUG)
    print ();
 
  for (j = 0; j < N; j++)
    for (i = 0; i < N; i++)
      if (a[i][j] == 1)
        {
          /* Удаляем встретившийся остров */
          delete_island (i, j);
          count++;
 
          if (DEBUG)
            print ();
        }
 
  printf ("Number of islands: %d\n", count);
 
  return 0;
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru