Documente Academic
Documente Profesional
Documente Cultură
Limbaje de
Programare
Curs 5 - Operatori
Bitwise si Tablouri
Dan Novischi
Review
Conversii
Binar-Hexazecimal
Operatori la Nivel
de Bit Dan Novischi
Tablouri
Uni-Dimesionale
Aplicatii Tablou
Uni-Dimensional
Tablouri
21 Mar
Multi-Dimesionale
Aplicatii
Multi-Dimensional
Sumar
Limbaje de
Programare
Curs 5 - Operatori
Bitwise si Tablouri 1 Review
Dan Novischi
Reprezentarea
4 Reprezentarea Numerelor Reale
Numerelor Reale
Operatori la Nivel
de Bit
5 Operatori la Nivel de Bit
Tablouri
Uni-Dimesionale 6 Tablouri Uni-Dimesionale
Aplicatii Tablou
Uni-Dimensional
Tablouri
7 Aplicatii Tablou Uni-Dimensional
Multi-Dimesionale
Aplicatii
Multi-Dimensional
8 Tablouri Multi-Dimesionale
9 Aplicatii Multi-Dimensional
Review
Limbaje de
Programare
Curs 5 - Operatori Functiile reprezinta unitatea structurala de baza a limabjului C prin
Bitwise si Tablouri
intermediul careia un program se poate organiza logic in sarcini.
Dan Novischi
Review
Similar functiilor matematice, functiile din limabjele de programare
trebuie definite. O definitie corecta are in componenta: tipul returnat de
Conversii
Binar-Hexazecimal functie, numele functiei, o lista de parametrii formali separati prin vigula
Reprezentarea si un bloc de instructiuni care implementeaza o anumita facilitate sau
Numerelor Intregi indeplinesc o anumita sarcina.
Reprezentarea
Numerelor Reale Declaratia unei functii este data de antetul (header-ul) acestia si este
Operatori la Nivel compusa din tipul returnat, numele si lista de parametrii formali.
de Bit
Declaratiile se utilizeaza pentru a instrui compilator-ul de existenta unei
Tablouri
Uni-Dimesionale
functii inainte ca acesta sa fie definita propriu-zis intr-un program.
Aplicatii Tablou
Uni-Dimensional Utilizarea functiilor se realizeaza prin apelul acestora intr-un program.
Tablouri
Procesul de apelare a unei functii implica trasmiterea unor argumente
Multi-Dimesionale parametrilor formali.
Aplicatii
Multi-Dimensional Trasmiterea argumentelor se realizeaza prin copierea acestora. Astfel,
instructunile din corpul unei functii lureaza intodeauna cu copii ale
argumentelor. Acest mecanism se numeste trasmiterea argumentelor
prin valoare.
Review
Limbaje de
Programare Variabile dintr-un program depind de locul in care acesta sunt definite,
Curs 5 - Operatori
Bitwise si Tablouri
astfel avem: variabile locale, variabile globale si parametrii formali.
Dan Novischi
Compilatorul poate fi instruit de felul in care trebuie memorata o anumita
Review variabila prin utilizarea specificatorilor pentru clasa de memorare. Clasele
Conversii se impart in patru categori: auto, register, static si extern.
Binar-Hexazecimal
Reprezentarea Clasa auto specifica faptul ca o aumita variabila este locala unui bloc de
Numerelor Intregi
instructiuni.
Reprezentarea
Numerelor Reale
Clasa register similara cu auto, numai ca variabilele sunt plasate in
Operatori la Nivel
de Bit
registrii procesorului (in limita acestora).
Tablouri
Uni-Dimesionale Clasa static aplicata asupra unei variabile locale specifica faptul ca acesta
Aplicatii Tablou
trebuie memorata ca si o varibila globala (midle ground intre local si
Uni-Dimensional global), iar aplicata unei variabile globale sau asupra unei functii
Tablouri determina compilatorul sa trateze variabila sau functia ca fiind globala in
Multi-Dimesionale cardul fisierului in care este definita dar locala acelui fisier.
Aplicatii
Multi-Dimensional
Clasa extern se utilizeaza la importarea variabilelor sau functiilor (definite
global) in alte fisiere in fisierul curent.
Limbaje de
Programare
Curs 5 - Operatori Cifrele sitemului de numeratie hexazecimal se reprezinta cu ajutorul a patru
Bitwise si Tablouri
cifre (sau un nibble sau un half-byte) in sitemul de numeratie binar. Astfel
Dan Novischi
avem urmatoarea tabela de conversie:
Review
Zecimal Binar Hexazecimal
Conversii 0 0 0
Binar-Hexazecimal
1 1 1
Reprezentarea
Numerelor Intregi 2 10 2
Reprezentarea
3 11 3
Numerelor Reale 4 100 4
Operatori la Nivel 5 101 5
de Bit 6 110 6
Tablouri 7 111 7
Uni-Dimesionale
8 1000 8
Aplicatii Tablou
Uni-Dimensional
9 1001 9
10 1010 A
Tablouri
Multi-Dimesionale 11 1011 B
Aplicatii
12 1100 C
Multi-Dimensional 13 1101 D
14 1110 E
15 1111 F
Reprezentarea Numerelor Intregi
Limbaje de
Programare
Curs 5 - Operatori
Bitwise si Tablouri In cursul 2 am vazut ca tipurile de date intregi se stocheaza pe un numar
Dan Novischi finit de octeti, unde un octet are in componenta 8 biti (2 nibbles). Astfel,
in functie de lungimea tipului de intreg utilizat putem reprezenta un
Review numar de valori mai mare sau mai mic.
Conversii
Binar-Hexazecimal Spre exempul, tipul char are o lugime de 1 octet, iar numarul de valori
Reprezentarea
care se pot reprezenta pe un octect este 256 = 28 , unde valoarea maxima
Numerelor Intregi este 255 = 28 − 1 In general, valoarea maxima pozitiva care se pote
Reprezentarea reprezenta pe o anumita lungime este data de relatia:
Numerelor Reale
Operatori la Nivel 2N − 1
de Bit
Limbaje de
Programare Problema care se pune este: Cum distribuim valorile posibile la nivel de
Curs 5 - Operatori
Bitwise si Tablouri bit pentru o anumita lungime intre reprezentarea cu sau fara semn?
Astfel pentru valoarile reprezentate pe un octect:
Dan Novischi
combinatiile intre 0b0000000 si 0b01111111 corespund valorilor intre 0 · · · 127
Review atat pentru numere fara semn cat si pentru cele cu semn.
Conversii combinatiile intre 0b10000000 si 0b11111111 in cazul unsigned corespund
Binar-Hexazecimal valorilor intre 128 · · · 255, iar in cazul unsigned corespund valorilor intre
Reprezentarea
−128 · · · − 1
Numerelor Intregi
Limbaje de
Programare
Ca si in cazul numerelor intregi, numerele fractionare se reprezinta pe un
Curs 5 - Operatori anumit numar de biti in functie de lungimea reprezentarii.
Bitwise si Tablouri
Dan Novischi
Numai ca in cazul reprezentarii acestor numere se doreste:
obtinerea unui interval cat mai mare de valori intre un minim si un maxim
Review o precizie cat mai buna a valorilor; precizia data de numarul cifrelor de dupa
virgula.
Conversii
Binar-Hexazecimal
Astfel, reprezentarea alesa este cea in virgula mobila in care toate valorile
Reprezentarea
Numerelor Intregi au urmatorul format:
Reprezentarea
Numerelor Reale
(−1)bit_semn ∗ 1.mantisa ∗ (baza)exponent
Operatori la Nivel unde:
de Bit
bit_semn este un bit care specifica semnul (0 - pozitiv si 1 - negativ)
Tablouri mantisa reprezinta parte fractionara a numarul, numarul de biti al acesteia
Uni-Dimesionale
dand precizia reprezentarii.
Aplicatii Tablou baza poate fi 2, 10, 16 si este aleasa conform unor standarde - deobicei se
Uni-Dimensional lucrandu-se cu baza 2 - nefiind stocata in reprezentarea propriu-zisa.
Tablouri exponentul este puterea la care este ridicata baza, iar numarul de biti pe care
Multi-Dimesionale este reprezentata aceasta ne da intervalul de valori ai reprezentarii.
Aplicatii
Multi-Dimensional In calculator o valoare in acesta reprezentare este stocata astfel:
Operatori la Nivel de Bit
Limbaje de
Programare
Curs 5 - Operatori
Bitwise si Tablouri Operatiile la nivel de bit se aplica NUMAI tipurilor date intregi (char,
Dan Novischi
short, int, long) cu sau fara semn (signed sau unsigned) si sunt
utilizate pentru a manipula in mod direct valorile bitilor (de 0 sau 1) ai
Review unui operand (valoare / variabila).
Conversii
Binar-Hexazecimal Limbajul C dispune de doua clase de operatori care actioneaza asupra
Reprezentarea reprezentarilor binare a intregilor, si anume: deplasari de biti si operatori
Numerelor Intregi
logici la nivel de bit.
Reprezentarea
Numerelor Reale
Deplasararile de biti (shifts) sunt de doua tipuri: stanga – dat de
Operatori la Nivel
de Bit operatorul << – sau dreapta – dat de operatorul >>. Acestea au rolul
Tablouri
de a deplasa toti bitii unui operand la stanga sau la drepta cu un anumit
Uni-Dimesionale numar de pozitii specificat, unde bitii care depasesc lungimea tipului de
Aplicatii Tablou date ales se pierd, iar golurile se completeaza cu zero (vezi exemplu).
Uni-Dimensional Sintaxa generala fiind:
Tablouri
Multi-Dimesionale /* deplasare stanga */
Aplicatii (operand) << numar_pozitii;
Multi-Dimensional
/* deplasare dreapta */
(operand) >> numar_pozitii;
Operatori la Nivel de Bit
Limbaje de
Programare Spre exemplu, valoarea 99 reprezenta pe 8 biti esta data de 0b01100011
Curs 5 - Operatori
Bitwise si Tablouri in binar, o deplasare la stanga cu o singura pozitie are urmatoare forma:
Dan Novischi
(99 << 1)
Review a carei rezultat este 0b11000110 in binar si echivalent cu 198 in zecimal.
Conversii Acest proces este prezentat grafic in figura de mai jos:
Binar-Hexazecimal
Reprezentarea
Numerelor Intregi
Reprezentarea
Numerelor Reale
Aplicatii
Multi-Dimensional
Limbaje de
Programare Operatorii logici la NIVEL DE BIT realizeaza operatii logice intre
Curs 5 - Operatori
Bitwise si Tablouri
reprezentarile binare ale operanzilor, adica intre toti bitii operanzilor.
Dan Novischi
Acestia sunt sumarizati in urmatorul tabel:
Operator Descriere Utilizare
Review
~ Negatie la nivel de bit ~a
Conversii
Binar-Hexazecimal & AND la nivel de bit a & b
Reprezentarea | OR la nivel de bit a | b
Numerelor Intregi
Reprezentarea
^ XOR la nivel de bit a ^ b
Numerelor Reale
Aplicatii
X Y X | Y X Y X ^ Y
Multi-Dimensional 0 0 0 0 0 0
0 1 1 0 1 1
1 0 1 1 0 1
1 1 1 1 1 0
Operatori la Nivel de Bit
Limbaje de
Programare
Curs 5 - Operatori
Bitwise si Tablouri
Exemple:
Dan Novischi
short x = 3, y = 17, z;
Review
Conversii z = ~x & y;
Binar-Hexazecimal
Reprezentarea z = x ^ y;
Numerelor Intregi
Reprezentarea z = y ^ 1;
Numerelor Reale
Operatori la Nivel
de Bit z = (~(x << 2) & y) | (x & y);
Tablouri
Uni-Dimesionale z = ((z >> x) | ((y >> 1) << z) & z);
Aplicatii Tablou
Uni-Dimensional
Toti operatorii la nivel de bit se pot combina cu operatorul de asignare in
Tablouri
Multi-Dimesionale mod simlar operatorilor aritmetici. Astfel, avem urmatoarele forme:
Aplicatii <<= >>= ~= &= |= ^=
Multi-Dimensional
Limbaje de
Programare
Curs 5 - Operatori Un tablou (array) este o collectie de date de aceslasi tip care are in
Bitwise si Tablouri
componenta un numar fix de elemente sau o colectie de date de acelasi
Dan Novischi
tip a carei dimensiune este fixa.
Review
Array-urile sunt de doua tipuri si anume: uni-dimensionale sau
Conversii
Binar-Hexazecimal
multi-dimensionale.
Reprezentarea In ambele cazuri elementele sunt stocate la locatii succesive de memorie
Numerelor Intregi
(vezi exemplu), sau mai spus intr-o zona de memorie contigua (fara
Reprezentarea
Numerelor Reale goluri).
Operatori la Nivel
de Bit
Declararea unui array uni-dimensional are urmatoarea forma generala:
Tablouri tip_date nume_array[dimensiune_array];
Uni-Dimesionale
Aplicatii Tablou
Uni-Dimensional
unde tip_date reprezinta tipul de date, nume_array este numele dat
array-ului – care respecta acelasi conventii pentru specificarea unui nume
Tablouri
Multi-Dimesionale de variabila sau de functie – si dimensiune_array este dimensiunea
Aplicatii (fixa) a array-ului.
Multi-Dimensional
Spre exempul, un vector de 100 de numere reale pentru a stoca 100 de
note la 100 de studenti s-ar putea declara astfel:
double note[100];
Tablouri Uni-Dimensionale
Limbaje de
Programare In cazul array-urilor uni-dimensionale, de multe ori, este util sa le
Curs 5 - Operatori
Bitwise si Tablouri vizualizam ca fiind o colectie de variabile. In exemplul anterior in loc sa
Dan Novischi
declaram 100 de variabile pentru a stoca 100 de note: double nota0,
nota1, ..., nota99; am declarat un singur array uni-dimensional avand
Review 100 de variabile.
Conversii
Binar-Hexazecimal
Reprezentarea
Numerelor Intregi
Reprezentarea
Numerelor Reale
Operatori la Nivel
de Bit
Tablouri
Uni-Dimesionale
Aplicatii Tablou
Uni-Dimensional
Tablouri
Multi-Dimesionale
Observati faptul ca delcrarea unui array seamna cu o declaratie de
variabila, sigurul lucru in plus este dimensiunea tabloului care trebuie
Aplicatii
Multi-Dimensional definita intre paranteze patrate.
La fel ca si variabilele obisnuite, array-urile respecta acelasi reguli de
localitate si pot fi declarate global sau local. Mai mult, acestea pot fi
prefatate cu specificatori ai claselor de memorare pastrand definitiile
prezentate in Cursul 4.
Accesul la Elementele Tabloului 1D
Limbaje de
Programare Accesul la elementele array-ului se realizeaza prin intermediul
Curs 5 - Operatori
Bitwise si Tablouri
mecanismului de indexare. Astfel, fiecare element are asociat un index
unic care specifica pozitia elementului in cadrul array-ului.
Dan Novischi
Review
Conversii
Binar-Hexazecimal
Reprezentarea
Numerelor Intregi
Reprezentarea
Numerelor Reale Indecsii sunt numerotati incepand cu 0. Astfel, primul element al unui
Operatori la Nivel array va fi intodeauna la index-ul zero.
de Bit
Ultimul element se afla intodeauna la (dimensiune – 1). In figura de
Tablouri
Uni-Dimesionale mai sus, dimensiunea array-ului este 5, deci ultimul element se afla la
Aplicatii Tablou index-ul 4.
Uni-Dimensional
Presupunand ca array-ul din figura a fost declarat ca int a[5]; atunci
Tablouri
Multi-Dimesionale
pentru a accesa primul element ca sa ii schimbam valoarea in -1 trebuie
sa scriem
Aplicatii
Multi-Dimensional a[0] = -1;
similar pentru a accesa restul de elemente:
a[1] = 3; // modifcarea elementului 2
printf("%d", a[3]); // afisarea elementului 4
scanf("%d", &a[4]); // citirea ultimului element
Initializare Tablou 1D
Limbaje de
Programare
Curs 5 - Operatori
Bitwise si Tablouri Initializarea unui array se poate realiza in doua moduri: la declaratie sau
Dan Novischi accesand ulterior fiecare element.
Review
Initializarea la declaratie unui array peresupune furnizarea unor valori
Conversii fiecarui element in momentul declararii array-ului. Astfel, avem
Binar-Hexazecimal
urmatoarea forma generala:
Reprezentarea
Numerelor Intregi tip_date nume_array[dimensiune] = {val0, val1, ..., valN};
Reprezentarea
Numerelor Reale
unde valorile corespunzatoare elemetelor sunt separate prin virgula,
intreaga lista este scrisa intre acoloade si numarul de valori din lista
Operatori la Nivel
de Bit trebuie sa corespunda dimensiunii declarate.
Tablouri
Uni-Dimesionale Valorile din lista de intializare a unui array corespund in ordine fiecarui
Aplicatii Tablou element din vector, astfel prima valorea va fi atribuita elementului de pe
Uni-Dimensional pozitia 0, a doua elementului de pe pozitia 1, s.a.m.d.
Tablouri
Multi-Dimesionale
Spre exemplu, pentru a intializa un array de intregi cu numele x de
Aplicatii dimensiune 5 trebuie sa furnizam o lista de 5 valori:
Multi-Dimensional
int x[5] = {-1, 51, 3, 18, -1600};
unde -1 corespunde lui x[0], 51 corespunde lui x[1], s.a.m.d.
Initializare Tablou 1D
Limbaje de
Programare
Curs 5 - Operatori
Bitwise si Tablouri
Deoarece furnizam lista de intializare la declaratia array-ului, dimensiunea
Dan Novischi
acestuia se poate omite lasand doar paratezele patrate. Dimensiunea
acestuia este dedusa de compilator din numarul valorilor din lista. Spre
Review exemplu, array-ul x putea fi declarat si astfel:
Conversii int x[] = {-1, 51, 3, 18, -1600};
Binar-Hexazecimal
Limbaje de
Programare
Curs 5 - Operatori
Bitwise si Tablouri In Cursul 2 discutam despre operatorul sizeof() prin intermediul caruia
Dan Novischi puteam determina dimensiunea in octeti al unui anumit tip de date sau al
unei variabile. Nu e de mirare, faptul ca putem utiliza acest operator
Review
pentru a determina in mod automat dimensiunea unui arrary in numar de
Conversii elemente.
Binar-Hexazecimal
Operatori la Nivel
double a[] = {12.1, -123.18, 3.14142, 802};
de Bit printf("%d\n", (int)sizeof(a));
Tablouri va afisa valoarea 32 deoarce un sigur element de tip double are lungimea
Uni-Dimesionale
de 8 bytes si array-ul are 4 astfel de elemente.
Aplicatii Tablou
Uni-Dimensional Pentru a obine lungimea in numar de elemente a array-ului putem imparti
Tablouri lungimea array-ul in bytes la lungimea tipului de date, astfel:
Multi-Dimesionale
printf("%d\n", (int) (sizeof(a)/sizeof(double)));
Aplicatii
Multi-Dimensional va afisa valoarea 4, care reprezinta dimensiunea array-ului.
Limbaje de
Programare
Curs 5 - Operatori Ca parametrii de functii array-urile se declara fara a specifica dimensiunea
Bitwise si Tablouri
acestora, ca si cand am furniza o lista de intializare.
Dan Novischi
Sa presupunem ca dorim sa creem o functie care afiseaza (succesiv pe
Review cate o line) toate valorile unui array de intregi. Fuctia va avea ca
Conversii parametrii array-ul si dimensiunea acestuia.
Binar-Hexazecimal
Reprezentarea
void printIntArray(int x[], int n){
Numerelor Intregi for(int i = 0; i < n; i++){
Reprezentarea printf("x[%d] = %d\n", i, x[i]);
Numerelor Reale }
Operatori la Nivel }
de Bit
return 0;
}
Aplicatii Tablou Uni-Dimensional
Limbaje de
Programare 1. Scrieti un program care sa afiseze valoarea maxima dintr-un array de
Curs 5 - Operatori
Bitwise si Tablouri
numere reale citit de la tastatura:
Dan Novischi #include <stdio.h>
float max(float x[], int n){
Review float m = x[0];
Conversii for(int i = 0; i < n; i++){
Binar-Hexazecimal
if(m < x[i])
Reprezentarea
Numerelor Intregi
m = x[i];
}
Reprezentarea
Numerelor Reale return m;
Operatori la Nivel }
de Bit int main(void){
Tablouri float x[100], int n;
Uni-Dimesionale
printf("n = "); scanf("%d", &n);
Aplicatii Tablou if (n > 100) return -1;
Uni-Dimensional
Tablouri
Multi-Dimesionale for(int i = 0; i < n; i++){
Aplicatii
printf("x[%d] = ", i);
Multi-Dimensional scanf("%f",&x[i]);
}
printf("Max = %f\n", max(x,n));
return 0;
}
Aplicatii Tablou Uni-Dimensional
Limbaje de
Programare
2. Scrieti o functie care implementeaza algoritmul de cautare binara a unui
Curs 5 - Operatori element intr-un array de numere reale sortat (ex: float x[] = {-12.1,
Bitwise si Tablouri
2.73, 3.14, 7}).
Dan Novischi
int binarySearch(double arr[], double x, int n){
Review
int mid, left, right;
Conversii
Binar-Hexazecimal
left = 0;
Reprezentarea
Numerelor Intregi
right = n - 1;
Reprezentarea
Numerelor Reale do{
Operatori la Nivel mid = (left + right)/2; // sau mid = left + (right - left)/2;
de Bit
return -1;
}
Aplicatii Tablou Uni-Dimensional
Limbaje de
Programare
Curs 5 - Operatori Limbajul C permite declararea si utilizarea array-urilor de mai multe
Bitwise si Tablouri dimensiuni. Cel mai adesea, fiind util sa ne gandim la acest tip de
Dan Novischi tablouri ca fiind un array care are in componenta sub-array-uri (sau un
array de array-uri).
Review
Aplicatii Tablou
float mat[4][3];
Uni-Dimensional
unde dimensiunea array-ului principal este 4 si are in componenta alte 3
Tablouri array-uri 1D. Sau altfel spus, array-ul este o matrice de 4 linii (rows) si 3
Multi-Dimesionale
coloane (columns).
Aplicatii
Multi-Dimensional
Succesiv putem adauga cate dimensiuni dorim. Spre exemplu, daca vrem
sa creem un array de numere intregi x cu 3 dimensiuni (2 × 3 × 4) vom
scrie:
int x[2][3][4];
Accesul la Elemente in Multi-D
Limbaje de
Programare
Curs 5 - Operatori
Similar tablourilor uni-dimesionale accesul la elementele array-ului
Bitwise si Tablouri multi-dimensional se realizeaza prin indexare.
Dan Novischi
Indexarea unui array multi-dimensional se realizeaza in fiecare
Review
dimesiune, pastrand regulile de numerotare unde primul index se afla pe
pozitia 0 iar ultiumul pe pozitia (dimesiune - 1).
Conversii
Binar-Hexazecimal Spre exemplu, pentru a modifica primul element din tabloul mat declarat
Reprezentarea anterior vom scrie:
Numerelor Intregi
Reprezentarea
mat[0][0] = 2.73;
Numerelor Reale
unde operatia se poate citi: elementul de pe prima linie si prima coloana
Operatori la Nivel este egal cu 2.73.
de Bit
Tablouri
Dat fiind faptul ca array-ul mat are dimesiunea de 4 × 3 ultimul element
Uni-Dimesionale se afla la indecsii 4 − 1 si 3 − 1 sau:
Aplicatii Tablou
Uni-Dimensional
mat[3][2] = 3.1;
Tablouri Similar pentru mai multe dimensiuni. Spre exemplu, pentru array-ul x
Multi-Dimesionale declarat anterior vom avea:
Aplicatii x[0][0][0] = 1; // primul element
Multi-Dimensional
x[1][2][3] = 9; // ultimul element
Alte Exemple:
mat[1][0] = 2.3; // a doua line, prima coloana
mat[0][2] = 2.3; // prima line, a treia coloana
Inizilizari Tablouri Multi-Dimesionale
Limbaje de
Programare
Curs 5 - Operatori
Bitwise si Tablouri
Dan Novischi
Initializarea tablourilor multi-dimensionale poate fi realizata similar cu
Review
cele uni-dimensionale: folosind o lista de intializare sau ulterior prin
Conversii accesul individual la elemente.
Binar-Hexazecimal
Reprezentarea
Initializarea la declaratie in acest caz se realizeaza furnizand o lista de
Numerelor Intregi liste care respecta dimensiunele declaratie. Spre exemplu, initializarea
Reprezentarea array-ului mat la declaratie cu valoarea 1.0 peste tot va avea urmatoarea
Numerelor Reale
forma:
Operatori la Nivel float mat[4][3] = {
de Bit
{1.0, 1.0, 1.0},
Tablouri
Uni-Dimesionale
{1.0, 1.0, 1.0},
Aplicatii Tablou
{1.0, 1.0, 1.0},
Uni-Dimensional {1.0, 1.0, 1.0}
Tablouri };
Multi-Dimesionale
unde se poate observa elementele din lista principala sunt la randul lor
Aplicatii liste de intializare.
Multi-Dimensional
Inizilizari Tablouri Multi-Dimesionale
Limbaje de
Programare
Curs 5 - Operatori
Bitwise si Tablouri Similar se va proceda pentru mai multe dimensiuni:
Dan Novischi int x[2][3][4] = { // lista primara
Review
// lista secundara
Conversii
Binar-Hexazecimal
{
Reprezentarea
{1, 1, 1, 1},
Numerelor Intregi {1, 1, 1, 1},
Reprezentarea {1, 1, 1, 1},
Numerelor Reale },
Operatori la Nivel
de Bit
// lista secundara
Tablouri {
Uni-Dimesionale
{1, 1, 1, 1},
Aplicatii Tablou
Uni-Dimensional {1, 1, 1, 1},
Tablouri
{1, 1, 1, 1},
Multi-Dimesionale }
Aplicatii
Multi-Dimensional };
unde pornind ierahic de sus in jos: prima lista are doua elemente, cea
secundara are 3 elemente, iar ultima lista din ierarhie are 4 elemente.
Inizilizari Tablouri Multi-Dimesionale
Limbaje de
Programare
Cel mai adesea nu vom cunoste datele unui tablou la scrierea unui
Curs 5 - Operatori program, astfel va trebui sa le citim in momentul rularii programului,
Bitwise si Tablouri
accesand individual elementele tabloului.
Dan Novischi
Spre exemplu, programul urmator citeste o matrice de numere reale cu
Review dimensiunea m × n de la tastura si o afiseaza:
Conversii #include <stdio.h>
Binar-Hexazecimal int main(void){
Reprezentarea float mat[100][100];
Numerelor Intregi
int m,n;
Reprezentarea
Numerelor Reale
printf("Introduceti numarul de linii: "); scanf("%d",&m);
printf("Introduceti numarul de coloane: "); scanf("%d",&n);
Operatori la Nivel
de Bit for(int i = 0; i < m; i++){
Tablouri for(int j = 0; j < n; j++){
Uni-Dimesionale printf("mat[%d][%d] = ", i, j);
Aplicatii Tablou scanf("%d", &mat[i][j]);
Uni-Dimensional
}
Tablouri }
Multi-Dimesionale
for(int i = 0; i < m; i++){
Aplicatii
Multi-Dimensional for(int j = 0; j < n; j++)
printf("%d ", mat[i][j]);
printf("\n");
}
return 0;
}
Aplicatii
Limbaje de
Programare 1. Traspusa unei matrici de m linii si n coloane:
Curs 5 - Operatori
Bitwise si Tablouri #include <stdio.h>
Dan Novischi int main(void){
int a[10][10], transpose[10][10], rows, col;
Review
Reprezentarea
Numerelor Intregi
// Citire matrice ...
Reprezentarea
Numerelor Reale for(int i = 0; i < rows; i++){
Operatori la Nivel for(int j = 0; j < col; j++){
de Bit transpose[j][i] = a[i][j];
Tablouri }
Uni-Dimesionale
}
Aplicatii Tablou
Uni-Dimensional
printf("\nMatricea Transpusa:\n");
Tablouri
Multi-Dimesionale for(int i = 0; i < col; i++){
Aplicatii
for(int j = 0; j < rows; j++){
Multi-Dimensional printf("%d ", transpose[i][j]);
}
}
return 0;
}
Aplicatii
Limbaje de
Programare 1. Inmultirea matriciilor
Curs 5 - Operatori
Bitwise si Tablouri #include <stdio.h>
Dan Novischi int main(void){
float a[10][10];
Review float b[10][10];
Conversii float c[10][10];
Binar-Hexazecimal
int m1, n1; // dimesiunile matricii a
Reprezentarea
Numerelor Intregi
int m2, n2 // dimensiunile matricii b
// Citeste dimensiunile...
Reprezentarea
Numerelor Reale // Citeste matricile a si b
Operatori la Nivel // Intializea c cu zero peste tot
de Bit if(n1 != m2) return;
Tablouri
Uni-Dimesionale
for(int i = 0; i < m1; i++){
Aplicatii Tablou for(int j = 0; j < n2; k++){
Uni-Dimensional
for(int k = 0; k < n1; k++){
Tablouri
Multi-Dimesionale c[i][j] += a[i][k]*b[k][j];
Aplicatii
}
Multi-Dimensional }
}
// Afiseaza matricea c ...
return 0;
}