👤

Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (2<n<20) şiconstruieşte în memorie o matrice cu n linii şi n coloane, numerotate de la 1 la n, în carefiecare element aflat pe chenarul exterior al matricei este egal cu suma dintre indicele linieişi indicele coloanei pe care se află, iar fiecare dintre celelalte elemente este egal cu sumacelor trei “vecini” situaţi în matrice pe linia anterioară. Două elemente din matrice se numescvecine dacă se găsesc alături pe linie, coloană sau diagonală. Chenarul exterior al unei matrice este format din prima linie, ultima linie, prima coloană şi ultima coloană.
.Elementele matricei vor fi afişate pe ecran, câte o linie a matricei pe câte o linie a ecranului cu câte un spaţiu între elementelefiecărei linii.Exemplu: pentru n=5 se va obţine matricea alăturată. (10p.) 
2 3 4 5 6
 3 9 12 15 7
 4 24 36 34 8
 5 64 94 78 9
 6 7 8 9 10


Răspuns :

#include <stdio.h>
int main () {
    unsigned int n;
    do{
        scanf("%d", &n);
    } while ((n <= 2) || (n >= 20));
   
    int m[n][n];
   
    int i, j;
   
    for(i = 0; i < n; i++) {
        for(j = 0; j < n; j++) {
            if((i == 0) || (j == 0) || (i == n-1) || (j == n-1)) {
                m[i][j] = i+1 + j+1;
            } else {
                m[i][j] = m[i-1][j-1] + m[i-1][j] + m[i-1][j+1];
            }
        }
    }
   
    for(i = 0; i < n; i++) {
        printf("\n");
        for(j = 0; j < n; j++) {
            printf("\t%d", m[i][j]);
        }
    }
   
    return 0;
   
}


A compilat si a rulat perfect pentru testul tau.