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]
Шахматную доску будем представлять символьной матрицей размера 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]