c++-ի ստանդարտ գրադարանի թեմփլեյթ կլաս ա, ավելի մանրամասն այստեղ՝
http://www.cplusplus.com/reference/stl/vector/
Ի դեպ, հարցի պատասխանն էլ կա հղման մեջ, եթե ուշադիր լինես![]()
armen9494 (31.03.2012)
Դե կարամ մի երկու բառով տնավարի նկարագրեմՊատկերացրու քեզ ծանոթ մասիվը սովորական, որը կարա լինի քո ուզած տիպի.Այսինքն ինքը կոնտեյներ ա, որի էլեմենտները կլինեն քո ասած տիպով, մասնավորապես , կարան լինեն int տիպի.Ուղղակի vector-ը դա կլաս ա, ու երբ գրում ես v[i], կոմպիլյատոը "կանչում ա" իրա operator[] մեթոդը՝ v[i] == v.operator[](i);
Վերջին խմբագրող՝ Lusina: 31.03.2012, 13:32:
Զանգվածը հայտարարելիս ինդեքսում պետք է պարտադիր գրել հաստատուն թիվ օրինակ x[50], x[100], կամ const int p=60; int x[p], Զանգվածի ինդեքսում զանգվածը նկարագրելիս չեք կարող գրել փոփոխական թիվ: Դա նածատեսված է նրա համար քանի որ C++ կոմպիլյատորը կոմպիլյացիայից առաջ պետք է իմանա թե հիշողության մեջ ինչքան տեղ պետք է հատկացնի:
Տվյալ դեպքում այդպիսի խնդիրներում վարվում են այսպես` նախապես զանգվածը նկարագրում են այնքան տարրերով որքանը կբավարարի խնդրի լուծման, այսինքն եթե տվյալ խնդրի համար վերցնեք int x[1000], դժվար թե մեկի մտքով անցնի 1000-ից մեծ վերցնի n-ը:
C++ -ում իհարկե կա հնարավորություն որը թույլ կտա զանգվածի ինդեքսում վերցնել փոփոխական թիվ, բայց դրանք արվում են class-երով և կոչվում են դինամիկ հիշողություններ: Բայց այսքան պարզ խնդրի համար չեմ կարծում տենց բաներ պետք գան
armen9494 (31.03.2012), Ruzanna Stepanyan (01.04.2012)
Լրիվ համամիտ եմ Աշոտի հետ, մենք էլ սկզբում որ անցնում էինք էս խնդիրները, ասում էի ընդեղ ասվում ա n, ինչի՞ ենք նրա վրա սահմանափակում դնում, կամ եթե այդպես է՝ թող գրքում նշվի n-ի սահմանը:
Բայց դա նորմալ է ու այս խնդիրներում դինամիկ հիշողություն չենք օգտագործում, դա շատ ավելի բարդ է:
Թավով ընդգծաս պահը կանխարգելելու համար մենք n-ը ներմուծելիս էդ սահմանափակումը դնում ենք՝ "ներմուծել n-ը այնքան ժամանակ, քանի դեռ այն մեծ է 1000-ից և փոքր 1-ից" (այսինքն երբ n-ը կգտնվի 1-1000 միջակայքում, ծրագիրը կշարունակվի):
ashot_1987 (01.04.2012), Ruzanna Stepanyan (02.04.2012)
Չգիտեմ ստեղ գրառմանը ոնց են Շնորհակալություն հայտնում, չգտաՄի խոսքով շնորհակալություն
Չէ, էդ դեպքում սխալ կլինի. նայի, ես օրինակ ներմուծում եմ 50, ինքը գնում ստուգում է՝ 50-ը մեծ է 1-ից և փոքր է 1000-ից ու նորից պահանջում ներմուծել n-ը: Իսկ եթե ես ներմուծեմ 2000, ինքը կգնա, կստուգի, որ 2000-ը մեծ է 1-ից, բայց փոքր չէ 1000-ից ու կշարունակի լուծել խնդիրը, արդյունքում սխալ ձևով (մեր դեպքում կուզի, որ ներմուծենք զանգվածի 2000 տարրերը):
Հ.Գ. ոնց որ թե Պասկալի հետ ես խառնում, ընդեղ էր պայմանը հակառակ ձևով դրվում, քանի որ "repeat" "until" էր, այսինքն արա գործողությունը, քանի դեռ պայմանը սխալ է:
Չէ պասկալի հետ չեմ խառնում ուղղակի երևի ինչ որ բան կա իրար չենք հասկանում: Ստեղ n-ը զանգվածում տարրերի քանակն ա, որը ներմուծվում ա նախօրոք, ստուգվում ա մի անգամ, իսկ էտ ստուգվում ա սենց եթե ես զանգվածը նկարագրել եմ x[1000] ուրեմն իմ ներմուծած n-ը պետք ա լինի 1<n<1000, էս ոչ Պասկալ ա, ոչ C++, ոչ էլ Java, պարզ տրամաբանություն ա:
Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)
Էջանիշներ