Sunteți pe pagina 1din 7

CENTRUL DE PREGĂTIRE PENTRU PERFORMANȚĂ HAI LA OLIMPIADĂ!

DISCIPLINA INFORMATICĂ
JUDEȚUL SUCEAVA

Titlul lecției: Tablouri unidimensionale de memorie


Data: 12.12.2020
Profesor: Raluca Costineanu
Grupa: clasa a IX-a
Locul de desfășurare: online

Cuprins
Definirea și declararea tablourilor unidimensionale de memorie ............................................................................... 2
Prelucrarea tablourilor unidimensionale ..................................................................................................................... 3
Probleme propuse ........................................................................................................................................................ 5
#633 Paritate1 .......................................................................................................................................................... 5
#546 Afisare0 ............................................................................................................................................................ 5
#488 Afisare .............................................................................................................................................................. 6
#489 Afisare1 ............................................................................................................................................................ 6
#553 PozMinMax ...................................................................................................................................................... 6

1|Page
Definirea și declararea tablourilor unidimensionale de memorie
Un tablou de memorie este o colecţie de date de acelaşi tip, memorate într-o zonă de memorie continuă,
și identificate printr-un nume comun.

Declararea unei variabile de tip tablou se face prin:

tip_dată nume_tablou[nr_maxim_de_elemente];

de exemplu:

int a[20]; //tablou cu maximum 20 de elemente de tip int

double b[10]; //tablou cu maximum 10 componente de tip double

char s[5]; //tablou cu maximum 5 elemente de tip char

Observaţie: nr_elemente este o constantă întreagă ce specifică numărul de elemente ale vectorului.
Precizarea valorii sale se poate face şi printr-o constantă simbolică, de exemplu:

const int DIM=100;

int a[DIM];

Accesul la un element al tabloului se poate face pe baza indicelui (poziției) acelui element (indexarea
începe întotdeauna de la 0).

De exemplu, elementele tabloului s declarat mai sus, sunt s[0], s[1], s[2], s[3], s[4].

Un astfel de tablou, pentru care la declarare este specificată o singură dimensiune, iar poziţia unui element
este specificată utilizând un singur indice, se numeşte tablou unidimensional sau vector.

La declararea unui tablou putem atribui și o listă de valori elementelor vectorului. De exemplu, în urma
declarării:
index 0 1 2 3 4
int a[5]={10,20,30,40,50}, tabloul a va conține:
tablou 10 20 30 40 50

Observație:

În cazul în care la o astfel de inițializare nu este specificată o listă completă de valori, elementele care
ramân fără valoare inițială vor fi inițializate implicit cu 0. De exemplu:

int a[50]={10,20,30,40,50} =>


index 0 1 2 3 4 5 6 . . . 48 49
tablou 10 20 30 40 50 0 0 0 0 0 0 0
!!!Putem folosi deci o declarare de tipul acesta pentru a obține un vector a cărui componente sunt
inițializate cu 0.

Adesea în practică nu utilizăm toate componentele pe care le-am specificat în momentul declarării. De
aceea tabloul este însoțit, pe lângă dimensiunea lui fizică (numarul maxim de componente specificat în
momentul declarării) și de numărul lui efectiv de elemente, adesea notat cu n.

Pentru a utiliza în mod eficient memoria am putea declara tabloul abia după ce cunoaștem numărul efectiv
de elemente cu care urmează să lucrăm. De exemplu:

int n; cin>>n; int a[n];

2|Page
Prelucrarea tablourilor unidimensionale
Orice prelucrarea asupra unui tablou de memorie, presupune prelucrarea fiecărei componente în parte. De
aceea majoritate prelucrărilor necesită o parcurgere a elementelor din vector, pentru a putea accesa
fiecare componentă. Ordinea în care dorim să prelucrăm elementele impune și ordinea în care trebuie
făcută parcurgerea
a) În ordine de la prima la ultima componentă
for(i=0; i<n; i++)
//prelucreaza a[i]
b) În ordine de la ultima la prima componentă
for(i=n-1; i>=0; i--)
//prelucreaza a[i]
c) În perechi egal depărtate de mijloc
for(i=0, j=n-1; i < j; i++, j--)
//prelucreaza a[i], a[j]
!În cazul în care numărul de elemente este impar e posibil să fie necesară prelucrarea separată a
elementului din mijloc.

Citirea și afișarea unui tablou unidimensional:


Declararea și citirea vectorului Afișarea vectorului
int n, i;
cin>>n; for(i=0; i<n; i++)
int a[n]; cout<<a[i]<<' ';
for(i=0; i<n; i++) cout<<'\n';
cin>>a[i];

Aplicații:
Afișarea elementelor pare situate pe Afișarea elementelor multiplu de 5,
poziții impare în ordine de la ultimul spre primul
#include <iostream> #include <iostream>
using namespace std; int using namespace std; int
main() main()
{ {
int n, i; int n, i;
cin>>n; cin>>n;
int a[n]; int a[n];
for(i=0; i<n; i++) for(i=0; i<n; i++)
cin>>a[i]; cin>>a[i];
for(i=1; i<n; i+=2) for(i=n-1; i>=0; i--)
if(a[i]%2==0) if(a[i]%5==0)
cout<<a[i]<<' '; cout<<a[i]<<' ';
return 0; return 0;
} }
Determinarea elementului minim Determinarea elementului minim și a
poziției primei apariții

3|Page
int main() int main()
{ {
int n, i; int n, i;
cin>>n; cin>>n;
int a[n]; int a[n];
for(i=0; i<n; i++) for(i=0; i<n; i++)
cin>>a[i]; cin>>a[i];
int minim=a[0]; int minim=a[0], poz=0;
for(i=1; i<n; i++) for(i=1; i<n; i++)
if(minim>a[i]) if(minim>a[i])
minim=a[i]; minim=a[i],poz=i;
cout<<minim; cout<<minim<<" "<<poz;
return 0; return 0;
} }
Determinarea elementului minim și a Determinarea celor mai mici 3
numărului de apariții al acestuia elemente
#include <iostream> int mn1,mn2, mn3;
using namespace std; mn1=mn2=mn3=2000000000;
int main() for(i=1; i<n; i++)
{ if(a[i]<mn1)
int n, i; mn3=mn2, mn2=mn1, mn1=a[i];
cin>>n; else if(a[i]<mn2)
int a[n]; mn3=mn2, mn2=a[i];
for(i=0; i<n; i++) else if(a[i]<mn3)
cin>>a[i]; mn3=a[i];
int minim=a[0], nrap=1; cout<<mn1<<" "<<mn2<<" "<<mn3;
for(i=1; i<n; i++)
if(minim>a[i])
minim=a[i],nrap=1;
else if(minim==a[i])
nrap++;
cout<<minim<<" "<<nrap;
return 0;
}
Suma elementelor prime din șir Numărul elementelor palindrom din șir

4|Page
#include <iostream> #include <iostream>
using namespace std; using namespace std;
bool prim(int n) int oglindit(int n)
{ {
if(n<2) int og=0;
return false; while(n)
for(int i=2; i*i<=n; i++) og=og*10+n%10, n/=10;
if(n%i==0) return og;
return false; }
return true; int main()
} {
int main() int n, i, cate=0;
{ cin>>n;
int n, i, suma=0; int a[n];
cin>>n; for(i=0; i<n; i++)
int a[n]; cin>>a[i];
for(i=0; i<n; i++) for(i=0; i<n; i++)
cin>>a[i]; if(a[i]==oglindit(a[i]))
for(i=0; i<n; i++) cate++;
if(prim(a[i])) cout<<cate;
suma+=a[i]; return 0;
cout<<suma; }
return 0;
}

Probleme propuse
De pe platforma https://www.pbinfo.ro/

#633 Paritate1
Cerința
Se dă un șir cu n elemente, numere naturale. Determinați diferența în valoare absolută dintre numărul de valori
pare din șir și numărul de valori impare din șir.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele șirului.
Date de ieșire
Programul va afișa pe ecran numărul C, reprezentând valoarea cerută.
Restricții și precizări
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 1.000.000.000
Exemplu
Intrare
5
15 245 28 33 11
Ieșire
3
Explicație
Sunt 4 numere impare și un număr par în șir, deci diferența este 3.
#546 Afisare0
Cerinţa
Se citește un vector cu n elemente, numere naturale. Să se afișeze elementele din vector care sunt multipli ai
ultimului element.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele vectorului.
Date de ieşire

5|Page
Programul afișează pe ecran elementele cerute, separate prin exact un spațiu, în ordinea din vector.
Restricţii şi precizări
1 ≤ n ≤ 1000
elementele vectorului vor fi mai mici decât 1.000.000
ultimul element al vectorului este nenul
Exemplu
Intrare
5
7 4 9 6 2
Ieșire
4 6 2
#488 Afisare
Cerinţa
Se citește un vector cu n elemente, numere naturale. Să se afișeze elementele cu indici pari în ordinea
crescătoare a indicilor, iar elementele cu indici impari în ordinea descrescătoare a indicilor.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele vectorului.
Date de ieşire
Programul afișează pe prima linie a ecranului elementele cu indici pari, în ordinea crescătoare a indicilor, separate
prin exact un spațiu, iar e linia următoare elementele cu indici impari, în ordinea descrescătoare a indicilor,
separate prin exact un spațiu.
Restricţii şi precizări
1 ≤ n ≤ 1000
elementele vectorului vor fi mai mici decât 1000
numerotarea indicilor începe de la 1
Exemplu
Intrare
5
7 9 2 6 8
Ieșire
9 6
8 2 7
#489 Afisare1
Cerinţa
Se citește un vector cu n elemente, numere naturale. Să se afișeze elementele vectorului în următoarea ordine:
primul, ultimul, al doilea, penultimul, etc.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele vectorului.
Date de ieşire
Programul afișează pe ecran, separate prin exact un spațiu, elementele vectorului, în ordinea cerută.
Restricţii şi precizări
1 ≤ n ≤ 1000
elementele vectorului vor fi mai mici decât 1000
Exemplu
Intrare
5
2 9 1 5 8
Ieșire
2 8 9 5 1
#553 PozMinMax
Se citește n, apoi n numere naturale distincte, reprezentând elementele unui vector.
Cerinţa
Calculaţi indicele imin și indicele imax ai elementului cu valoarea minimă, respectiv cu valoarea maximă, din
vectorul dat.
Date de intrare
Programul citește de numărul n, apoi încă n numere naturale, reprezentând elementele vectorului.

6|Page
Date de ieşire
Programul va afișa pe ecran cele două numere imin şi imax, separate printr-un singur spaţiu.
Restricţii şi precizări
1 ≤ n ≤ 1000
elementele vectorului vor fi mai mici decât 1.000.000 și vor fi indexate de la 1 la n
Exemplu
Intrare
5
8 7 9 2 5
Ieșire
4 3
Explicație
Vectorul conține 5 elemente. Valoarea maxima este 9, cu indicele 3, iar valoarea minimă este 2, cu indicele 4.

7|Page

S-ar putea să vă placă și