Pagini recente » Cod sursa (job #1452463) | Cod sursa (job #1460186) | Cod sursa (job #2430524) | Cod sursa (job #1455375)
#include<stdio.h>
int n,k;
int matrix[1001][1001];
// n e par
void genpar(int n, int k)
{
int i,j;
int ss,dj;
for (i=0;i<n;i+=2) {
for(j=0;j<n;j++) {
matrix[i][j] = i * n + j;
matrix[i][j]++;
}
for(j=0;j<n;j++) {
matrix[i+1][j] = (i+1) * n + j;
matrix[i+1][j]++;
}
// daca k=par, e ok cum e
if(k % 2 == 0)
continue;
ss = matrix[i][0];
dj = matrix[i+1][n-1];
for (j=0;j<n-1;j++)
matrix[i][j] = matrix[i][j+1];
for (j=n;j>=1;j--)
matrix[i+1][j] = matrix[i+1][j-1];
matrix[i][n-1] = dj;
matrix[i+1][0] = ss;
}
}
// Genereaza n-1 unde n e par
void genimpar(int n, int k)
{
int j;
genpar(n - 1, k);
int p = (n-1)*(n-1);
if(k % 2 == 0) {
for(j=0;j<n;j++)
matrix[n-1][j] = ++p;
for(j=0;j<n-1;j++)
matrix[j][n-1] = ++p;
} else {
p++;
for(j=0;j<n;j++)
matrix[n-1][j] = ++p;
for(j=0;j<n-1;j++)
matrix[j][n-1] = ++p;
matrix[n-2][n-1] = (n-1)*(n-1) + 1;
}
}
int main(int argc, char const *argv[])
{
FILE *in = fopen("tablete.in", "r");
FILE *out = fopen("tablete.out", "w");
fscanf(in, "%d %d", &n, &k);
int i,j;
if(n % 2 == 0)
genpar(n, k);
else genimpar(n, k);
for (i=0;i<n;i++) {
for(j=0;j<n;j++) {
fprintf(out, "%3d ",matrix[i][j]);
}
fprintf(out, "\n");
}
return 0;
}