Documente Academic
Documente Profesional
Documente Cultură
#include <iostream>
using namespace std;
int main()
{ int v[100], n, i;
cout<<"n="; cin>>n; //se introduce numarul de elemente din sir
for (i=0; i<=n-1; i++) //se introduc elementele sirului
cin>>v[i];
for (i=0; i<=n-1; i++) //se parcurge sirul de la stanga la dreapta
if (v[i]%3==0) //se verifica indeplinirea conditiei de catre elementul i
cout<<v[i]<<' '; //se afiseaza elementul care indeplineste conditia
return 0;
}
Exemple:
Intrare: n=5 3 20 9 450 25 Ieșire: 20 450
Intrare: n=4 3 25 9 45 15 Ieșire: “Nu sunt elemente”
Problema 2. Afișați poziția (indexul) tuturor elementelor pare, divizibile cu
5 ale unui șir de n numere întregi, unde 1 ≤ n ≤ 100. Dacă nu este niciun element
par și divizibil cu 5, atunci se afișează mesajul “Nu sunt elemente”.
Exemple:
Intrare: n=5 3 20 9 450 25 Ieșire: 1 3
Intrare: n=4 3 25 9 45 15 Ieșire: “Nu sunt elemente”
Ex
Verificarea unor proprietăți ale elementelor
unui șir de valori
B. Maximul unui șir de numere
Aflați maximul dintr-un șir de n numere naturale pozitive, introduse de la
tastatură, mai mici decât 1 000 000, unde 1 ≤ n ≤ 20.
Exemplu: Intrare: n=5 21 54 3 23 5 Ieșire: Maximul=54
Indicații: În cadrul acestui exercițiu trebuie să afișăm o singură valoare,
valoarea maximă a elementelor șirului. Este un caz particular al afișării
elementelor care îndeplinesc condiția dată, și anume valoarea elementului să
fie cea mai mare a șirului.
Algoritmul pentru afișarea maximului unui șir de numere este următorul:
Se consideră o variabilă pe care o numim max, care va conține la fiecare pas
valoarea maximă a elementelor
șirului analizate până la acel moment, variabilă de ieșire.
1. Se citesc elementele șirului.
2. Se parcurge șirul și se verifică pentru fiecare element în parte dacă valoarea
acestuia este mai mare decât valoarea variabilei max (aceasta reprezintă
maximul depistat până la acel moment). Dacă da, atunci noul maxim este chiar
elementul analizat și, astfel, max primește valoarea sa.
3. Se afișează valoarea variabilei max care conține maximul șirului.
Observație: Variabila max se inițializează cu o valoarea unui elementul din șir
Algoritmul pentru determinarea minimului unui șir de numere este similar.
Diferă variabila de ieșire, care de această dată va reține minimul (numită min)
și condiția verificată pentru fiecare element (dacă valoarea elementului este mai
mică decât valoarea variabilei min, atunci noul minim este chiar elementul
respectiv).
Vom stoca șirul de numere într-o variabilă v de tip tablou unidimensional cu
20 de elemente, 20 fiind valoarea maximă pe care o poate lua n (1 ≤ n ≤ 20).
Se aplică algoritmul de mai sus pentru calcularea maximului.
#include <iostream>
using namespace std;
int main()
{ int v[20], n, i, max;
cout<<"n="; cin>>n; //se citeste numarul de elemente ale sirului
for (i=0; i<=n-1; i++) //se citesc elementele sirului
cin>>v[i];
max= v[0];
for (i=1; i<=n-1; i++) //se parcurge sirul
if (max<v[i]) //se verifica pentru fiecare element daca este mai
mare
max=v[i]; //daca da, maximul devine chiar elementul
cout<<"Maximul="<<max; //se afiseaza maximul
return 0;
}
Problema 3. Aflați maximul dintr-un șir de n numere naturale pozitive,
introduse de la tastatură, mai mici decât 1 000 000, unde 1 ≤ n ≤ 20.
Exemplu: Intrare: n=5 21 54 3 23 5 Ieșire: Maximul=54
Verificarea unor proprietăți ale elementelor
unui șir de valori
C. Înlocuirea unor termeni ai unui șir de valori
Înlocuiți elementele unui șir care au valoarea 7 cu valoarea 0. Șirul are n
numere întregi, unde 1 ≤ n ≤ 100.
Indicații:
În cadrul acestui exercițiu, trebuie să verificăm existența, într-un șir de valori,
a unui termen care are o proprietate dată, și anume să fie egal cu 7. Dacă îl
găsim, îl înlocuim cu valoarea 0.
#include <iostream>
using namespace std;
int main()
{ int v[100], n, i;
cout<<"n="; cin>>n; //se citeste numarul de elemente ale sirului
for (i=0; i<=n-1; i++) //se citesc elementele sirului
cin>>v[i];
for (i=0; i<=n-1; i++) //se parcurge sirul de la stanga la dreapta
if (v[i]==7) //daca este indeplinita conditia (egalitatea cu 7)
v[i]=0; //se inlocuieste valoarea elementului cu 0
for (i=0; i<=n-1; i++) //se afiseaza sirul modificat
cout<<v[i]<< " ";
return 0;
}
Problema 2. Înlocuiți cu valoarea 100 elementele unui șir care sunt numere
naturale pare și divizibile cu 13. Șirul are n numere întregi, unde 1 ≤ n ≤ 100.
Tabele de adevăr
&& - și logic ¦¦ - sau logic ! – negație logică
a b a && b a b a ¦¦ b a !a
1 1 1 1 1 1 1 0
1 0 0 1 0 1 0 1
0 1 0 0 1 1
0 0 0 0 0 0
Structura alternativă
Instrucțiunea if este cea mai utilizată structură alternativă.
Structurile repetitive
Structurile repetitive, numite și cicluri sau bucle, au rolul
de a executa repetitiv o instrucțiune (sau un grup de instrucțiuni
– instrucțiune compusă) care formează corpul structurii
repetitive.
În limbajul C++ sunt următoarele structuri repetitive:
while – structură repetitivă cu număr necunoscut de pași și
test inițial
do while – structură repetitivă cu număr necunoscut de pași și
test final
for –structură repetitivă cu număr cunoscut de pași
while
Forma Modul de execuție
while(expresie) Pas 1: se evaluează expresie
{ Secvență Pas 2: ┌ dacă expresie e nenulă (adevărată)
instrucțiuni │ • Se execută Secvență instrucțiuni
} │ • Se reia de la Pas 1
└ altfel se termină (se iese) structura
repetitivă și se execută instrucțiunea
de după while
do while
Forma Modul de execuție
do Pas 1: se execută Secvență instrucțiuni
{ Secvență Pas 2: se evaluează expresie
instrucțiuni Pas 3: ┌ dacă expresie e nenulă (adevărată)
} │ Se reia de la Pas 1
while (expresie); └ altfel se termină (se iese) structura
repetitivă și se continuă cu
executarea instrucțiunii de după
while
for
Forma Modul de execuție
for (instr1; expresie; instr3) Pas 1: se execută instr1
Secvență instrucțiuni Pas 2: se evaluează expresie
Pas 3: ┌ dacă expresie e nenulă (adevărată)
│ • Se execută Secvența instrucțiuni
│ • Se execută instr3
│ • Se reia de la Pas 2
└ altfel expresie e nulă (falsă), se
termină (se iese) structura
repetitivă și se continuă
executarea instrucțiunii de după
for
Tablou unidimensional. Operații cu șiruri de valori:
citire, afişare, parcurgere
Un tablou unidimensional (numit de multe ori vector) este o mulțime de valori
(elemente) de același tip și care sunt ordonate în funcție de o poziție a lor în
cadrul acestuia, numită și indicele valorii respective. Fiecărui tablou
unidimensional i se atribuie un nume.
Numim dimensiune a unui tablou unidimensional numărul maxim de elemente
ale sale.
Indicii elementelor unui tablou unidimensional încep de la 0, iar indicele
ultimului element al tabloului are valoarea <Dimensiune> -1
Exemple:
- un tablou unidimensional cu 7 elemente are indicii de la 0 la 6;
Valoare
element 5 6 23 78 123 3 54
număr de
indice 0 1 2 3 4 5 6
Observație.
Un tablou unidimensional care are n elemente are indicii de la 0 la n-1.
Exemplu:
int a[56]; //declararea unui tablou unidimensional de 56 de numere întregi
float b[10]; //declararea unui tablou unidimensional de 10 numere reale
În cadrul unei declarații se pot inițializa elementele tabloului cu diferite
valori. Sintaxa este:
Tip_date nume[dimensiune]={val_0, …, val_n-1};
Exemplu:
int v[3]={3,2,4}; //declararea unui tablou cu 3 elemente numere întregi, toate
//elementele sunt inițializate cu valori
int b[]={5,6,7}; //dimensiunea tabloului nu este precizată, compilatorul o
//determină numărând elementele din lista de valori (în acest
// caz, dimensiunea este 3)
int c[4]={1,2}; //sunt inițializate primele două valori ale elementelor tabloului,
//celelalte elemente sunt inițializate cu 0
Exemple:
v[5] este elementul cu indicele 5 al tabloului cu numele v
v[i] este elementul cu indicele i al tabloului cu numele v
#include <iostream>
using namespace std;
int main()
{ int a[250], n, i; //definirea variabilelor
cout<<"n="; cin>>n; //introducerea numărului de elemente
for (i=0; i<=n-1; i++) //citirea secvențiala a elementelor tabloului
cin>>a[i];
for (i=0; i<=n-1; i++) //afișarea secvențiala a șirului pătratelor valorilor
cout<<a[i]*a[i]<<" ";
return 0;
}
Programul 3 în C++
Programul 4 în C++
#include <iostream>
using namespace std;
int main()
{ int v[100], n, i;
cout<<"n="; cin>>n;
for (i=0; i<=n-1; i++)
{ cout<<"v["<<i<<"]=" ;
cin>>v[i];
for (i=0; i<=n-1; i++)
if (v[i]%3==0) //condiția de afișare
cout<<v[i]<< " " ;
return 0;
}
Programul 5 în C++
Modificați Programul 4 astfel încât să afișeze toate numerele pare divizibile
cu 3 ale șirului.
În acest caz, condiția de afișare devine (v[i]%3==0 && v[i]%2==0).
Exemplu: Intrare: n=5 3 18 9 42 2 Ieșire: 18 42
Programul 6 în C++
Modificați Programul 4 astfel încât să se afișeze pozițiile elementelor
divizibile cu 3, nu elementele în sine.
Observați că, în acest caz, în loc să afișăm v[i], trebuie afișat doar i.
Exemplu: Intrare: n=5 3 17 9 42 2 Ieșire: 0 2 3