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

Написать рекурсивную функцию, которая находит размер самой большой фигуры - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Интегрирование http://www.cyberforum.ru/cpp-beginners/thread820169.html
Составить программу интегрирования уравнения генератора Ван дер Поля \ddot{x} - (x - {a}^{2}) x + x = 0 методом Эйлера для случая а=1
C++ Как старых версия компилятора можно заменить все значения x на false ! Короче в новых компиляторах Visual C++ можно записать вот так const int T = 12; int A; bool mounf; for( bool &x : mounf) x = false; http://www.cyberforum.ru/cpp-beginners/thread820163.html
Уравнение больше реагирует на значение при инициализации переменной C++
Доброго времени дня! Возникла проблема не пойму в чем дело.. Вот кусок программы. double x,y; ............... else if (i==1){ double r=1; float z=0.005,k=0.00124,t=0.01;
Подскажите по массивам C++
Всем привет! Пишу игру для платформы Bada=) Суть проблемы: есть 2 класса. Из 1-ого класса вызываю функцию 2-ого. Перед этим во 2-классе я заполняю массив с хмл. Так вот. Мне нужно как-то этот массив использовать в вызванной функции. Пишет, что нельзя использовать массив в статической функции. Вот ...invalid use of member 'PictureForm::ALL_PICTURE' in static member function PictureForm.h...
C++ цикл for в интересной записи http://www.cyberforum.ru/cpp-beginners/thread820149.html
char *longest(char *s) { short i, length, maxlength; char *c = s; length = maxlength = 0; for(i=0;; ++i,++s) { if((*s != ' ') && (*s != 0)) { length ++;
C++ Задана целочисленная матрица порядка n x n. Для тестирования предусмотреть возможность задавать элементы массива различным образом: при описании с ини Определить вектор, каждый элемент которого равен скалярному произведению соответствующей строки на себя. Найти наибольший элемент среди элементов главной и побочной диагонали и вывести на экран сумму элементов строки, в которой он находится. Задача нужна на языке с++, среда программирования коде блокс! помогите))) подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
27.03.2013, 17:04     Написать рекурсивную функцию, которая находит размер самой большой фигуры
Ну или можно по-короче.
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
93
94
95
96
97
98
#include <iostream>
#include <cstring>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <algorithm>
 
struct Point {
  int x, y;
  Point() : x(0), y(0) {}
  Point(int x, int y) : x(x), y(y) {}
};
 
std::ostream &operator<<(std::ostream &stream, const Point &point) {
  return stream << "[" << point.x << "," << point.y << "]";
}
 
class Figure {
 public:
  Figure() : points() {}
  void addPoint(const Point &point) {
    points.push_back(point);
  }
  const std::vector<Point> &getPoints() const { return points; }
  size_t getSize() const { return points.size(); }
 private:
  std::vector<Point> points;
};
 
std::ostream &operator<<(std::ostream &stream, const Figure &figure) {
  stream << "Figure{" <<
    "size=" << figure.getSize() << ",points=";
  for (size_t i = 0; i < figure.getPoints().size(); ++i) {
    stream << figure.getPoints()[i];
  }
  return stream << "}";
}
 
bool operator<(const Figure &a, const Figure &b) {
  return a.getSize() < b.getSize();
}
 
Figure &fillFigure(Figure &figure, size_t i, size_t j, char **map,
  size_t height, size_t width) {
  if (i < height && j < width && i >= 0 && j >= 0 && map[i][j] == 1) {
    figure.addPoint(Point(j, i));
    map[i][j] = -1;
    fillFigure(figure, i + 1, j, map, height, width);
    fillFigure(figure, i, j + 1, map, height, width);
    fillFigure(figure, i - 1, j, map, height, width);
    fillFigure(figure, i, j - 1, map, height, width);
  }
  return figure;
}
 
std::vector<Figure> findAreas(char **map, size_t height,
  size_t width) {
  std::vector<Figure> figures;
  for (size_t i = 0; i < height; ++i) {
    for (size_t j = 0; j < width; ++j) {
      if (map[i][j] == 1) {
        Figure figure;
        figures.push_back(fillFigure(figure, i, j, map, height, width));
      }
    }
  }
  return figures;
};
 
int main(int argc, char *argv[]) {
  srand(time(0));
 
  int height = 6;
  int width = 9;
  char **map = new char*[height];
  for (int i = 0; i < height; ++i) map[i] = new char[width];
 
  for (int i = 0; i != height; ++i) {
    for (int j = 0; j != width; ++j) {
      std::cout << char('0' + (map[i][j] = rand() % 2));
    }
    std::cout << std::endl;
  }
 
  std::vector<Figure> figures = findAreas(map, height, width);
  
  for (size_t i = 0; i < figures.size(); ++i) {
    std::cout << figures[i] << std::endl;
  }
 
  std::cout << "Figure with maximum area is: " <<
    *std::max_element(figures.begin(), figures.end()) << std::endl;
  
  for (int i = 0; i < height; ++i) delete [] map[i];
  delete [] map;
  std::cin.get();
  return 0;
}
 
Текущее время: 00:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru