Global scope
Որոշ դեպքերում, արագ կոդ գրելու նպատակով, կարելի է օգտվել global scope
-ից և որոշ փոփոխականներ պահել այնտեղ։ Այդ փոփոխականները հասանելի կլինեն բոլոր իրենցից ներքև գտնվող ֆունկցիաներին։ Այդ թվում և main
ֆունկցիային։
#include <iostream>
using namespace std;
int n;
void some_function() {
++n;
cout << n << endl;
}
int main() {
cin >> n;
some_function();
some_function();
some_function();
some_function();
return 0;
}
Այս ծրագիրը հայտարարում է մի փոփոխական n
, որն ունի int
տիպ և main
-ում ներմուծում է այն։ Ենթադրենք, որ այս անգամ ներմուծել ենք 10։ Դրանից հետո main
-ից մենք կանչում ենք some_function()
-ը, որը մեծացնում է n
-ի արժեքը, իսկ հետո տպում այն։ Քանի որ n
-ը հայտարարված է some_function
-ից առաջ, այն հասանելի է some_function
-ին և some_function
-ը սկզբում n
-ը դարձնում է 11
իսկ հետո տպում դրա արժեքը։
Նույնը կատարվում է երկրորդ անգամ some_function
-ը կանչելուց։ Այն սկզբում մեծացնում է n
-ի արժեքը դարձնելով այն 12
, իսկ հետո տպում այն։ Երրորդ անգամ some_function
-ը տպում է 13
, ու վերջում 14
։
Այսպիսով, վերևում հայտարարված փոփոխականները հասանելի են ֆունկցիաների մեջ։ Եթե n
-ը հայտարարված լիներ some_function
-ից հետո և main
-ից առաջ, ապա այն հասանելի չէր լինի some_function
-ում։ Կարող եք ինքներդ փորձել և տեսնել թե ինչ է ասում C++-ի compiler-ը։
Վարժություն՝
Ունենալով q
հատ հարցում, որոնցից ամեն մեկում գրված է երկու թիվ, անհրաժեշտ է պարզել ամեն զույգի մեջից մեծագունը և վերջում տպել թե դեպքերից քանիսում է մեծագունը երկրորդը։
Մուտքի առաջին տողում տրված է q
բնական թիվը (1 ≤ q ≤ )։ Դրան հետևում են q
տողեր, որոնցից յուրաքանչյուրում գրված է մի զույգ a
և b
թվեր։
Ելքի առաջին q
տողում անհրաժեշտ է տպել այդ զույգերից յուրաքանչյուրից մեծագույնի արժեքը։ Եվ վերջին տողում անհրաժեշտ է տպել թե դրանցից քանի դեպքում էր երկրորդ թիվը ավելի մեծ առաջինից։
Մուտք | Ելք |
---|---|
4 1 2 2 1 0 -5 5 10 | 2 2 0 10 2 |
Հուշում՝ Կարող եք սահմանել int max
ֆունկցիա, որը ոչ միայն կվերադարձնի մեծագույնը, այլ նաև կգումարի 1 մի գլոբալ փոփոխականի, եթե երկրորդ թիվը մեծ է առաջինից։
Constraints
Time limit: 0.4 seconds
Memory limit: 512 MB
Output limit: 10 MB