Informatică, întrebare adresată de dcnalex, 9 ani în urmă

Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (1≤n≤10) apoi
construieşte în memorie o matrice cu 2*n linii şi 2*n coloane, numerotate de la 1 la 2*n,
astfel încât parcurgând doar liniile impare ale matricei de sus în jos şi fiecare linie impară de
la stânga la dreapta se obţin în ordine strict crescătoare toate numerele impare cuprinse în
intervalul [1,4*n2
], iar parcurgând doar liniile pare ale matricei de sus în jos şi fiecare linie
pară de la dreapta la stânga se obţin în ordine strict crescătoare toate numerele pare
cuprinse în intervalul [1,4*n2
], ca în exemplu.
Programul afişează pe ecran matricea obţinută, câte o linie a matricei pe
câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un
spaţiu.
Exemplu: pentru n=2 se obţine matricea alăturată. (10p.)
1 3 5 7
8 6 4 2
9 11 13 15
16 14 12 10

Răspunsuri la întrebare

Răspuns de StarBack
0
Salut. Uite aici rezolvarea problemei. Succes in continuare!



#include "stdafx.h"
#include <iostream>

using namespace std;


int main()
{
          int n, i, j;
          int start_par = 2;
          int start_impar = 1;

          cin >> n;

          int m = 2 * n;

          int **mat = new int*[m];

           for (i = 1; i <= m; i++)
                       mat[i] = new int[m];
 
           for (i = 1; i <= m; i++)
           {
                     for (j = 1; j <= m; j++)
                    {
                              if (i % 2 != 0)
                              {
                                       mat[i][j] = start_impar;
                                       start_impar += 2;
                              }
                    }
           }

           for (i = 1; i <= m; i++)
           {
                      for (j = m; j >= 1; j--)
                      {
                                 if (i % 2 == 0)
                                 {
                                         mat[i][j] = start_par;
                                         start_par += 2;
                                 }
                      }
            }

           for (i = 1; i <= m; i++)
           {
                      for (j = 1; j <= m; j++)
                                cout << mat[i][j] << " ";

                 cout << endl;
           }

          for (i = 1; i <= m; i++)
                    delete[] mat[i];

         delete[] mat;

    return 0;
}
Alte întrebări interesante