Documente Academic
Documente Profesional
Documente Cultură
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;
}
#include <iostream>
using namespace std;
int main()
{ int n, i, a[100] ;
cout << " n=" ; cin>>n ;
i=0 ;
while(i<n)
cout<<" a["<<i<<"]=" , cin>>a[i], i++ ;
cout<<endl<<endl ;
i=0 ;
while(i<n)
cout<<a[i]<<", " , i++ ;
return 0;
}
varianta a II-a
#include <iostream>
using namespace std;
int main()
{ int n, i, a[100] ;
cout << " n=" ; cin>>n ;
i=0 ;
do
cout<<" a["<<i<<"]=" , cin>>a[i], i++ ;
while(i<n) ;
cout<<endl<<endl ;
i=0 ;
do
cout<<a[i]<<", " , i++ ;
while(i<n);
return 0;
}
Problema 2. Scrieți un program care să citească un șir de
numere naturale pozitive până la introducerea lui 0 și apoi să
afișeze elementele acestuia, de la dreapta la stânga, din 2 în 2.
Șirul poate să aibă maximum 300 de numere.
Exemplu: Intrare: 5 2 7 3 1 0 Ieșire: 1 7 5
#include <iostream>
using namespace std;
int main()
{ int i, a[300] ;
i=0 ;
do
cout<<" a["<<i<<"]=" , cin>>a[i], i++ ;
while(a[i-1] != 0) ;
cout<<endl<<endl ;
i=i-2 ;
do
cout<<a[i]<<", " , i=i-2 ;
while(i>=0);
return 0;
}
#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țială a elementelor tabloului
{ cout<<"a["<<i<<"]=";
cin>>a[i];
}
for (i=n-1; i>=0; i--) //afișarea secvențială a elementelor tabloului
cout<<a[i]<<" ";
return 0;
}
#include <iostream>
using namespace std;
int main()
{ int a[100], n, i; //definirea variabilelor
cout<<"n="; cin>>n; //introducerea numărului de elemente
for (i=n-1; i>=0; i--) //citirea secvențiala a elementelor tabloului
{ cout<<"a["<<i<<"]=";
cin>>a[i];
}
for (i=n-1; i>=0; i=i-3) //afișarea secvențiala a elementelor tabloului
cout<<a[i]<<" ";
return 0;
}
Problema 5 Se citește un șir a de n numere întregi, unde
1 ≤ n ≤ 250. Afișați dublul valorilor elementelor șirului a.
Exemplu:
Intrare: n=5, 3 6 2 8 11 Ieșire: 6 12 4 16 22
#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
{ cout<<"a["<<i<<"]=";
cin>>a[i];
}
for (i=0; i<=n-1; i++) //afișarea secvențiala a șirului pătratelor valorilor
cout<<2*a[i]<<" ";
return 0;
}
Exersați