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

Обработка out_of_range - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вызов приложения на C++ и передача ему управления http://www.cyberforum.ru/cpp-beginners/thread962301.html
Программа которая должна из своего API вызвать приложение на C++ и передать ему управление. В API программы сделал так, записал поинтер приложения в файл. Главное что не получается это потом этот...
C++ как задать цикл є приклад y=(tan(2*t-3*t))/(t+3); как задать крок цикла? t>=-0.5, дельта t, n=5. Я непонимаю для чего n. Как его использовать. Помогите http://www.cyberforum.ru/cpp-beginners/thread962298.html
C++ Необходимо запускат на старых версиях Windows
В дополнительных требованиях к заданию стоит требование запуска приложения на всех ОС Win32. Старался писать код достаточно старыми конструкциями, но Dev-C++ Portable выдал сообщение, что необходим...
Списки. Найти сумму первого и последнего элемента C++
Двунаправленный список.Найти сумму первого и последнего элемента.Заранее спасибо
C++ написать программу использую только побитовые операции и выполнить на текстовых данных http://www.cyberforum.ru/cpp-beginners/thread962280.html
Определить длину самой длинной цепочки единиц в переменной unsigned long a
C++ Задача:Разбить последовательность чисел от 1 до N^2 на N последовательностей так, чтобы все Задача:Разбить последовательность чисел от 1 до N^2 на N последовательностей так, чтобы все они состояли из N чисел и имели равные суммы. Результат вывести на экран. Если решений несколько – вывести... подробнее

Показать сообщение отдельно
Croessmah
Эксперт CЭксперт С++
13415 / 7568 / 855
Регистрация: 27.09.2012
Сообщений: 18,631
Записей в блоге: 3
Завершенные тесты: 1
25.09.2013, 19:22
Цитата Сообщение от Peperovich Посмотреть сообщение
ну при заходе в catch я же уже не смогу вернуться, чтобы продолжить. Придется писать 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
26
size_t GetSumm ( std :: vector < std :: vector < int > > & vec , size_t x , size_t y ) {
   struct Point {
      int x ;
      int y ;
   } ;
   static const Point directions [ ] = {
     { -1 , -1 } ,
     { 0 , -1 } ,
     { 1 , - 1 } ,
     { -1 , 0 } ,
     { 1 , 0 } ,
     { -1 , 1 } ,
     { 0 , 1 } ,
     { 1 , 1 }
   };
   static const size_t directionsCount = sizeof ( directions ) / sizeof ( *directions ) ;
   size_t summ = 0 ;
   for ( size_t d = 0 ; d < directionsCount ; ++d ) {
      try {
         summ += vec.at ( x + directions[d].x ).at ( y + directions[d].y ) ;
      }
      catch ( std::out_of_range& e ) {
      }
   }
   return summ ;
}
Для вызова передаете вектор и проверяемую клетку. Получаете сумму восьми соседей.
Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main( ) {
   std :: vector < std :: vector < int > > vec {
      { 1 , 1 , 1 } ,
      { 1 , 1 , 1 } ,
      { 1 , 1 , 1 } ,
   };
   for ( size_t i = 0 ; i < vec.size ( ) ; ++i ) {
      for ( size_t j = 0 ; j < vec.at ( i ).size ( ) ; ++j )
        std :: cout << std :: setw ( 3 ) << GetSumm ( vec , i , j ) ;
      std :: cout << std :: endl ;
   }
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru