Documente Academic
Documente Profesional
Documente Cultură
1. Instructiuni conditionate
a) simple
i) cu o situatie (IF)
ii) cu dubla situatie (IF..ELSE)
b) multiple
i) doar cu situatii favorabile: (SWITCH..CASE)
ii) si cu situatie defavorabila: (SWITCH..CASE..DEFAULT)
2. Instructiuni repetitive
a) cu un numar cunoscut de pasi: (FOR)
b) conditionate
i) cu conditie anterioara: (WHILE)
ii) cu conditie poserioara: (DO..WHILE)
3. Instructiuni de salt: RETURN, GOTO, BREAK, EXIT
Instrucţiunea if
a) Cu o situaţie:
if (expresie) instrucţiune
#include<iostream>
using namespace std;
void main()
{
int a, b, c;
cout << "Citim coeficientii: ";
cin >> a >> b >> c;
float d, x1, x2;
if (!a) //a==0
if (!b)
if (!c)
cout << "Ecuatie nedeterminata (infinita)\n";
else
cout << "Ecuatie imposibila\n";
else
{
x1 = -c / (float)b;
cout << "Ecuatie de gr. I. Solutie: " << x1 << '\n';
}
else
{
d = b * b - 4 * a*c;
if (d < 0)
cout << "Ecuatie de gr. II. Solutii din multimea nr. complexe\n";
else
{
if (!d)
{
x1 = -b / (2. * a);
cout << "Ecuatie de gr. II. Solutie unica: " << x1 << '\n';
}
else
{
x1 = (-b - sqrt(d)) / (2 * a);
x2 = (-b + sqrt(d)) / (2 * a);
cout << "Ecuatie de gr. II. Solutii: " << x1 <<' '<<x2 << '\
n';
}
}
}
}
2. Instructiuni conditionate multiple
Instrucţiunea switch
Instrucţiunea switch are forma generală:
switch (expresie)
{
F F
caz1 cazn instrucţiunen+1
T T
instrucţiune1 instrucţiunen
Aplicația 2. Operatii pe numere intregi. Se citesc doua numere intregi. In functie de operatia
aleasa, se vor executa diverse operatii pe acestea (adunare, diferenta, inmultire si
impartire).
#include<iostream>
using namespace std;
int main()
{
int a, b;
cout << "Dati cele doua numere: ";
cin >> a >> b;
float r; //rezultatul fiecarei operatii
char c; //alegerea operatiei
switch (c)
{
case '1': r = a + b; break;
case '2': r = a - b; break;
case '3': r = a * b; break;
case '4': r = a / (float)b; break;
default: cout << "Optiunea aleasa nu corespunde\n";
};
return 0;
}
3. Instructiuni de salt
Instrucțiuni de salt: RETURN, BREAK, EXIT, GOTO.
Aplicația 3. Se va modifica aplicația cu ecuația de gradul al doilea, astfel încât se va permite
utilizatorului reluarea operațiunii, pentru execuții multiple (instructiunea de salt goto).
#include<iostream>
using namespace std;
void main()
{
int a, b, c;
float d, x1, x2;
ecuatia2:
{
cout << "Citim coeficientii: ";
cin >> a >> b >> c;
if (!a) //a==0
if (!b)
if (!c)
cout << "Ecuatie nedeterminata (infinita)\n";
else
cout << "Ecuatie imposibila\n";
else
{
x1 = -c / (float)b;
cout << "Ecuatie de gr. I. Solutie: " << x1 << '\n';
}
else
{
d = b * b - 4 * a*c;
if (d < 0)
cout << "Ecuatie de gr. II. Solutii din multimea nr.
complexe\n";
else
{
if (!d)
{
x1 = -b / (2. * a);
cout << "Ecuatie de gr. II. Solutie unica: " << x1
<< '\n';
}
else
{
x1 = (-b - sqrt(d)) / (2 * a);
x2 = (-b + sqrt(d)) / (2 * a);
cout << "Ecuatie de gr. II. Solutii: " << x1 << ' '
<< x2 << '\n';
}
}
}
};
char k;
cout << "\nDoriti sa repetati? (D - da, N - nu): ";
cin >> k;
if (k == 'd' or k == 'D') //'or' se mai scrie '||'
{
system("cls");
goto ecuatia2;
}
}
int main()
{
int a, b, c;
cout << "Citim numerele: ";
cin >> a >> b >> c;
int m, M;
m = M = a;
int i = b;
int ok = 1;
min_max: {
if (i < m)
m = i;
else
if (i > M)
M = i;
};
i = c;
if (ok == 1) //vrem ca intrarea in eticheta sa se mai faca doar o singura data
{
ok = 0;
goto min_max;
}
int main()
{
int a, b, c;
cout << "a= ";
cin >> a;
cout << "b= ";
cin >> b;
cout << "c= ";
cin >> c;
if (2 * b == a + c)
cout << "Numere in progresie aritmetica\n";
else
if (2 * c == a + b)
cout << "Numere in progresie aritmetica\n";
else
if (2 * a == b + c)
cout << "Numere in progresie aritmetica\n";
else
cout << "Numerele nu sunt in progresie aritmetica\n";
system("pause");
return 0;
}
7. Se citesc 3 numere a, b și c. Aflati daca aceste numere pot fi laturile unui triunghi, de ce
tip e el. Se va transmite și aria calculată (formule diferite pentru triunghiul dreptunghic,
pentru cel echilateral, respectiv, pentru cel isoscel/oarecare).
#include<iostream>
using namespace std;
int main()
{
int a, b, c;
float S;
if (a > 0 and b > 0 and c > 0 and a + b > c and a + c > b and b + c > a)
if ((a * a == b * b + c * c) or (b * b == a * a + c * c) or (c * c == a
* a + b * b))
{
if (a == b or a == c or b == c)
cout << "Triunghi dreptunghic isoscel\n";
else
cout << "Triunghi dreptunghic oarecare\n";
int c1, c2;
if (a <= b)
{
c1 = a;
c2 = b;
}
else
{
c1 = b;
c2 = a;
}
if (c < c2)
c2 = c;
S = c1 * c2 / 2;
}
else
if (a == b and b == c)
{
cout << "Triunghi echilateral\n";
S = a * a * sqrt(3) / 4;
}
else
{
if (a == b or b == c or a == c)
cout<<"Triunghi isoscel\n";
else
cout<<"Triunghi oarecare\n";
int p;
p = (a + b + c) / 2;
S = sqrt(p*(p - a)*(p - b)*(p - c));
}
cout << "Aria triunghiului: " << S << '\n';
return 0;
}
8. Se citesc trei numere reale. Sa se calculeze minimul si maximul valorilor lor absolute.
9. Se introduc de la tastatura n, a, b, c. Să se calculeze valoarea lui e definit astfel:
|(a+b)/c, ptr. n=1
e= |(b+c)/a, ptr. n=2
|(c+a)/b, ptr. n=3
Se cere atât varianta folosind instrucțiuni alternative simple, cât și multiple.
//Varianta A. Folosind IF
#include<iostream>
using namespace std;
int main()
{
int a, b, c, n;
float e;
cout << "a= ";
cin >> a;
cout << "b= ";
cin >> b;
cout << "c= ";
cin >> c;
cout << "n= ";
cin >> n;
if (n == 1)
e = (a + b) / (float)c;
else
if (n == 2)
e = (b + c) / (float)a;
else
if (n == 3)
e = (c + a) / (float)b;
else
cout << "Optiunea aleasa este invalida\n";
if (n == 1 || n == 2 || n == 3)
cout << "Optiunea aleasa este " << e << '\n';
system("pause");
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int a, b, c, n;
float e;
cout << "a= ";
cin >> a;
cout << "b= ";
cin >> b;
cout << "c= ";
cin >> c;
cout << "n= ";
cin >> n;
switch (n)
{
case 1: e = (a + b) / (float)c; break;
case 2: e = (b + c) / (float)a; break;
case 3: e = (a + c) / (float)b; break;
default: cout << "Optiunea aleasa este invalida\n";
};
if (n == 1 || n == 2 || n == 3)
cout << "Optiunea aleasa este " << e << '\n';
system("pause");
return 0;
}
10. Se citeste o literă de la tastatură. Să se determine dacă este vocală sau consoană.
#include<iostream>
using namespace std;
int main()
{
char k;
cout << "Introduceti un caracter de la tastatura: ";
cin >> k;
int ok = 0; //pornim de la premiza ca nu este o vocala/consoana introdusa
switch (k)
{
case 'a':
case 'A':
case 'e':
case 'E':
case 'i':
case 'I':
case 'o':
case 'O':
case 'u':
case 'U': ok = 1; break;
default:
if ((k >= 'b' and k <= 'z') || (k >= 'B' and k <= 'Z')) //'and' este
'&&'
ok = 2;
}
if (ok == 1)
cout << "Caracterul citit este vocala\n";
else
if (ok == 2)
cout << "Caracterul citit este consoana\n";
else
cout << "Caracterul citit este orice alt semn\n";
system("pause");
return (0);
}
11. Se dau trei numere natural a,b,x. Să se scrie un algoritm care verifica daca numarul
apartine intervalului [a,b]. Dacă condiția este indeplinita se va return 1, altfel 0.
#include<iostream>
using namespace std;
int main()
{
int a, b, x;
cin >> a >> b >> x;
if (a == b)
{
cout << "Nu exista interval\n";
system("pause");
return 1;
}
if (a > b)
//varianta 1
{
a = a + b;
b = a - b;
a = a - b;
}
/*
//varianta 2
{
int c;
c = a;
a = b;
b = c;
}
//varianta 3
swap(a, b);
*/
if (x >= a or x <= b) //'or' poate fi scris si '||'
cout << x << " apartine ["<<a<<','<<b<<"]\n";
else
cout << x << " nu apartine [" << a << ',' << b << "]\n";
system("pause");
return 0;
}