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

Король и ферзи - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ exception handline. Strange mistake http://www.cyberforum.ru/cpp-beginners/thread600683.html
В самом конце после того как компелятор отработал перед тем как выйти выдает ошибку "Windows has triggered a breakpoint in _project name_.exe. This may be due to a corruption of the heap, which indicates a bug in _project name_.exe or any of the DLLs it has loaded. This may also be due to the user pressing F12 while _project name_.exe has focus. The output window may have more...
C++ удаление лишних пробелов Составить программу, которая для каждого слова введенного предложения определяет, является ли оно целым десятичным числом (м. б. Со знаком) и результат заносит в дополнительную строку. #include "ctype.h" #include "stdlib.h" #include "stdio.h" #include "string.h" int main() { char *str = new char; http://www.cyberforum.ru/cpp-beginners/thread600680.html
C++ Требуется решение
Решите, пожалуйста в Borland C++ Две окружности. Проверить лежит ли окружность {(x-a1)}^{2}+{(y-b1)}^{2}={r1}^{2} целиком внутри окружности {(x-a2)}^{2}+{(y-b2)}^{2}={r2}^{2} или наоборот.
Считывание символов и задачки порешать если кто знает C++
Учил Си с начала только что окончившегося учебного года) Это мой первый язык программирования! Последняя написанная мной программа была Записная книжка, а именно: #include <string.h> #include <stdlib.h> #include <stdio.h> #define NUM_ELEM 50 #define EXIT '0' #define NAME '1' #define LIST '1' #define SURNAME '2' #define ADD '2'
C++ Дан текстовый файл (файл для чтения во вложениях) с упрощённым каталогом выставки собак. http://www.cyberforum.ru/cpp-beginners/thread600672.html
ЗАДАНИЕ ПО ЭКЗАМЕНУ ПО ПРОГРАММИРОВАНИЮ НА ЯЗЫКЕ С++ (можно писать и на С. не запрещается) Всё по сабжу ниже. Дан текстовый файл (файл для чтения во вложениях) с упрощённым каталогом выставки собак. Структура текста следующая. Собаки записаны по породам. внутри одной породы по классам. Запись каждой собаки состоит из номера участника, имени собаки, имён владельцев, названия...
C++ Подсчитать количество элементов матриц Подсчитать количество элементов матриц Х(5,4) и У(3,5),удовлетворяющих условиям a<=x<=b и a<=y<=b .Количество элементов вычислить в функции.Предусмотреть функцию формирования элементов матрицы.Help написать на голом СИ подробнее

Показать сообщение отдельно
S9
Волшебник
 Аватар для S9
643 / 246 / 38
Регистрация: 18.12.2010
Сообщений: 541
10.06.2012, 14:00     Король и ферзи
lenalena, извини, что так долго. Просто после экзамена отрубился и почти сутки проспал(((

вот код
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
/** На шахматной доске находятся король и несколько ферзей другого цвета. 
Проверить находится ли король под угрозой и если да, кто ему угрожает. 
Положение фигур задано массивом К(8,8). 0-клетка пуста, 1-король, 2-ферзь. 
Ферзь бьет по горизонтали, вертикали и диагоналям. */
 
#include <iostream>
#include <fstream>
#include <vector>
 
#define IN_DATA_FILE_NAME "in.txt"
#define SIZE_M 8
#define SIZE_N 8
 
int main(int argc, char ** argv)
{
  int king_i, king_j; /** это координаты короля */
  std::vector< std::pair<int, int> > queen; /** создаем вектор из пар, для хранения координат ферзей */
  bool killKing = false; /** есть короля можно выпилить, то TRUE, если нельзя - то FALSE */
  
  int **K = new int * [SIZE_M]; /** этот массив - есть поле, где стоят фигуры */
  for(int i = 0; i < SIZE_N; i++) /** выделяем память под массив */
    K[i] = new int[SIZE_N];
  
  std::ifstream in(IN_DATA_FILE_NAME);
  
  for(int i = 0; i < SIZE_M; i++, std::cout << std::endl) /** Записываем массив из файла */
    for(int j = 0; j < SIZE_N; j++)
    {
      in >> K[i][j];
      std::cout << K[i][j] << " ";
      switch (K[i][j])
      {
        case 1 : { king_i = i; king_j = j; }; break; /** записываем координаты короля */
        case 2 : { queen.push_back(std::pair<int, int>(i, j)); }; break; /** записываем координаты ферзя в queen */
      }
    }  
  in.close(); /** т.к. файл больше нам не нужен, то закрываем его */
  
  /** для наглядности выводим координаты короля и ферзей */
  std::cout << "King -> " << king_i << " : " << king_j << "\n";
  for(int i = 0; i < queen.size(); i++)
    std::cout << "Queen " << i + 1 << " -> " << queen[i].first << " : " << queen[i].second << "\n";
    
  for(int i = 0; i < queen.size(); i++) /** теперь перебираем массив ферзей и проверям на то, может ли ферзь кокнуть короля */
  if ((king_i == queen[i].first) ||   /** это условие, может ли ферзь минусануть короля */
      (king_j == queen[i].second) || 
      (king_i - king_j == queen[i].first - queen[i].second) || 
      (king_i + king_j == queen[i].first + queen[i].second)) 
  {
    killKing = true; /** если короля можно завалить, то ставим флаг в true */
    break;          /** и выходим из цикла, т.к. это достаточно что один ферзь может убить короля. */
  }
  
  if (killKing)
    std::cout << "Король трупэ!" << std::endl;
  else
    std::cout << "Король будет жить!" << std::endl;
  
  for(int i = 0; i < SIZE_N; i++) /** освбождаем память, выделенную по массив */
    delete [] K[i];
  delete [] K;
  
  return 0;
}
Пример работы на скриншоте
Под Windows компилируется аналогично, только запуск приложение будет не ./a.out а просто а или a.exe

P.S. Только незнаю, почему Вам не воспользоваться кодом Кот Ангенс...
Миниатюры
Король и ферзи  
Вложения
Тип файла: zip S9.zip (7.3 Кб, 5 просмотров)
 
Текущее время: 05:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru