Documente Academic
Documente Profesional
Documente Cultură
Structura alternativă: în acest caz se va executa doar unul din două blocuri de instrucţiuni în
funcţie de valoarea de adevăr a unei expresii logice
Structura alternativă multiplă: în această situaţie se va executa un bloc de instrucţiuni din mai
multe variante posibile.
o conditie, transcrisă prin “am promovat la toate materiile”, conditie pe care o vom nota cu C;
o acţiune transcrisă prin mesajul “mă voi duce în tabără”, notata cu B1, acţiune asociata cu
cuvântul ATUNCI, adică se execută dacă şi numai dacă “am promovat la toate materiile”;
o acţiune transcrisă prin mesajul “stau să învăţ”, notată cu B2, acţiune asociată cu
cuvântul ALTFEL, adică se execută dacă şi numai dacă NU “am promovat la toate materiile”
Structura alternativă este implementată în limbajul C++ de instrucţiunea IF. În continuare vom
prezenta modul de reprezentare a acestei structuri în limbaj pseudocod, în schemă logică şi în
limbajul de programare C++. Modul de execuţie este identic pentru oricare din cele trei
reprezentări. Sintetizănd cu notaţiile de mai sus structura alternativă se poate reprezenta astfel:
Compilatorul va executa instrucțiunea if în felul următor:
- Evalueză condiția.
- Dacă condiția este adevărată atunci execută instrucțiune1.
- Dacă ramura else există și condiția nu este adevărată se va executa instrucțiune2.
- Se trece la următoarea instrucțiune după if.
De exemplu, dacă dorim să verificăm dacă un număr a este nul vom folosi instrucțiunea if in felul următor:
2. Să se verifice dacă un număr aparţine intervalului [a,b]. a şi b sunt numere reale citite de la
tastatură. #include<iostream> using namespace
std;
int main()
{ float a,b,n;
//citim datele de intrare: a,b si numarul dat
cout<<"a=";cin>>a; cout<<"b=";cin>>b;
cout<<"n=";cin>>n;
//verificam daca numarul n apartine intervalului [a,b] if(n>=a
and n<=b)cout<<n<<" apartine intervalului [a,b]"; else
cout<<n<<" nu apartine intervalului [a,b]"; return 0;
}
6. Se citesc de la tastatura 3 numere reale. Să se verifice dacă pot forma laturile unui triunghi.
#include<iostream> using namespace std;
int main() {float a,b,c;
//citim cele 3 date de intrare cout<<"a="; cin>>a;
cout<<"b=";cin>>b; cout<<"c=";cin>>c;
//verificam daca cele 3 numere pot forma laturile unui
triunghi
if(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a)
if(a==b&&b==c)cout<<"triunghi echilateral"; else
if(a==b || b==c || c==a) cout<<"triunghi isoscel";
else cout<<"triunghi oarecare"; else
cout<<"cele 3 numere nu pot forma laturile unui triunghi"; return 0;
}
7. Să se scrie un program care să rezolve ecuaţia de gradul I: ax+b=0, valorile lui a şi b se citesc
de la tastatură şi sunt valori reale. Se vor lua în discuţie toate cazurile.
Rezolvare:
Algoritm în Program în codebloks Rezultat afişat
pseudocod
# include<iostream>
using namespace std;
int main()
reale a,b { float a,b,x;
citeste a cout<<"a="; cin>>a;
citeste b cout<<"b="; cin>>b;
daca a=0 atunci if(a==0)
| daca b=0 if(b==0)
atunci cout<<"Exista o infinitate de solutii!";
| | scrie else
”Infinitate sol.” cout<<"Ecuatie imposibila!";
| |altfel else
| | scrie { x=-b/a;
”Imposibil” cout<<"Solutia ecuatiei este "<<x;
| |_▄ }
|altfel return 0;
| x=-b/a }
| scrie x
|_▄
8. Sa se scrie un program care sa rezolve ecuatia de grad II: ax2+bx+c=0, unde a, b, c apartin lui R.
9. Să se determine valoarea maxima dintre trei numere memorate în variabilele a, b şi c.
Tinând cont de exemplul anterior o modalitate simplă de rezolvare ar consta în compararea două câte
două valorile variabilelor a, b, şi c. Se compară, spre exemplu, prima dată valoarea variabilei a cu
valoarea variabilei b şi presupunem că relaţia a>b este adevărată. Dacă menţinem adevărată această
presupunere, atunci valoarea maximă obţinută până acum este a. Mai rămâne să comparăm valoarea
variabilei c faţă de valoarea a. În această situaţie există două cazuri şi anume:
rezultă că valoarea variabilei c este mai mare decât valoarea variabilei a, deci valoarea maximă dintre
cele trei numere este valoarea lui c;
Cazul 2: reprezentat în următorul desen:
când valoarea variabilei c este mai mică decât valoarea variabilei a (nu contează în acest moment
raportul dintre variabilele b şi c), deci rezultă că valoarea maximă dintre cele trei numere este
valoarea lui a.
Teme propuse:
1. Se citesc de la tastatură două numere. Care este valoarea celui mai mic? De exemplu dacă a=5 și b=7 se
va afișa 5.
2. Se introduc vârstele a trei copii. Care este vârsta celui mai mare și care este diferența de vârstă dintre cel
mai mare și cel mai mic. De exemplu v1=5, v2=8, v3=3 se va afișa vârsta cea mai mare este 8 și diferența
de vârtă este 5.
3. Se introduc punctajele obținute de doi sportivi. Afișați-le în ordine descrescătoare. De exemplu dacă se
introduc p1=4 și p2=10 se afișează 10 4.
4. Se introduc de la tastatură mediile a 3 elevi. Afișați mediile în ordine crescătoare. De exemplu dacă se
introduc m1=8.60, m2=6.90 și m3=5.90 se va afișa 5.90 6.90 8.60.
5. Se citesc de la tastatură patru numere. Să se dubleze valoarea celui mai mare și să se tripleze valoarea
celui mai mic. De exemplu a=4 b=6 c=2 d=3 se va afișa 4 12 6 3.
6. Se introduc de la tastatură două numere. Să se verifice dacă cele două numere sunt consecutive.
7. Se citesc de la tastatură două numere naturale reprezentând lungimile razelor a două cercuri și un număr
d reprezentând distanța între cele două cercuri. Care este pozitia celor două cercuri unul față de altul:
tangente, inersectate, disjuncte?
8. Se citesc coordonatele a două puncte din spațiu. Care este distanța dintre ele?
9. Se citesc de la tastatură coordonatele a 3 puncte din spațiu. Ce fel de triunghi formează?
10. Să se rezolve ecuația de gradul I ax+b=0 dacă se citesc de la tastatură valorile lui a și b.
11. Să se rezolve ecuația de gradul II ax2+bx+c=0 dacă se citesc de la tastatură valorile pentru a, b și c.
12. Să se afișeze |ax+b| dacă se cunosc valorile pentru a,b și x.
13. Să se verifice dacă toate cele 3 numere citite de la tastatură sunt numere pare.
14. Se citesc de la tastatură 2 numere cu cel mult 4 cifre. Care dintre ele are suma cifrelor mai mare? 17. Se
citește de la tastatură un număr cu trei cifre. Să se afișeze cifrele numărului în ordine crescătoare.
18. Se citesc de la tastatură două numere. Care este valoarea expresiei: ab/(a-b) ?
19. Se citesc de la tastatură valorile a trei numere reale. Să se verifice dacă pot forma laturile unui triunghi iar
în caz afirmativ să se afișeze aria și perimetrul triunghiului.
Citeste expresie;
switch (expresie)
{
case valoare1:
i1; break;
case valoare2:
i2; break;
case valoare3:
i3; break;
default :
instructiune pentru cazul diferit de cele 3 cazuri;
}
Ex: Se citeste un numar ce reprezinta o zi din saptamana. Ce program saptamanal are Gigel?
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"tastati una din cifre"<<endl;
cout<<"1-suma; 2-produs; 3-diferenta; 4-cat"<<endl;
cin>>selector ;
switch (selector)
{ case 1: cout<<"suma="<<a+b; break;
case 2: cout<<"produs="<<a*b; break;
case 3: cout<<"diferenta="<<a-b; break;
case 4: cout<<"cat="<<a/b; break;
default: cout<<"ati tastat o optiune inexistenta";
}
}