• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Поля, Под Угрозой Ферзя

  • Автор темы prettynetty
  • Дата начала
P

prettynetty

Visual C++
Шахматную доску будем представлять символьной матрицей размера 8 x 8. Даны натуральные числа n и m (1< n <8; 1<m < 8) – номера вертикали и горизонтали, определяющие местоположение ферзя. Соответствующий элемент матрицы надо положить равным символу Ф. Поля, находящиеся под угрозой ферзя, надо положить равными символу *, а остальные поля – символу 0.

Программа работает. но как то не правильно работает :)
буду благодарна за помощь

<!--shcode--><pre><code class='sql'>#include<stdio.h>
#include<windows.h>


main(){
SetConsoleOutputCP(1251);
const int k=8;
int i, j, m, n;
char a[k][k];
for(i=0; i<k; i++)
for(j=0; j<k; j++)
a[j]='0';
printf("Введите номер по вертикали и горизонтали(от 1 до 8)");
scanf("%d%d", &n,&m);
m--;
n--;
if (n>9 || n<0 || m>9 || m<0){printf("Неверный ввод");return 0;}
a[m][n]='ф';
for (i=0; i<k; i++)
for (j=0; j<k; j++)
if(i==m || j==n)
a[j]='*';
printf("n=%d; m=%d\n", n, m);

if(m>=n)//ВЕРХНИЙ ЛЕВЫЙ
if(m!=0 && n!=0)
for (i=0; i<=n; i++)
a[m-i][n-i]='*';
if(n>m) if(m!=0 && n!=0)
for (i=0; i<=m; i++)
a[m-i][n-i]='*';

if(m>=n)//НИЖНИЙ ЛЕВЫЙ//
if(m!=7 && n!=0)
for (i=0; i<m; i++)//i<=m
a[m+i][n-i]='*';
if(n>m)
if(m!=7 && n!=0)
for (i=0; i<n; i++)//i<=n
a[m+i][n-i]='*';

if(m>=n)//ВЕРХНИЙ ПРАВЫЙ
if(m!=0 && n!=7)
for (i=0; i<=m; i++)
a[m-i][n+i]='*';
if(n>m) if(m!=7 && n!=0)
for (i=0; i<=8; i++)
a[m-i][n+i]='*';

if(m>=n)//НИЖНИЙ ПРАВЫЙ
if(m!=7 && n!=7)
for (i=0; i<(8-m); i++)
a[m+i][n+i]='*';
if(n>m) if(m!=7 && n!=7)
for (i=0; i<(8-n); i++)
a[m+i][n+i]='*';
printf("\n");
a[m][n]='ф';
for (i=0; i<k; i++){
for (j=0; j<k; j++)
printf("%c", a[j]);
printf("\n");
}
return 0;}[/CODE]
 
R

rrrFer

Код:
	for(i=0; i<N; i++) {
a[n][i]='*';
a[i][m]='*';
if( (n - i) >= 0 ) {
if( ( m - i ) >= 0 )
a[n-i][m-i] = '*';
if( ( m + i ) < N )
a[n-i][m+i] = '*';
}
if( (n + i) < N ) {
if( ( m - i ) >= 0 )
a[n+i][m-i] = '*';
if( ( m + i ) < N )
a[n+i][m+i] = '*';
}
}
a[n][m] = 'f';
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!