Documente Academic
Documente Profesional
Documente Cultură
Se remarcă aici trei cuvinte ce au un rol deosebit: DACĂ, ATUNCI, ALTFEL. 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:
Pot exista şi cazuri particulare de utilizare a acestei structuri, atunci cand unul dintre cele doua blocuri
de instrucţiuni lipseste.
Pot exista şi situaţii în care structurile alternative sunt incluse unele in altele. In acest caz
spunem ca instrucţiunilie if sunt imbricate. Exista o regula de asociere a cuvântului else de if:
„În situația instrucțiunilor if imbricate, și atunci când, pentru gruparea instrucţiunilor nu se folosesc
acolade cuvântul else se asociază primului cuvant if aflat la stânga lui.(asemănător cu asocierea închiderii
corecte a grupurilor de paranteze de la matematică).”
În exemplul următor este sugerat cum sunt imbricate trei instructiuni if. Pentru a le putea
identifica ușor ele sunt scrise cu culoari diferite (verde, albasru, portocaliu).
if(c1)
if(c2) Instrucțiunea principală
if(c3)
instrucțiune1;
else Se execută atunci doar când c1 este adevărată
instructiune2;
else Se execută atunci când c1 și c2 sunt adevărate
instrucțiune3;
else
instrucțiunea4;
if(c1)
if(c2) Instrucțiunea principală
{if(c3)
instrucțiune1;}
else Se execută atunci doar când c1 este adevărată
instrucțiune2;
else Se execută atunci când c1 și c2 sunt adevărate
instrucțiunea3;
Se observă că primul cuvânt else este asociat cu cel de-al doilea if, acest lucru fiind determinat
de gruparea între acolade a instructiunii if (c3), reprezentate pe desen cu portocaliu
Date de intrare: Fișerul text numere.in conține pe primul rând, două numere întregi separate
printr-un spațiu
Date de ieșire: Cel mai mare număr din fișerul de intrare se va scrie în fișierul maxim.out
Restricții: a,b numere întregi ce aparțin intervalului [-109,109]
Exemplu: dacă fișierul de intrare are forma de mai jos, atunci în fișerul de ieșire trebuie afișata
valoarea 18.
numere.in maxim.out
18 10 18
Rezolvare:
#include<fstream>
using namespace std;
ifstream fin(“numere.in”); //deschid fișierul prntru operația de citire
ofstream fout(“maxm.out”); //deschid fișierul pentru operația de scriere
int main()
{int a,b; //declararea variabilelor
fin>>a>>b; //citesc valoarea celor doua numere
if(a>b) // le compar, pentru a determina valoarea maxima
fout<<a; // scriu rezultatul in fisier
else
fout<<b;
return 0;
}
3.Maximul dintre trei numere
Se citesc trei numere notate a,b și c. Scrieți un algoritm și un program C++ care să afișeze
cel mai mare număr citit.
Date de intrare: Fișerul text numere.in conține pe primul rând, trei numere întregi separate printr-
un spațiu
Date de ieșire: cel mai mare număr din fișerul de intrare se va scrie în fișierul maxim.out
Restricții: a,b și c numere întregi, ce aparțin intervalului [-109,109]
Exemplu: dacă fișierul de intrare are forma de mai jos, atunci în fișerul de ieșire trebuie afișata
valoarea 18.
numere.in maxim.out
18 5 10 18
Pas 1 : Compar prima dată valoarea variabilei a cu valoarea variabilei b, şi dacă valoarea lui a este
mai mare decât valoarea lui b interschimb valorile celor două variabile, obţinând în acest fel valoarea
maximă dintre primele două variabile în variabila b.
Pas 2: Compar de aceasta data valoarea variabilei b cu valoarea variabilei c, şi dacă valoarea
variabilei b este mai mare decât valoare lui c interschimb valorile celor două variabile, obţinând
astfel valoarea maximă dintre cele trei variabile în variabila c.
1. Se citește o valoare naturală, nenulă, notată a. Să se realizeze un program care va afișa cele mai
apropiate două numere naturale pare de numărul x.
Date de intrare: Fișerul text numar.in conține pe primul rând, un număr natural nenul.
Date de ieșire:Fișierul numere.out conține două numere naturale scrise pe prima linie, separate
print-un spați și care reprezintă cele mai aproiate numere pare față de numărul dat
Restricții: a∈ 𝑁 ∗ , număr natural, nenul (0,109]
Exemplu:
numar.in numere.out
15 14 16
200 198 202
2. Se citește un număr natural, notat x. Să se afișeze numele lunii care are ca număr de ordine
valoarea dată.
Date de intrare: Fișerul text numar.in conține pe primul rând, un număr natural nenul.
Date de ieșire: Fișierul rez.out conține numele lunii corespunzătoare numărului dat, sau
mesajul ”Date gresite!”, dacă numărul dat nu este 1≤x≤12.
Restricții: a∈ 𝑁 ∗ , număr natural, nenul (0,109]
Exemplu:
numar.in rez.out
10 octombrie
15 Date gresite!
3. Scrieți un algoritm și un program C++, care să determine ultima cifră a numărului m=2n, fără a
calcula valoarea m.
Date de intrare: Fișerul text numar.in conține pe primul rând, un număr natural n.
Date de ieșire: Fișierul cifra.out conține o singură cifră, care reprezintă rezultatul cerut.
Restricții: n∈ 𝑁 ∗ , număr natural n∈ [0,109]
Exemplu:
numar.in cifra.out
0 1 (ultima cifră a lui 20 este 2)
5 2 (ultima cifră a lui 25 este 2)
4. Se citește o valoare naturală, notată n. Să se realizeze un program care va afișa mesajul ”par”, sau
”impar”, în funcție de paritatea numărului dat
Date de intrare: Fișerul text numar.in conține pe primul rând, un număr natural nenul.
Date de ieșire:Fișierul date.out conține mesajul
Restricții: n∈ 𝑁 ∗ , număr natural n∈ [0,109]
Exemplu:
numar.in date.out
15 impar
200 par
5. Se citesc două numere naturale, notate n și m. Să se realizeze un program care va afișa 1 dacă m
în divide pe n, sau 0 altfel.
Date de intrare: Fișerul text numere.in conține pe primul rând, două număre naturale nenule
separte printr-un spațiu.
Date de ieșire:Fișierul date.out conține o singură cifră, 1 dacă m îl divide pe n, sau 0 altfel.
Restricții: n, 𝑚 ∈ 𝑁 ∗ , numere naturale n,m≤ (0,109]
Exemplu:
numere.in date.out
15 3 1
15 4 0
6. Se citesc două numere naturale, notate n și m. Să se realizeze un program care va afișa 1 dacă
cele două numere au aceiași paritate, sau 0 altfel.
Date de intrare: Fișerul text numere.in conține pe primul rând, două numere naturale nenule
separate printr-un spațiu.
Date de ieșire:Fișierul date.out conține conține o singură cifră, 1 dacă cele două numere au
aceiași paritate, sau 0 altfel
Restricții: n, 𝑚 ∈ 𝑁 ∗ , numere naturale n,m≤ [0,109]
Exemplu:
numere.in date.out
15 3 1
15 4 0
7. Se citesc trei numere întregi, notate x, a, b. Scrieți un program care va afișa 1 dacă și numai dacă
numărul x este mai mare sau egal decât a și mai mic sau egal decât b, sau 0 altfel.
Date de intrare: Fișerul text numere.in conține pe primul rând, trei numere întregi x, a ,b
separate printr-un spațiu.
Date de ieșire:Fișierul rez.out conține conține o singură cifră, 1 dacă x este mai mare sau egal
decât a și mai mic sau egal decât b, sau 0 altfel.
Restricții: numere întregi x,a,b∈[10-9,109], a ≤b .
Exemplu:
numere.in rez.out
15 3 100 1
15 40 100 0
8. Se citesc trei numere naturale, nenule, notate k, a, b. Scrieți un program care va afișa 1 dacă și
𝑎
numai dacă numărul k simplifică fracția 𝑏, sau 0 altfel.
Date de intrare: Fișerul text numere.in conține pe primul rând, trei numere întregi k, a ,b
separate printr-un spațiu.
Date de ieșire:Fișierul rez.out conține conține o singură cifră, 1 dacă numărul k simplifică fracția
𝑎
, sau 0 altfel .
𝑏
Restricții: numere întregi k, a, b∈[0,109] .
Exemplu:
numere.in rez.out
15 3 100 1
15 40 100 0
9. Se citesc două numere naturale, notate n și m. Să se realizeze un program care va afișa 1 dacă
cele două numere sunt consecutive, sau 0 altfel.
Date de intrare: Fișerul text numere.in conține pe primul rând, două numere naturale nenule
separate printr-un spațiu.
Date de ieșire:Fișierul rez.out conține conține o singură cifră, 1 cele două numere sunt
consecutive, sau 0 altfel.
Restricții: n, 𝑚 ∈ 𝑁 ∗ , numere naturale n,m≤ [0,109]
Exemplu:
numere.in rez.out
14 15 1
15 14 1
13 15 0
10. Se citesc trei numere notate a,b și c. Scrieți un algoritm și un program C++ care să afișeze cel
mai mic număr citit.
Date de intrare: Fișerul text numere.in conține pe primul rând, trei numere întregi separate
printr-un spațiu
Date de ieșire: cel mai mic număr din fișerul de intrare se va scrie în fișierul minim.out
Restricții: a,b și c numere întregi, ce aparțin intervalului [-109,109]
Exemplu: dacă fișierul de intrare are forma de mai jos, atunci în fișerul de ieșire trebuie afișata
valoarea 5.
numere.in maxim.out
18 5 10 5
11. Se citesc trei numere, distincte, notate a,b și c. Scrieți un algoritm și un program C++ care să
afișeze suma dintre cel mai mic număr citit și cel mai mare număr citit.
Date de intrare: Fișerul text numere.in conține pe primul rând, trei numere întregi separate
printr-un spațiu
Date de ieșire: suma dintre cel mai mic număr citit și cel mai mare număr se va scrie în fișierul
suma.out
Restricții: a,b și c numere întregi, ce aparțin intervalului [-109,109]
Exemplu:
numere.in maxim.out
18 5 10 23
12. O broscută face în fiecare minut câte un salt. Lungimea primului salt este p, după care, fiecare
salt are lungimea dublă față de lungimea saltului anterior făcut. Realizați un program care afișează
distanta totala parcursa de broscuță în m salturi.
Date de intrare: Fișerul text broscuta.in conține pe primul rând, două numere naturale separate
printr-un spațiu și care reprezintă lungimea primului salt p și numărul de salturi m.
Date de ieșire: Fișierul broscuța.out conține un număr natural, care reprezintă distanța totală
parcursă de broscuță în cele m salturi.
Restricții: n∈ 𝑁 ∗ , număr natural n∈ [0,109]
Exemplu:
broscuța.in broscuța.out
2 4 30
Indicații:
primul salt are lungime => 2
al doilea salt are lungime dublă față de primul salt=>4 (22)
al treilea salt are lungime dublă față de al doilea salt=>8(23)
al patrulea salt are lungime dublă față de al treilea salt=>16(24)
2+4+8+16=21+22+23+24=30( se va utiliza relația 21+22+23+...+2m=2m+1-2)
(Centrul de Pregătire pentru Performanță Hai la Oimpiadă, clasa V, Iași)