Informatică, întrebare adresată de Utilizator anonim, 9 ani în urmă

Cerința
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

Răspunsuri la întrebare

Răspuns de AntiEaglesDavids
7
#include <iostream>
using namespace std;

int main()
{
    int n, k;
    cin >> n >> k;

    if(2 * k < n)
        for(int i=1; i<=n; i++) {
            for(int j=1; j<=n; j++)
                if( ( (i + k >= j) && (j + k >= i) ) || ( (k + n + 1 >= i + j) && (n - k < i + j) )  ) cout << 1 << ' ';
                else cout << 2 << ' ';
            cout << '\n';
        }

    else cout << "Dublul lui k nu este mai mic decat n.\n";
    return 0;
}



AntiEaglesDavids: mai ai si altele :) ?
matem28: WHat?
matem28: Nu e un pretext :)
matem28: Fa si tu 5 pct
matem28: Sau zi-le-i pe privat
matem28: Pont : Vezi ca poti sa ai si pcte cu -
Alte întrebări interesante