Se citesc două numere de la tastatură, a şi b. Afişaţi numărul de termeni ai şirului lui Fibonacci din intervalul [a,b]. Scrieţi câte o variantă de program pentru fiecare structură repetitivă implementată în limbajul C++. Precizaţi expresiile şi instrucțiunile folosite pentru cele trei acţiuni ale procesului de control. 5
- Varianta cu structura repetitivă while:
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << „Introduceti doua numere intregi a si b: „;
cin >> a >> b;
int f1 = 1, f2 = 1, f3 = 2, nr = 0;
while (f1 <= b) {
if (f1 >= a) {
nr++;
}
f1 = f2;
f2 = f3;
f3 = f1 + f2;
}
cout << „Numarul de termeni din sirul lui Fibonacci din intervalul [” << a << „, ” << b << „] este: ” << nr << endl;
return 0;
}
Explicație:
- Citim numerele a și b.
- Inițializăm primele 3 numere din șirul lui Fibonacci: f1, f2 și f3.
- Folosim o buclă while pentru a genera restul șirului. Bucla se va opri când ultimul termen generat este mai mare decât b.
- Dacă termenul curent f1 este în intervalul [a, b], creștem numărul de termeni nr.
- Actualizăm cele 3 numere din șirul lui Fibonacci, trecând la următoarele 3 numere.
- Afișăm rezultatul.
- Varianta cu structura repetitivă do-while:
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << „Introduceti doua numere intregi a si b: „;
cin >> a >> b;
int f1 = 1, f2 = 1, f3 = 2, nr = 0;
do {
if (f1 >= a && f1 <= b) {
nr++;
}
f1 = f2;
f2 = f3;
f3 = f1 + f2;
} while (f1 <= b);
cout << „Numarul de termeni din sirul lui Fibonacci din intervalul [” << a << „, ” << b << „] este: ” << nr << endl;
return 0;
}
Explicație:
- Citim numerele a și b.
- Inițializăm primele 3 numere din șirul lui Fibonacci: f1, f2 și f3.
- Folosim o buclă do-while pentru a genera restul șirului. Bucla se va opri când ultimul termen generat este mai mare decât b.
- Dacă termenul curent f1 este în intervalul [a, b], creștem numărul de termeni nr.
- Actualizăm cele 3 numere din șirul lui Fibonacci, trecând la următoarele 3 numere.
- Afișăm rezultatul.
- Varianta cu structura for
#include <iostream>
using namespace std;
int main() {
int a, b;
int f1 = 0, f2 = 1, f3;
int count = 0;
cout << „Introduceti a si b: „;
cin >> a >> b;
for (int i = 1; i <= b; i++) {
f3 = f1 + f2;
f1 = f2;
f2 = f3;
if (f2 >= a && f2 <= b) {
count++;
}
}
cout << „Numarul de termeni ai sirului Fibonacci in intervalul [” << a << „, ” << b << „] este: ” << count << endl;
return 0;
}
În această variantă, folosim o buclă for pentru a genera termenii șirului Fibonacci de la 1 până la b. În fiecare iterație, adunăm ultimele două numere ale șirului și verificăm dacă numărul obținut se află în intervalul [a,b]. Dacă da, incrementăm contorul. La final, afișăm numărul de termeni găsiți.