Informatică, întrebare adresată de mariatecu, 8 ani în urmă

Se dau două numere naturale n și k, cu proprietatea că 2*k < n. Să se afişeze pe ecran elementele unei matrice pătratice de dimensiune n, formată din valorile 1 şi 2, construită astfel:

valorile de pe diagonala principală sunt 1;
valorile de pe k pseudodiagonale paralele cu diagonala principală şi situate imediat deasupra acesteia sunt 1;
valorile de pe k pseudodiagonale paralele cu diagonala principală şi situate imediat sub aceasta sunt 1;
valorile de pe diagonala secundară sunt 1;
valorile de pe k pseudodiagonale paralele cu diagonala secundară şi situate imediat deasupra acesteia sunt 1;
valorile de pe k pseudodiagonale paralele cu diagonala secundară şi situate imediat sub aceasta sunt 1;
restul valorilor din matrice sunt 2.
Date de intrare
Programul citește de la tastatură numerele n k.

Date de ieșire
Programul va afișa pe ecran matricea construită, câte o linie a matrice pe o linie a ecranului, elementele de pe o line fiind separate prin exact un spaţiu.

Restricții și precizări
1 ≤ n ≤ 100

Exemplu
Intrare

10 1
Ieșire

1 1 2 2 2 2 2 2 1 1
1 1 1 2 2 2 2 1 1 1
2 1 1 1 2 2 1 1 1 2
2 2 1 1 1 1 1 1 2 2
2 2 2 1 1 1 1 2 2 2
2 2 2 1 1 1 1 2 2 2
2 2 1 1 1 1 1 1 2 2
2 1 1 1 2 2 1 1 1 2
1 1 1 2 2 2 2 1 1 1
1 1 2 2 2 2 2 2 1 1


boiustef: if ( abs(i-j) <=k || abs(n+1-(i+j))<=k) a[i][j]=1;
else a[i][j]=2;
boiustef: observatie: pentru numerotarea liniilor si coloanelor de la 1 la n

Răspunsuri la întrebare

Răspuns de laurachirila5
0

Răspuns:

#include<iostream>

using namespace std;

int main(){

   int n, k, v[101][101],i,j;

   cin>>n>>k;

   for(i=1;i<=n;i++){

       for(j=1;j<=n;j++){

           if(i==j || j==n-i+1){

               v[i][j] = 1;

           }

           else{

               int nr=1,c=0;

               while(nr!=k+1){

                   if(j==i+nr || j==i-nr || j==n-i+1+nr || j==n-i+1-nr){

                       v[i][j] = 1;

                       c++;

                       break;

                   }

                   nr++;

               }

               if(c==0){

                   v[i][j] = 2;

               }

           }

       }

   }

   for(i=1;i<=n;i++){

       for(j=1;j<=n;j++){

           cout<<v[i][j]<<" ";

       }

       cout<<endl;

   }

   return 0;

}

Alte întrebări interesante