Contact și feedback

Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.


Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.


Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

Matrice pătratice în C++. Diagonala principală și secundară

În lecția anterioară am învățat cum funcționează matricele și cum se parcurg.

În această lecție vorbim despre matrice pătratice, un tip particular de matrice.

Ce este o matrice pătratică?

O matrice pătratică este o matrice particulară, cu același număr de linii și de coloane — adică cu n == m. Pentru simplitate, vom menționa doar n-ul, deoarece m-ul are aceeași valoare. Matricea de acest tip are o serie de particularități care se folosesc în anumite probleme.

Diagonala principală și diagonala secundară

Diagonala principală a unei matrice este diagonala care începe din colțul stânga-sus și se termină în colțul dreapta-jos. Mai exact, un element a[i][j] aparține diagonalei principale dacă i == j.

Similar, diagonala secundară este cealaltă diagonală, care începe din colțul dreapta-sus și se termină în cel stânga-jos. Un element a[i][j] aparține diagonalei secundare dacă i + j == n + 1, sau cu alte cuvinte, j == n - i + 1 (unde matricea este indexată de la 1).

În imaginea de mai jos, diagonala principală este cea roșie, diagonala secundară este cea albastră, elementul 4 (din mijloc) aparținând ambelor diagonale.

https://i.ibb.co/1qvhPpb/image.png

Observații

Observăm că o matrice pătratică are n elemente pe diagonala principală și n elemente pe diagonala secundară. Pentru diagonala principală, elementele sunt: a[1][1], a[2][2], a[3][3], …, a[i][i], …, a[n][n]. Pentru diagonala secundară, elementele sunt: a[1][n], a[2][n - 1], a[3][n - 2], …, a[i][n - i + 1], …, a[n][1].

Așadar, avem următorii algoritmi pentru afișarea elementelor de pe cele două diagonale.

Afișarea elementelor de pe diagonala principală în C++

Următorul cod afișează elementele a[i][i], aflate pe diagonala principală:

#include <iostream>

using namespace std;

int n, m, a[101][101]; //n = nr linii, m = nr coloane, a = matricea

int main()
{
    cin >> n >> m; //Citim numărul de linii și de coloane

    //Citim matricea
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            cin >> a[i][j];
        }
    }

    //Afișăm elementele diagonalei principale
    for(int i = 1; i <= n; i++) {
        cout << a[i][i] << " ";
    }
    return 0;
}

Afișarea elementelor de pe diagonala secundară în C++

#include <iostream>

using namespace std;

int n, m, a[101][101]; //n = nr linii, m = nr coloane, a = matricea

int main()
{
    cin >> n >> m; //Citim numărul de linii și de coloane

    //Citim matricea
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            cin >> a[i][j];
        }
    }

    //Afișăm elementele diagonalei secundare
    for(int i = 1; i <= n; i++) {
        cout << a[i][n - i + 1] << " ";
    }
    return 0;
}

Probleme propuse

# Problemă Dificultate
276. Determinare matrice patratica 4 Ușoară (2 )
282. Parcurgere chenar Ușoară (2 )
277. Transpusa Medie (4 )
139. Suma in matrice patratica Ușoară (2 )
274. Determinare matrice patratica 2 Ușoară (2 )
Vrei mai multe probleme? Pe această pagină găsești întreaga listă de probleme propuse.

Alte resurse sau bibliografie

Cuprinsul lecției

Se încarcă…

Citește și

Verifică dacă un caracter este literă în C++Suma divizorilor unui număr în C++Indicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Al N-lea termen Fibonacci în C++Transformarea unei litere mici în literă mare în C++Funcții în C++. Ce sunt subprogrameleAria și circumferința unui cerc în C++Prima cifră a unui număr în C++Ce înseamnă endl în C++?Complexitatea unui algoritm (timp și spațiu) în C++Verifică dacă un număr dat este o putere de 2 în C++Instrucțiunea do while (structuri repetitive)Numărul minim de peroane pentru o gară în C++Do while vs while în C++ - Care e diferența?Mediana unui șir de valori în C++Vectorii în C++: citire și afișareCodul ASCII (tabel complet)Maximul și minimul unui vector în C++Aflarea sumei primelor N sume GaussCopiuțe: Cifrele unui numărMaximul și minimul a două valori în C++Căutare binară în C++Cel mai frecvent element dintr-un șir în C++Cum să calculezi instant 2 la puterea N în C++Ridicarea la putere în timp logaritmic în C++. Exponențiere rapidăSuma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)Inversarea unui șir de caractere în C++Suma 1 + 2 + 3 + ... + N în C++Generarea șirului Fibonacci generalizat în C++Al N-lea termen dintr-o progresie aritmeticăCifra de control a unui numărInstrucțiunea break (structuri repetitive)Afișarea elementelor unui vector recursiv în C++De ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Matrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicFactorialul unui număr în C++Numărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Matrice în C++. Declararea și parcurgerea tablourilor bidimensionaleTipul struct în C++. Ce sunt structurile de date neomogeneBordarea unei matrice în C++Inversarea unui vector în C++Transformarea unei litere mari în literă mică în C++Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Oglinditul unui număr în C++Vectori de frecvență (de apariții) în C++Oglinditul recursiv al unui număr în C++Numărul de apariții al unui număr într-un vector în C++Cum să citești și să afișezi în fișiere în C++Transformarea unui număr din baza 10 în baza 2 în C++Cel mai semnificativ bit în C++Cel mai puțin semnificativ bit în C++Valoarea absolută (modulul) unui număr în C++Matrice pătratice în C++. Diagonala principală și secundarăInterclasarea a doi vectori în C++Afișarea divizorilor primi ai unui număr în C++Numărul combinărilor în C++ (formula combinărilor)Verifică dacă o literă este mică sau mare în C++CMMMC a două numere în C++ (cel mai mic multiplu comun)Rădăcina cubică a unui număr în C++ (cube root)Numărul permutărilor în C++ (formula permutărilor)Pointer în C++. Variabile de tipul char * (char steluță)Suma numerelor naturale dintr-un interval dat în C++Distanța dintre două puncte în C++Câte numere naturale sunt într-un interval dat? (C++)Citirea și afișarea matricelor în C++Cum să afișezi partea întreagă a unui număr real în C++Ce este o funcție void în C++?Materia pentru olimpiada de informatică - tot ce trebuie să știiVerifică dacă trei puncte sunt coliniare C++Maximul și minimul a n valori în C++Ciurul lui Eratostene în C++Radicalul unui număr în C++ (rădăcina pătrată)Calculul combinărilor de n luate câte k (nCk) în C++Al N-lea termen dintr-o progresie geometricăȘirul lui Fibonacci în C++Interschimbarea a două variabile în C++ (3 metode)Numărul aranjamentelor în C++ (formula aranjamentelor)Operații cu numere mari în C++ - Toate funcțiile explicateVerifică dacă un număr este par sau impar fără modulo în C++Verifică dacă un număr aparține șirului Fibonacci în C++Funcții predefinite în C++ (matematice, șiruri de caractere)Cel mai mic număr cu suma cifrelor N în C++Vectorii în C++: declarare și parcurgereNumărul de divizori primi ai unui număr în C++Verifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++Recursivitate în C++Numărul de divizori al unui număr în C++Cifrele unui număr. Prelucrarea cifrelor unui număr în C++Verificarea unui an bisect în C++Verificare dacă șir de caractere este palindrom în C++Instrucțiunea for (structuri repetitive)Citește un șir de caractere cu spații în C++Verificare număr prim în C++ (Clasa a IX-a)Verificare dacă un număr este palindrom în C++Aplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorAria unui triunghi folosind coordonatele acestora în C++Algoritm recursiv pentru căutare binară (clasa a X-a)Combinatorică în C++: permutări, aranjamente, combinări și alteleCea mai lungă secvență de elemente crescătoare în C++Sortare crescătoare recursivă în C++ - Merge sort și Bubble sortMaximul și minimul a trei valori în C++Verifică dacă un caracter este cifră în C++Șiruri de caractere în C++. Tot ce trebuie să știiCe este o variabilă unsigned în C++?Tipuri de date în C++: numere întregi, reale, caractere și alteleTutorial instalare CodeBlocks (ușor) - Introducere în informatică C++Află secolul unui an citit de la tastatură în C++Cifra maximă a unui număr recursiv în C++CMMDC recursiv a două numere naturale în C++Cifra maximă și minimă a unui număr în C++Structuri repetitive (while, do while, for, etc)Numere triunghiulare. Verificarea unui număr triunghiularIndicatorul lui Euler în C++Ce înseamnă variabilă globală și locală în C++?Numărul de cifre ale factorialului unui numărInstrucțiunea continue (structuri repetitive)Divide et Impera (metodă de programare C++)Instrucțiunea de decizie în C++: if, else, switch, caseSuma elementelor unui vector recursiv în C++Verifică dacă o literă este vocală în C++Instrucțiunea while (structuri repetitive)Transformarea unui număr din baza 2 în baza 10 în C++Comentarii în C++Cel mai mare divizor comun (CMMDC) a două numere în C++

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont