Daca suntem putin atenti in momentul cand rezolvam probleme de pe
pbinfo, vom vedea ca unele probleme sunt inrudite.
M-am gandit sa abordez o astfel de suita de 3 probleme asemanatoare:
Cerinţa
Se dă un număr natural
n
. Afișați în ordine crescătoare primele
n
numere naturale nenule.
Date de intrare
Programul citește de la tastatură numărul
n
.
Date de ieşire
Programul afișează pe ecran în ordine crescătoare primele
n
numere naturale nenule, separate prin exact un spațiu.
Restricţii şi precizări
Daca rezolvam acest algoritm, sigur vom putea implementa o functie care sa imi genereze frumos toate numerele naturale in ordine crescatoare.
#include
using namespace std;
int getNumber(){
int number;
cin >> number;
return number;
}
void scriereCrescatoare(int a){
for(int i=1;i<=a;i++)
{
cout<<i<<" ";
}
}
int main()
{
int n = getNumber();
scriereCrescatoare(n);
return 0;
}
O alta problema din aceeasi serie este:
Cerinţa
Se dă un număr natural
n
. Afișați în ordine descrescătoare primele
n
numere naturale nenule.
Date de intrare
Programul citește de la tastatură numărul
n
.
Date de ieşire
Programul afișează pe ecran în ordine descrescătoare primele
n
numere naturale nenule, separate prin exact un spațiu.
Restricţii şi precizări
Este foarte asemanatoare cu cea explicata mai sus doar ca scrierea trebuie sa se faca descrescator.
Modificarea trebuie facuta doar in interiorul functiei care genereaza valorile. Parcurgerea trebuie facuta descrescator.
#include<iostream>
using namespace std;
int getNumber(){
int number;
cin >> number;
return number;
}
void scriereDescrescatoare(int a){
for(int i=a;i>=1;i--) {
cout<<i<<" ";
}
}
int main() {
int n = getNumber();
scriereDescrescatoare(n);
return 0;
}
Cea de a treia problema este o sinteza a primelor doua probleme.
Cerinţa
Se dă un număr natural
n
. Afișați pe o linie primele
n
numere naturale nenule în ordine crescătoare, iar pe linia următoare aceleași numere, dar în ordine descrescătoare.
Date de intrare
Programul citește de la tastatură numărul
n
.
Date de ieşire
Programul afișează pe ecran, pe linii diferite numere cerute. Numerele de pe aceeași linie sunt separate prin câte un spațiu.
Restricţii şi precizări
In cazul acestei probleme, algoritmul de fapt este obtinut prin combinarea celor doi algoritmi prezentati anterior.
Se poate observa astfel cat de rapid si usor pot fi construiti noi algoritmi mai complecsi, daca algoritmii simpli au fost rezolvati corect folosindu-se functii.
#include <iostream>
using namespace std;
int n;
int getNumber(){
int number;
cin >> number;
return number;
}
void scriereDescrescatoare(int a){
for(int i=a;i>=1;i--)
{
cout<<i<<" ";
}
}
void scriereCrescatoare(int a){
for(int i=1;i<=a;i++)
{
cout<<i<<" ";
}
}
int main() {
n=getNumber();
scriereCrescatoare(n);
cout<<endl;
scriereDescrescatoare(n);
return 0;
}