Programarea calculatoarelor. C++ Tablouri # 8. Adrian Runceanu

Documente similare
Programarea şi utilizarea calculatoarelor

Slide 1

E_d_Informatica_sp_SN_2014_bar_10_LRO

SUBPROGRAME

Diapositive 1

Programarea şi utilizarea calculatoarelor

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XII 1.Să se scrie în limbajul C/C++ definiţia comp

Limbaje de Programare Curs 6 – Functii de intrare-iesire

LUCRAREA NR

/*

Subiectul 1

E_d_Informatica_sp_MI_2015_bar_02_LRO

L7

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

Microsoft Word - CarteC.doc

Microsoft Word - CarteC.doc

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

Algoritmi genetici paraleli. Implementari Java. Continut laborator: 1. Obiectivul lucrarii. 2. Notiuni teoretice: 3. Cerinte laborator. 4. Tema. 1. Ob

Top

Microsoft Word - Raspunsul la niste provocari. Partea III..doc

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Tablouri unidimensionale Problema 1 Să se determine mulţimea cifrelor unui număr natural n > 0, dat. Exemplu: n= Cifre = {1,2,3,7} Se cere să s

PCLPII-C16(9)

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare

I. Partea introductivă Proiectul unității de învățare CONCEPTUL DE MATRICE ŞCOALA: Colegiul Național Petru Rareș Suceava CLASA: a XI a- matematică / a

Microsoft Word - Software pentru ordonarea multirang a componentelor unei colectivitati.doc

Calcul Numeric

Microsoft Word - PCLP2_Curs_4_2019.doc

Secţiunea 5-6 avansaţi PROBLEMA 1 Concurs online de informatică Categoria PROGRAMARE 100 puncte NR Un număr natural nenul V care se plictisea singur,

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

proiectarea bazelor de date

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XI 1.Fişierul text bac.in conţine cel mult 1000 de

Microsoft Word - O problema cu bits.doc

Laborator 3

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Limbaje de Programare Curs 5 – Siruri de caractere

ALGORITHMICS

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

Probleme proiect TP BITPERM Implementați un algoritm care citește de la intrarea standard două numere naturale și scrie la ieșirea standard da

Spatii vectoriale

Nr. 932 din Avizat ISJ Vâlcea, Inspector școlar informatică, Ciochină Luisa EXAMEN DE ATESTARE A COMPETENȚELOR PROFESIONALE A ABSOLVENȚILOR

Programarea şi utilizarea calculatoarelor

Microsoft Word - cap1p4.doc

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Slide 1

1

Microsoft PowerPoint - Curs_SDA_4_RO_2019_v2.pptx

-

Calcul Numeric

gaussx.dvi

/*

Performanta in matematica de gimnaziu si liceu-program de pregatire al elevilor olimpici MULTIMI. OPERATII CU MULTIMI Partea I+II Cls. a V-a

Adresarea memoriei Modurile de adresare constituie un instrument principal pentru reprezentarea în memorie a imaginii datelor, aşa cum este ace

C++ Probleme

DAN LASCU ADRIANA-LIGIA SPORIŞ ANDA OLTEANU PAUL VASILIU MATEMATICĂ. CULEGERE DE PROBLEME TIP GRILĂ PENTRU ADMITEREA ÎN ACADEMIA NAVALĂ MIRCEA CEL BĂT

Clasa IX 1. O lăcustă face salturi, fiecare salt în linie dreaptă şi de două ori mai lung ca precedentul. Poate vreodată lăcusta să revină în punctul

Microsoft Word - 2 Filtre neliniare.doc

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Microsoft PowerPoint - Curs_SDA_3_RO_2019_v2.pptx

Grile si probleme siruri de caractere in C++ ŞIRURI DE CARACTERE Itemii următori sunt preluaţi din variantele de bacalaureat În secvenţa de i

Algebr¼a liniar¼a, geometrie analitic¼a şi diferenţial¼a B¼arb¼acioru Iuliana Carmen Seminarul 2

tehnologii web

Calcul Numeric

Concurs online de informatică Categoria PROGRAMARE Secţiunea 5-6 avansaţi PROBLEMA puncte DANS De 1 Iunie - Ziua Copilului se organizează un spe

Probleme rezolvate informatica: Probleme rezolvate grafuri si a

Logică și structuri discrete Mulțimi Casandra Holotescu

Lecții de pregă,re la informa,că Admitere 2019 Tema: Discutarea problemelor date la ul,mele sesiuni de admitere Bogdan Alexe

CLP_UTCN-grila-2012.dvi

Secţiunea 5-6 începători Concurs online de informatică Categoria PROGRAMARE PROBLEMA puncte PERIODIC Se citește un număr natural nenul N. Se ump

Curs 8: Tehnica divizării (I) Algoritmi si structuri de date - Curs 8 1

PowerPoint-Präsentation

Microsoft Word - Rezolvarea Test nr. 11.doc

Lucrarea 7 Filtrarea imaginilor BREVIAR TEORETIC Filtrarea imaginilor se înscrie în clasa operaţiilor de îmbunătăţire, principalul scop al acesteia fi

Ministerul Educatiei, Cercetarii si Tineretului Grup Scolar Gh. Asachi Galati Proiect pentru obtinerea certificatului de competente profesionale Speci

Prelegerea 4 În această prelegere vom învăţa despre: Algebre booleene; Funcţii booleene; Mintermi şi cuburi n - dimensionale. 4.1 Definirea algebrelor

Laborator 1-Teoria probabilitatilor si statistica matematica Sef lucrari dr.mat. Daniel N.Pop Departamentul de calculatoare si inginerie electrica 1 P

Facultatea de Matematică Anul II Master, Geometrie Algebrică Mulţimi algebrice ireductibile. Dimensiune 1 Mulţimi ireductibile Propoziţia 1.1. Fie X u

Fâciu N. Maria-Ema CASA CORPULUI DIDACTIC BRĂILA PROGRAM DE FORMARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: Fâciu N. M

Procesarea de imagini folosind programarea paralela. Implementari Java. Continut laborator: 1. Obiectivul lucrarii. 2. Notiuni teoretice: 3. Cerinte l

CURBE BÉZIER În CAGD se utilizează adesea curbele polinomiale, adică acele curbe definite de o parametrizare polinomială: C : [a, b] R 3 C(t) = (x(t),

MergedFile

METODE NUMERICE ÎN INGINERIE

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

O NOUA PROBLEMA DE CONCURS OLIMPIADA MUNICIPALA DE INFORMATICA, IASI 2019 V-am promis într-un articol mai vechi ca vom prezenta pe acest blog câteva p

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

Lab6LCD

Slide 1

Declaraţii. Instrucţiuni 19 octombrie 2005 Programarea calculatoarelor 2. Curs 3b Marius Minea

Limbaje de Programare Curs 8 – Fisiere

Microsoft Word - PLANIFICARE CLASA 2.doc

Lecţia 2 Structura liniară, alternativă şi repetitivă Clasa a V-a Structuri de bază(liniară, alternativă şi repetitivă) Programarea structurată este o

PHP (II)

CONCURSUL DE MATEMATICĂ APLICATĂ "ADOLF HAIMOVICI" ETAPA JUDEȚEANĂ 18 martie 2017 Filiera Tehnologică : profilul Tehnic Clasa a IX -a Problema 1. 2 Se

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

20 SUBIECTE DE EXAMEN - De fapt, în pofida acestor probleme, până la urmă tot vom logaritma, căci aceasta este tehnica naturală în context. Trebuie do

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Introducere în statistică

Analiză statică Analiza fluxului de date 23 octombrie 2014

Transcriere:

Programarea calculatoarelor # 8 C++ Tablouri 2016 Adrian Runceanu www.runceanu.ro/adrian

Curs 8 Tablouri 07.11.2016 Programarea calculatoarelor 2

Capitolul 7. Tablouri 7.1. Generalități. Clasificare 7.2. Tablouri unidimensionale (vectori) 7.3. Tablouri bidimensionale (matrici) 7.4. Tablouri multidimensionale 07.11.2016 Programarea calculatoarelor 3

7.1. Generalitati. Clasificare Numim tablou o colecţie de date de acelaşi tip, în care elementele sunt ordonate, iar accesul la fiecare element are loc prin indice. În funcţie de numărul indicilor avem mai multe tipuri de tablouri: 1. Tablouri unidimensionale (cu un singur indice) 2. Tablouri bidimensionale (cu doi indici) 3. Tablouri multidimensionale (cu mai mulţi indici) 07.11.2016 Programarea calculatoarelor 4

Capitolul 7. Tablouri 7.1. Generalități. Clasificare 7.2. Tablouri unidimensionale (vectori) 7.3. Tablouri bidimensionale (matrici) 7.4. Tablouri multidimensionale 07.11.2016 Programarea calculatoarelor 5

7.2. Tablouri unidimensionale (vectori) Tablourile unidimensionale funcţionează ca un vector şi se pot declara astfel: tip nume_tablou[dimensiune_maximă]; Se observă că este obligatorie folosirea parantezelor drepte care să încadreze dimensiunea maximă pe care o alege utilizatorul pentru acel tablou unidimensional. 07.11.2016 Programarea calculatoarelor 6

7.2. Tablouri unidimensionale (vectori) Exemplu: Declarări de tablouri unidimensionale: int a[25]; // declararea unui tablou unidimensional cu maxim 25 de // elemente, fiecare de tip întreg float x[30]; // declararea unui tablou unidimensional cu maxim 30 de // elemente, fiecare de tip real simplă precizie char s[40]; // declararea unui tablou unidimensional cu maxim 40 de // elemente, fiecare de tip caracter 07.11.2016 Programarea calculatoarelor 7

7.2. Tablouri unidimensionale (vectori) Compilatorul C++ alocă un spaţiu de memorie egal cu numărul maxim de elemente ale tabloului, rezervând bineînţeles octeţi în funcţie de tipul de bază al fiecărui tablou. Accesul la fiecare element al tabloului se face prin numele acestuia urmat între paranteze, de indicele său (adică poziţia pe care o ocupă în tablou). În limbajul C++, indicii tablourilor încep numărătoarea de la valoarea 0. 07.11.2016 Programarea calculatoarelor 8

7.2. Tablouri unidimensionale (vectori) Exemplu: Modalităţi de acces la elementele ce pot fi memorate în tablourile unidimensionale declarate anterior: a[0] reprezintă elementul aflat pe prima poziţie în tablou a[24] - reprezintă elementul aflat pe ultima poziţie în tablou x[i] - reprezintă elementul aflat pe poziţia i în tablou, unde i poate avea valori între 0 şi 29. 07.11.2016 Programarea calculatoarelor 9

7.2. Tablouri unidimensionale (vectori) Iniţializarea elementelor unui tablou se poate face total sau parţial la declararea lor: int b[5] = {1, 2, 3, 4, 5; Astfel: elementul b[0] are valoarea 1 elementul b[1] are valoarea 2 elementul b[2] are valoarea 3 elementul b[3] are valoarea 4 elementul b[4] are valoarea 5 07.11.2016 Programarea calculatoarelor 10

7.2. Tablouri unidimensionale (vectori) Problema 1: Se consideră n numere reale. Se cere să se determine valoarea minimă şi valoarea maximă. Exemplu: Date de intrare: n=5 si x={10, -2, 34, -198, 4 Date de ieşire: minim=-198, maxim=34 07.11.2016 Programarea calculatoarelor 11

7.2. Tablouri unidimensionale (vectori) #include<iostream.h> int main(void) { int i, n; float x[50], min, max; cout<<"dati numarul de elemente ale tabloului "; cin>>n; for( i = 0; i <=n; i++ ) { cout<<"x["<<i+1<<"]= "; cin>>x[i]; Citirea numarului de elemente ce vor fi prelucrate in vector - n Citirea elementelor si memorarea lor in vectorul x 07.11.2016 Programarea calculatoarelor 12

7.2. Tablouri unidimensionale (vectori) min = x[0]; max = x[0]; for( i=1; i<n; i++ ) if( min > x[i] ) min = x[i]; else if( max < x[i] ) max = x[i]; cout<<"\nminimul este "<<min; cout<<"\nmaximul este "<<max; Determinarea minimului Determinarea maximului 07.11.2016 Programarea calculatoarelor 13

7.2. Tablouri unidimensionale (vectori) Executia programului pe o serie de date de test: 07.11.2016 Programarea calculatoarelor 14

7.2. Tablouri unidimensionale (vectori) Problema 2: Se consideră n numere întregi. Se cere să se verifice dacă ele sunt sau nu în ordine crescătoare, afișând câte un mesaj corespunzător. Exemplu: Date de intrare: n=5 si x={1, 2, 17, 25, 43 Date de ieşire: Elemente vectorului sunt in ordine crescatoare 07.11.2016 Programarea calculatoarelor 15

7.2. Tablouri unidimensionale (vectori) #include<iostream.h> int main(void) { int i, n, verif=1; int x[50]; cout<<"dati numarul de elemente ale tabloului X "; cin>>n; for(i=0; i<n; i++) { cout<<"x["<<i+1<<"]= "; cin>>x[i]; Citirea numarului de elemente ce vor fi prelucrate in vector - n Citirea elementelor si memorarea lor in vectorul x 07.11.2016 Programarea calculatoarelor 16

7.2. Tablouri unidimensionale (vectori) for(i=0; i<=n-2; i++) if( x[i] > x[i+1] ) verif=0; Verificarea proprietatii cerute in enunt if( verif == 1 ) cout<<"numerele din tablou sunt in ordine CRESCATOARE"; else cout<<"numerele din tablou NU sunt in ordine CRESCATOARE"; 07.11.2016 Programarea calculatoarelor 17

7.2. Tablouri unidimensionale (vectori) Executia programului pe doua serii de date de test: 07.11.2016 Programarea calculatoarelor 18

Capitolul 7. Tablouri 7.1. Generalităţi. Clasificare 7.2. Tablouri unidimensionale (vectori) 7.3. Tablouri bidimensionale (matrici) 7.4. Tablouri multidimensionale 07.11.2016 Programarea calculatoarelor 19

7.3. Tablouri bidimensionale (matrici) Tablourile bidimensionale funcţionează ca o matrice şi se pot declara astfel: tip nume_tablou[dim_linie][dim_coloana]; La fel ca şi în cazul tablourilor unidimensionale, şi în cazul tablourilor bidimensionale, la declarare, se trece dimensiunea maximă a liniilor (dim_linie) şi dimensiunea maximă a coloanelor (dim_coloana). 07.11.2016 Programarea calculatoarelor 20

7.3. Tablouri bidimensionale (matrici) Exemplu: Declarări de tablouri bidimensionale: int a[10][10]; // declararea unui tablou bidimensional cu maxim 100 de // elemente (10*10), fiecare de tip întreg float x[5][5]; // declararea unui tablou bidimensional cu maxim 25 de // elemente(5*5), fiecare de tip real simplă precizie char s[20][10]; // declararea unui tablou bidimensional cu maxim 200 de // elemente(20*10), fiecare de tip caracter 07.11.2016 Programarea calculatoarelor 21

7.3. Tablouri bidimensionale (matrici) Compilatorul C++ alocă un spaţiu de memorie egal cu numărul de linii înmulţit cu numărul de coloane ale tabloului, rezervând bineînţeles octeţi în funcţie de tipul de bază al fiecărui tablou. Accesul la fiecare element al tabloului se face prin numele acestuia urmat între paranteze, de indicele liniei şi indicele coloanei (adică poziţia pe care o ocupă în tablou). 07.11.2016 Programarea calculatoarelor 22

7.3. Tablouri bidimensionale (matrici) Exemplu: Modalităţi de acces la elementele ce pot fi memorate în tablourile bidimensionale declarate anterior: a[0][0] reprezintă elementul aflat pe linia 0 coloana 0 a[9][9] - reprezintă elementul aflat pe linia 9 coloana 9 x[i][j] - reprezintă elementul aflat pe linia i, coloana j în matrice, unde i şi j pot avea valori între 0 şi 4. 07.11.2016 Programarea calculatoarelor 23

7.3. Tablouri bidimensionale (matrici) Iniţializarea elementelor unui tablou se poate face total sau parţial la declararea lor: int b[2][3]={ {1, 2, 3, {4, 5, 6 ; Astfel: elementul b[0][0] are valoarea 1 elementul b[0][1] are valoarea 2 elementul b[0][2] are valoarea 3 elementul b[1][0] are valoarea 4 elementul b[1][1] are valoarea 5 elementul b[1][2] are valoarea 6 07.11.2016 Programarea calculatoarelor 24

7.3. Tablouri bidimensionale (matrici) Problema 1: Se consideră o matrice A cu n m numere întregi. Se cere să se obţină transpusa sa. Exemplu: Date de intrare: n=3, m=4 si matricea A: 1 2 3 4 5 6 7 8 9 10 11 12 Date de ieşire: Matricea transpusa B: n=4 si m=3 1 5 9 2 6 10 3 7 11 4 8 12 07.11.2016 Programarea calculatoarelor 25

7.3. Tablouri bidimensionale (matrici) #include<iostream.h> int main(void) { int a[10][10], b[10][10]; int n, m, i, j; cout<<"dati dimensiunile matricei A \n"; cout<<"dati numarul de linii n = "; cout<<"dati numarul de coloane m = "; for(i=0; i<n; i++) for(j=0; j<m; j++) { cout<<"a["<<i+1<<", "<<j+1<<"] = "; cin>>a[i][j]; Citirea numarului de linii n si de coloane - m ale matricei cin>>n; cin>>m; Citirea elementelor si memorarea lor in matricea a 07.11.2016 Programarea calculatoarelor 26

7.3. Tablouri bidimensionale (matrici) cout<<"elementele matricei A sunt : \n"; for(i=0; i<n; i++) { for(j=0; j<m; j++) cout<<a[i][j]<<" "; cout<<"\n"; Afisarea elementelor din matricea a 07.11.2016 Programarea calculatoarelor 27

7.3. Tablouri bidimensionale (matrici) for(i=0; i<n; i++) for(j=0; j<m; j++) b[j][i] = a[i][j]; Construirea matricei transpuse prin transformarea liniilor in coloane si invers cout<<"elementele matricei transpuse sunt \n"; for(i=0; i<m; i++) { for(j=0; j<n; j++) cout<<b[i][j]<<" "; cout<< "\n"; 07.11.2016 Programarea calculatoarelor 28

7.3. Tablouri bidimensionale (matrici) Executia programului pe o serie de date de test: 07.11.2016 Programarea calculatoarelor 29

7.3. Tablouri bidimensionale (matrici) Problema 2: Se consideră două tablouri bidimensionale (matrici) A şi B cu n m numere întregi. Se cere să se calculeze matricea suma: C = A + B. 07.11.2016 Programarea calculatoarelor 30

#include<iostream.h> int main(void) { 7.3. Tablouri bidimensionale (matrici) int Matrice1 [10][10], Matrice2 [10][10], Matricesuma[10][10]; int i, j, n, m; cout<<"dati dimensiunile primei matrici \n"; cout<<"dati numarul de linii n = "; cin>>n; cout<<"dati numarul de coloane m = "; cin>>m; for(i=0; i<n; i++){ Citirea numarului de linii n si de coloane - m ale matricei for(j=0; j<m; j++){ cout<<"matrice1["<<i+1<<", "<<j+1<<"] = "; cin>>matrice1[i][j]; Citirea elemente lor si memorar ea lor in prima matrice 07.11.2016 Programarea calculatoarelor 31

7.3. Tablouri bidimensionale (matrici) cout<<"elementele primei matrici sunt : \n"; for(i=0; i<n; i++) { for(j=0; j<m; j++) cout<<matrice1[i][j]<<" "; cout<<"\n"; Afisarea elementelor din prima matrice 07.11.2016 Programarea calculatoarelor 32

7.3. Tablouri bidimensionale (matrici) for(i=0; i<n; i++){ for(j=0; j<m; j++){ cout<<"matrice2["<<i<<", "<<j<<"] = "; cin>>matrice2[i][j]; cout<<"elementele celei de-a doua matrice sunt : \n"; for(i=0; i<n; i++) { for(j=0; j<m; j++) cout<<matrice2[i][j]<<" "; cout<<"\n"; 07.11.2016 Programarea calculatoarelor 33

7.3. Tablouri bidimensionale (matrici) Construirea matricei suma prin adunarea for(i=0; i<n; i++) valorilor pe linie si pe coloana for(j=0; j<m; j++) Matricesuma[i][j]=Matrice1[i][j]+Matrice2[i][j]; cout<<"elementele matricii suma sunt : \n"; for(i=0; i<n; i++) { for(j=0; j<m; j++) cout<<matricesuma[i][j]<<" "; cout<<"\n"; 07.11.2016 Programarea calculatoarelor 34

7.3. Tablouri bidimensionale (matrici) Executia programului pe o serie de date de test: 07.11.2016 Programarea calculatoarelor 35

7.3. Tablouri bidimensionale (matrici) Problema 3: Se consideră două tablouri bidimensionale (matrici) A şi B cu n m, respectiv m p numere întregi. Se cere să se calculeze matricea produs: C = A * B. 07.11.2016 Programarea calculatoarelor 36

7.3. Tablouri bidimensionale (matrici) Exemplu: Date de intrare: n=2, m=3 si matricea a: 1 2 3 4 5 6 m=3, p=4 si matricea b: 1 2 3 4 5 6 7 8 9 10 11 12 Date de iesire: n=2 si p=3 si matricea produs c: 38 44 50 56 83 98 113 128 07.11.2016 Programarea calculatoarelor 37

7.3. Tablouri bidimensionale (matrici) #include<iostream.h> int main(void) { int a[10][10], b[10][10], c[10][10]; int n, m, i, j, k, p; cout<<"dati dimensiunile matricei A \n"; cout<<"dati numarul de linii n = "; cin>>n; cout<<"dati numarul de coloane m = "; cin>>m; for(i=0; i<n; i++) for(j=0; j<m; j++) { cout<<"a["<<i+1<<", "<<j+1<<"] = "; cin>>a[i][j]; Citirea numarului de linii n si de coloane - m ale matricei Citirea elementelor si memorarea lor in matricea a 07.11.2016 Programarea calculatoarelor 38

7.3. Tablouri bidimensionale (matrici) cout<<"elementele matricei A sunt : \n"; for(i=0; i<n; i++) { for(j=0; j<m; j++) cout<<a[i][j]<<" "; cout<< "\n"; Afisarea elementelor din matricea a 07.11.2016 Programarea calculatoarelor 39

7.3. Tablouri bidimensionale (matrici) cout<<"dati dimensiunile matricei B \n"; cout<<"dati numarul de linii m = "; cin>>m; cout<<"dati numarul de coloane p = "; cin>>p; for(i=0; i<m; i++) for(j=0; j<p; j++) { cout<< "b["<<i<<", "<<j<<"] = "; cin>>b[i][j]; cout<<"elementele matricei B sunt : \n"; for(i=0; i<m; i++) { for(j=0; j<p; j++) cout<<b[i][j]<<" "; cout<<"\n"; Citirea elementelor si memorarea lor in matricea b 07.11.2016 Programarea calculatoarelor 40

7.3. Tablouri bidimensionale (matrici) Conditie: Numarul de coloane din prima matrice trebuie sa fie egal cu numarul de linii din a doua matrice. Prima matrice 2 x 4 A doua matrice 4 x 3 Trebuie sa fie acelasi numar Matricea rezultat 07.11.2016 Programarea calculatoarelor 41

7.3. Tablouri bidimensionale (matrici) for(i=0; i<n; i++) for(j=0; j<p; j++) { c[i][j] = 0; for(k=0; k<m; k++) c[i][j] = c[i][j] + a[i][k] * b[k][j]; Calculul elementelor matricei produs c 07.11.2016 Programarea calculatoarelor 42

7.3. Tablouri bidimensionale (matrici) cout<<"elementele matricei produs C sunt : \n"; for(i=0; i<n; i++) { for(j=0; j<p; j++) cout<<c[i][j]<<" "; cout<<"\n"; 07.11.2016 Programarea calculatoarelor 43

7.3. Tablouri bidimensionale (matrici) Executia programului pe o serie de date de test: 07.11.2016 Programarea calculatoarelor 44

Probleme rezolvate tablouri unidimensionale Enunt: Se considera un numar natural n. Se cere sa se formeze un vector cu cifrele numarului. Exemplu: Date de intrare: Pentru valoarea: n = 23416789 Date de iesire: Se obtine vectorul cu elementele: 9 8 7 6 1 4 3 2 07.11.2016 Programarea calculatoarelor 45

Probleme rezolvate tablouri unidimensionale #include<iostream.h> int main(void) { // declaram variabilele pe care le vom utiliza in program int x[30]; long int n, i, m; cout<<"dati numarul natural n = "; cin>>n; 07.11.2016 Programarea calculatoarelor 46

Probleme rezolvate tablouri unidimensionale i = 0; while(n!= 0){ x[i] = n % 10; i++; n = n / 10; m = i-1; cout<<"\nvectorul cu cifrele numarului este \n"; for(i = 0; i < m; i++){ cout.width(3); cout<<x[i]; 07.11.2016 Programarea calculatoarelor 47

Probleme rezolvate tablouri unidimensionale Executia programului pe o serie de date de test: 07.11.2016 Programarea calculatoarelor 48

Probleme rezolvate tablouri unidimensionale Enunt: Reuniunea a doua multimi Sa se scrie un program care sa calculeze reuniunea a doua multimi de cate n, respectiv m numere intregi memorate cu ajutorul vectorilor. Exemplu: Date de intrare: n = 5, a = {1, 2, 5, 7, 12 si m = 4, b = {2, 4, 8, 12 Date de iesire: se obtine: k=7, c={1, 2, 5, 7, 12, 4, 8 07.11.2016 Programarea calculatoarelor 49

Probleme rezolvate tablouri unidimensionale #include<iostream.h> int main(void) { int a[100], b[100], c[100], n, m, i, j, k, ok; cout<<"dati cardinalul multimii A - n = "; cin>>n; cout<<"dati elementele multimii A \n"; for(i = 0; i < n; i++){ cout<<"a["<<i+1<<"] = "; cin>>a[i]; 07.11.2016 Programarea calculatoarelor 50

Probleme rezolvate tablouri unidimensionale cout<<"dati cardinalul multimii B - m = "; cin>>m; cout<<"dati elementele multimii B \n"; for(i = 0; i < m; i++) { cout<<"b["<<i+1<<"] = "; cin>>b[i]; // copiem elementele din multimea A in multimea C for(i = 0; i < n; i++) c[i]=a[i]; k = n; 07.11.2016 Programarea calculatoarelor 51

Probleme rezolvate tablouri unidimensionale for(j = 0; j < m; j++) { ok = 1; // variabila care verifica daca un element apartine sau un multimii A for(i = 0; i <n ;i++) if(b[j] == a[i]) // daca elementul din multimea B apartine si multimii A atunci nu-l adaugam in multimea reuniune - C ok = 0; if(ok == 1) { k++; c[k] = b[j]; 07.11.2016 Programarea calculatoarelor 52

Probleme rezolvate tablouri unidimensionale cout<<"\nelementele multimii reuniune sunt : \n"; for(i = 0; i < k; i++) { cout.width(9); cout<<c[i]; 07.11.2016 Programarea calculatoarelor 53

Probleme rezolvate tablouri unidimensionale Executia programului pe o serie de date de test: 07.11.2016 Programarea calculatoarelor 54

Probleme propuse spre rezolvate tablouri unidimensionale 1. Intersectia a doua multimi Sa se scrie un program care sa calculeze intersectia a doua multimi de cate n, respectiv m numere intregi memorate cu ajutorul vectorilor. Exemplu: Date de intrare: n = 5 a = {1, 2, 5, 7, 12 si m = 4 b = {2, 4, 8, 12 Date de iesire: se obtine: k = 2 d = {2, 12 07.11.2016 Programarea calculatoarelor 55

Probleme propuse spre rezolvate tablouri unidimensionale 2. Diferența a două mulțimi Sa se scrie un program care sa calculeze diferenta a doua multimi de cate n, respectiv m numere intregi memorate cu ajutorul vectorilor. Exemplu: Date de intrare: n = 5 a = {1, 2, 5, 7, 12 si m = 4 b = {2, 4, 8, 12 Date de iesire: se obtine: k = 3 e = {1, 5, 7 07.11.2016 Programarea calculatoarelor 56

Probleme propuse spre rezolvate tablouri unidimensionale 3. Se dă un şir de n numere naturale. Să se afişeze pe două randuri, pe primul rand cele pare şi pe al doilea cele impare. Exemplu: Date de intrare: Pentru n = 10 si elementele 4 3 2 5 6 8 9 0 1 5 Date de iesire: 4 2 6 8 0 3 5 9 1 5 07.11.2016 Programarea calculatoarelor 57

Probleme propuse spre rezolvate tablouri unidimensionale 4. Sa se scrie un program care sa introducă n numere intr-un vector şi să citeasccă un număr d. Să se afişeze acele numere din şirul dat care sunt divizibile cu d. Exemplu: Date de intrare: n=5 si valorile: 5 7 10 23 15, d=5 Date de iesire: 5 10 15 07.11.2016 Programarea calculatoarelor 58

Probleme propuse spre rezolvate tablouri unidimensionale 5. Se introduc temperaturile măsurate in n zile. Să se scrie un program care să afişeze media temperaturilor negative şi media celor pozitive. Exemplu: Date de intrare: n = 5 si temperaturile: 23 24 23 25 22 Date de iesire: 23.40 07.11.2016 Programarea calculatoarelor 59

copyright@www.adrian.runceanu.ro Referinte bibliografice Bibliografia necesară cursului: 1. Adrian Runceanu, Mihaela Runceanu, Noțiuni de programare în limbajul C++, Academica Brâncuşi, Târgu-Jiu, 2012, ISBN 978-973-144-550-2, 483 pagini 2. Adrian Runceanu, Programarea şi utilizarea calculatoarelor, Editura Academică Brâncuși Targu-Jiu, 2003 3. Octavian Dogaru, C++ - Teorie şi practică, volumul I, Editura Mirton, Timişoara, 2004 4. O.Catrina, I.Cojocaru, Turbo C+, Editura Teora, Bucureşti, 1993 5. D.Costea, Iniţiere în limbajul C, Editura Teora, Bucureşti, 1996 6. K.Jamsa, C++, Editura Teora,1999 7. K.Jamsa & L.Klander, Totul despre C si C++, Teora, 2004 07.11.2016 Programarea Calculatoarelor - curs 60

Întrebări? 07.11.2016 Programarea calculatoarelor 61