Возникла проблема в написании программы с двумерными массивами.
Суть задачи в том, что задается размер матрицы и задается номер строки и номер столбца элемента. Этому элементу присваивается 1, окаймляющим его элементам - 2, вокруг них - 3 и так далее. Размер массива 15 на 15.
Проблема в превышении размера массива, в результате чего программа циклится.
Надеюсь на вашу помощь.
Вот вариант работы который я написал.
Код: Выделить всё
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main (void)
{
int s,p,i,n,m,j,g,k,h,z;
int A[15][15];
clrscr();
do
{
printf("Vvedite kolichestvo strok: ");
scanf("%d", &s);
printf("Vvedite kolichestvo stolbcov: ");
scanf("%d", &p);
if( s>14 || p>14 || s<0 || p<0)
printf("Vvedite chislo ot 0 do 14!\n\n");
}
while (s>14 || p>14 ||s<0 || p<0);
do
{
printf("Vvedite nomer stroki elementa: ");
scanf("%d", &n);
printf("Vvedite nomer stolbca elementa: ");
scanf("%d", &m);
if (n>s || m>p)
printf("Oshibka vvoda dannyh!\n\n");
}
while (n>s || m>p);
A[n][m]=1;
for(i=1;i<=s;i++)
{
printf("\n");
for(j=1;j<=p;j++)
{
for (k=1; k<8; k++)
for (z=1;z<8;z++)
{
A[n+k][m+k]=k+1;
A[n+k][m-k]=k+1;
A[n-k][m+k]=k+1;
A[n-k][m-k]=k+1;
A[n+k-z][m+k]=k+1;
A[n+k][m+k-z]=k+1;
A[n-k+z][m-k]=k+1;
A[n-k][m-k+z]=k+1;
}
printf("%d ", A[i][j]);
}
}
getch();
}