Cod sursa(job #236336)

Utilizator stocarulCosmin-Mihai Tutunaru stocarul Data 27 decembrie 2008 11:32:43
Problema Tablete Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 1.51 kb
#include<stdio.h>
#define infile "tablete.in"
#define outfile "tablete.out"
#define nmax 1001
int m[nmax][nmax]; //matricea in care construim
int n,k; //numarul de linii/coloane, si numarul coloanei care trebuie sa aiba elementele pare
int x=0; //variabila care retine ultimul numar afisat in matrice

//functia care face matricea daca k este par
//aceasta functie pune elementele la rand pornind din coltul din stanga sus (1,1 -> nk), partea stanga a matricei
void k_par(int m[nmax][nmax], int n, int k, int *x)
	{
	int i,j;
	for(i=1;i<=n;i++) //fiecare linie
		for(j=1;j<=k;j++) //fiecare coloana pana la k
			m[i][j]=*x+=1; //ultimul numar afisat in matrice (plus 1)
	}

//functia care umple cu restul numerelor ramase partea din dreapta lui k
void umplere(int m[nmax][nmax], int n, int k, int *x)
	{
	int i,j;
	for(i=1;i<=n;i++) //fiecare linie
		for(j=k+1;j<=n;j++) //coloanele din dreapta lui k
			m[i][j]=*x+=1; //unltimul numar afisat (+1)
	}

void afisare(int m[nmax][nmax], int n)
	{
	int i,j;
	for(i=1;i<=n;printf("\n"),i++)
		for(j=1;j<=n;printf("%d ",m[i][j++]));
	}

int main()
{
//deschidem fisiere
freopen(infile,"r",stdin);
freopen(outfile,"w",stdout);

scanf("%d %d",&n,&k); //citim cele 2 variabile (numarul de linii/coloane si numarul coloanei ce trebuie sa aiba toate elementele pare)

if(!(k%2)) k_par(m,n,k,&x); //daca k par
umplere(m,n,k,&x); //umplem coloanele din dreapta lui k cu numerele ramase

afisare(m,n); //afisem matricea

fclose(stdin);
fclose(stdout);
return 0;
}