Extras din referat
Problema 1
AA101. Pentru un număr natural n dat, să se genereze într-o matrice pătratică de dimensiune 2n+1, un romb care să contină numere maturale consecutive, 1,2,3,…, aranjate in zig+zag, ca in exemplul de mai jos. Celelelte elemente ale matricii vor fi completate cu 0.
Exemplu: pentru n=2, in matricea de dimensiune 2×2+1=5, se va genera rombul:
- (0&0&13&0&0@0&12&11&10&0@5&6&7&8&9@0&4&3&2&0@0&0&1&0&0)-
Se cunoaste dimensiunea matricei ca fiind 2n+1. Se generează n numere descrescătoare consecutive.Variabila NrMaxElem reprezinta numarul maxin din matrice .Numărul maxim îl calculam în următorul mod :
se calculează numărul maxim de elemende din matrice :
nr_linii×nr_coloane
se calculează numărul de elementelor 0 dintr-un colţ al matricei utilizând suma lui Gauss, apoi rezultatul îl înmulţim cu 4, numarul conţurilor :
4×(n×(n+1))/2
Numărul maxim de elemente se calculează scăzând din numărul maxim de elemende din matrice numărul de elementelor 0:
NrMaxElem=(2×n+1)(2×n+1)-4×(n×(n+1))/2
Se determina jumatarea matricei utilizand formula urmatoare :jum=[ ((2×n+1)/2)]
Se initializeaza un contor=1, care va contoriza numarul liniilor din matricesi va incrementat cu 1 la fiecare schimare a liniei, variabila elemente reprezinta numarul de elemente nenula si va fi intrementat cu 2 la fiecare schimbare a liniei, cat timp este indeplinita conditia ((elemente<dimMat) && (i<jum )). Dupa ce este depasita conditia de sus elemente va fi decrementam cu 2.
if ((elemente<dimMat) && (i<jum)){
elemente+=2;
contor++;}
else if (dimMat-i<=contor){
elemente-=2;}
}
Variabilele start represinta prima pozitie pe linia din matrice unde se va scrie primul numar nenul,iar end represinta ultima pozitie pe linia din matrice unde se va scrie ultimul numar nenul.
Ele se calculeaza unilizand urmatoarele formule:
start=((2×n+1-elemente))/2 si end=start+elemente-1
Pentru a scrie matricea in zig-zag de utilizeaza urmatoare conditie:
Pe linile pare se numerele sunt scrise de la dreapta la stanga , adica de la end la start .
Pe liniile impare se numerele sunt scrise de la dreapta la stanga , adica de la start la end.
NrMaxElem va fi decrementa cu 1 la fiecare scriere in matrice.
for(int i=0;i<dimMat;i++){
int start = (dimMat - elemente) / 2;
int end =start+elemente-1;
if (i%2==0){
for (int j=end;j>=start;j--){
A[i][j]=NrMaxElem;
NrMaxElem--;
}
}
else{
for (int j=start;j<=end;j++){
A[i][j]=NrMaxElem;
NrMaxElem--;
}
}
Numatrul maxim de scrieri in matrice este egal cu numarul maxim de elemente
NrMaxElem=(2×n+1)(2×n+1)-4×(n×(n+1))/2,
NrMaxElem=2n^2+2n+1, iar elemtele 0 se vor autocompleta.
Numarul inmultiri/impartiri: 2n+5.
Preview document
Conținut arhivă zip
- Matrici cu Diferite Forme Geometrice in Ele.docx