Rezolvare completă PbInfo #3417 GenMat28

Cerința

Scrieți un program care citește de la tastatură un număr natural n și construiește o matrice cu n linii și n coloane ale cărei elemente vor primi valori dupa cum urmează:

  • În colțul din stânga sus, de coorodnate 1 1, va fi 1.
  • În pozițiile adiacente, de coordonate 1 2 și 2 1, va fi n.
  • În pozițiile adiacente, de coordonate 1 3, 2 2 și 3 1, va fi 2.
  • În pozițiile adiacente, de coordonate 1 4, 2 3, 3 2 și 4 1, va fi n-1.
  • Și așa mai departe…
  • În penultimele poziții, de coordonate n-1 n și n n-1, va fi n.
  • În ultima poziție, de coordonate n n, va fi 1.

Date de intrare

Programul citește de la tastatură numarul n.

Date de ieșire

Programul afișează pe ecran matricea construită, 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.

Restricții și precizări

  • 3 ≤ n ≤ 30

Exemplu

Intrare

5

Ieșire

1 5 2 4 3
5 2 4 3 4
2 4 3 4 2
4 3 4 2 5
3 4 2 5 1

Explicație

S-a citit 5 și se afisează o matrice de 5 linii și 5 coloane, unde 1 se află in colțul din stânga sus, apoi în pozițiile învecinate se află 5, apoi 2 și tot așa până se va completa matricea.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema GenMat28:

#include <iostream>

using namespace std;

int v[61],lc,n,st,dr;

int main()
{
    cin>>n;
    st=1;
    dr=n;
    for(int i=1;i<=2*n;i++){
        if(i%2==1){
            if(v[i-1]!=st){
                v[++lc]=st;
                st++;
            }
            else{
                st++;
            }
        }
        else{
            if(v[i-1]!=dr){
                v[++lc]=dr;
                dr--;
            }
            else{
                dr--;
            }
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cout<<v[i+j-1]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #3417 GenMat28

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3417 GenMat28 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!