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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ работа со строками. http://www.cyberforum.ru/cpp-beginners/thread37992.html
Здравствуйте, я студент 1го курса, попросили решить задачки на C++, а я с ним как то не очень.буду рад любой помоши, задачи выкладываю ниже Задача 55 Переформировать матрицу таким образом, чтобы ее столбцы располагались по возрастанию их последних элементов. Задача 56 Вычислить факториал числа n. Факториал числа представить в виде целочисленного массива десятичных цифр. Задача 57...
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 ((Uvh<U1)&&(Uvh>=0)) Uvih=Uvh*U3/U1; else if ((Uvh<U2)&&(Uvh>=U1)) Uvih=Uvh*(U4-U3)/(U2-U1)+U3-(U1*U4-U1*U3)/(U2-U1);}
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); for(i=1;i<=n;i++)
C++ Работа с файлом и Обратная матрица Срочно нужна помошь! Практика горит! Вот задачи: 1)Создать файл, содержащий текст на английском языке. Выбрать из него те символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются в тексте. 2)Создать файл, содержащий текст на английском языке. Выбрать из него те символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются в... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17536 / 5774 / 370
Регистрация: 30.03.2009
Сообщений: 15,892
Записей в блоге: 26
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;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru