PDA

Դիտել ողջ տարբերակը : C++



Էջեր : [1] 2 3

Programmer
18.02.2008, 15:25
Ժողովուրդ ջան ուզում եմ նոր թեմա բացել, նվիրված լայն տարածում գտած ծրագրավորման լեզուներից մեկին`C++ ին, և նրա հետ կապվաց խնդիրներին:

dvgray
18.02.2008, 22:31
Ըստ իս:՝
Լավ լեզու է: Բարձր մակարդակի՝ ամենահաջողված լեզուն է:

Barça
18.02.2008, 23:03
իմ կարծիքով c++-ը ոչ բարձր մակարդակի ա ոչ էլ ցածր մակարդակի.
երկուսի արանքում ա ավելի մոտ գտնվելով ցածր մակարդկին:

dvgray
18.02.2008, 23:28
իմ կարծիքով c++-ը ոչ բարձր մակարդակի ա ոչ էլ ցածր մակարդակի.
երկուսի արանքում ա ավելի մոտ գտնվելով ցածր մակարդկին:

Դա երևի ավելի ճիշտ է ասել "C" -ի մասին: Իսկ դասական C++ իր կլասներով, վիրտուալութամբ ... և այլն, ամբողջովին բարձր մակարդակի լեզու է:

aerosmith
19.02.2008, 00:55
ես էլ եմ համաձայն ,որ C++ -ը բարձր բակարդակի ծրագրավորման լեզուներից մեկն ա, ունի շատ հարուստ գրադարան։

_DEATH_
19.02.2008, 12:31
ես էլ եմ համաձայն ,որ C++ -ը բարձր բակարդակի ծրագրավորման լեզուներից մեկն ա, ունի շատ հարուստ գրադարան։

Համաձայն եմ բարձր բարդակի լեզույա, մի հատ փոքր ծրագիրը 5 տողանոց Python-ով էի գրել, փորձեցի նույնը C++-ով գրել, 17 տող եղավ:
#include <iostream.h>-ը ,main ()-ը, փոփոխականների հայտարարումը, անկապ կետ ստորակետերը ամեն հրամանից հետո, մեկից ավելի հրամաններով ֆունկցիա էր ստիպված {}-ի մեջ առա,…, ոբշմ մի հատ 5 տողանոց ֆունկցիաս C++-ում պատմություն դառավ:

Lonely
21.02.2008, 20:10
Որ դուրտ չի գալիս խի ես C++-ով գրում ?

_DEATH_
21.02.2008, 20:25
Որ դուրտ չի գալիս խի ես C++-ով գրում ?

C++-ով չեմ գրում, Python-ը շատ ավելի բարձր մակարդակի վրա է ու բառապաշարը ավելի գրագետ, թվաբանական գործողություններ կարելի է կատարել անվերջ մեծ թվերի հետ, ..................: Ու ամենակարևորը C++-ով կարելի է module գրել Python-ի համար, այսինք կարելի է օգտագործել C++-ի բոլոր հնարավորությունները + Python-ի հնարավորթությունները ու ծրագրերի կոդը էն աստիճանի տրամաբանական ու հասկանալի է, որ չիմացող մարդն էլ կհասկանա ծրագրի իմաստը:

Lonely
21.02.2008, 20:35
անվերջ մեծ թվերի հետ
:D :D
Հնարավոր չի...

_DEATH_
21.02.2008, 20:46
:D :D
Հնարավոր չի...

Հնարավորա :P

գուգոլը(googol) գիտես որնա՞՞ 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Այ էս թիվնա, բա googolplex-ը ՞՞՞ 10-ի գուգոլ աստիճան:

Боюсь, нам не хватит бумаги, чтобы записать это число в обычном виде. Информация для любознательных: на Web-странице этой книги можно найти программу на языке Python, которая выводит на печать числа гугол и гуголплекс. Она будет выполняться до тех пор, пока у Вас не лопнет терпение, или не исчерпается компьютерная память, или свободное пространство на жёстком диске компьютера, или пока Земля не упадет на Солнце (неизвестно, что произойдет первым).

Քյասար ախպեր ջան Python-ը կարա անվերջ հաշվի, եթե կոմպի ռեսուռսները հերիքի, իսկ ինչքան գիտեմ C++-ը զոռով 4 byte-անոց թվերնա կարում հաշվի ու ոնց եք պատռաստվում էտ լեզվով լուրջ ծրագրեր գրել՞՞

Lonely
21.02.2008, 20:57
Ետ թվերը կարաս հեշտ string-ով ու 10-ի աստիճաններով հաշվես, C++-ով ;)

1 googol = 1.0 × 10 100 աստիճան

_DEATH_
21.02.2008, 21:31
Ետ թվերը կարաս հեշտ string-ով ու 10-ի աստիճաններով հաշվես, C++-ով ;)

1 googol = 1.0 × 10 100 աստիճան

:D էտի խալտուռայա, համ էլ տենց ոնց ես գործողություններ անելու (+,-,*,/), եթե թիվը լինի ոչ թե գուգոլ, այլ 289390125189623432454759457546363368690232424869 էս կարգի թիվ, որ ոչ մի օրինաչափություն չկա: Այսինքն հնարավորա բարդ ալգորիթմ գրել որը կհաշվի, մի քանի ամիս տանջվելով, բայց ինչի կոմպի ռեգիստռները թողած էմուլատոռ գրես թիվ հաշվելու, որը մի քանի տասնյակ անգամ ավելի շատ պռոցեսոր կպահանջի ու RAM-ն էլ անխնայողաբար օգտագործի, որ մի կեժամից պրծնի:

Programmer
22.02.2008, 17:10
Կարծում եմ սխալ է ծրագրավորման լեզվին "լավ" կամ "վատ" գնահատական տալ գլոբալ տեսանկյունից, քանի որ ամեն լեզու մի խնդրի համար կարող է լինել լավը , իսկ մի ուրիշի համար վատը. օրինակ կան խնդիրներ որոնց լուծումը պահանջում ե Python ի ավելի քիչ տող քան C++ ով, մի ուրիշ խնդրի համար ել Python - պահանջում ե ավելի շատ տող քան C++ -ը: Ուստի եթե ծրագրաորման լեզվին գնահատական եք տալիս, նշեք թե կոնկրետ ինչ տիպի խնդրի է համապատասխանում ձեր գնահատականը:

_DEATH_
22.02.2008, 19:02
Կարծում եմ սխալ է ծրագրավորման լեզվին "լավ" կամ "վատ" գնահատական տալ գլոբալ տեսանկյունից, քանի որ ամեն լեզու մի խնդրի համար կարող է լինել լավը , իսկ մի ուրիշի համար վատը. օրինակ կան խնդիրներ որոնց լուծումը պահանջում ե Python ի ավելի քիչ տող քան C++ ով, մի ուրիշ խնդրի համար ել Python - պահանջում ե ավելի շատ տող քան C++ -ը: Ուստի եթե ծրագրաորման լեզվին գնահատական եք տալիս, նշեք թե կոնկրետ ինչ տիպի խնդրի է համապատասխանում ձեր գնահատականը:

Ես ուղակի չեմ պատկերացնում, որ C++-ով ավելի փոքր լինի կոդը, քան Python-ով :)
Եկեք չօֆտոպենք, եթե հետաքրքիր է քնարկումը շարունակենք համապատասխան թեմայում Python vs C++ (http://www.akumb.am/showthread.php?t=15301)

linus
24.02.2008, 21:06
ահագին զարմացա որ իմացա թե C++ ը բարձր մակարդակի լեզու է, ավելի շատ կզարմանայ եթե գրեյք որ այն օբյեկտը կողմնորոշված լեզու է: իսկ են որ պիտոնը ավելի լավ լեզու է քան սին ապա մի հատ հարց. Կարող եք գրել օհ պիտոնով, որը կունենա ասենք յունիքսի էֆեկտիվությունը<որը գրված է սի ով>;)

Դա երևի ավելի ճիշտ է ասել "C" -ի մասին: Իսկ դասական C++ իր կլասներով, վիրտուալութամբ ... և այլն, ամբողջովին բարձր մակարդակի լեզու է:
իսկ կասես ինչ տարբերություն կա Սի ի և Սի երկու գումարածի մեջ?
օրինակ մի գաղափար որը Սի ում չկա "ամեն ինչ օբյեկտ է" զրկում է սի ին կոչվել բարձր մակարդակի լեզու, բարձր մակարդակի լեզու է սմօլտօկը, ջավան, դոդիեզը, պհպ ն եվ այլն

_DEATH_
24.02.2008, 21:37
Կարող եք գրել օհ պիտոնով, որը կունենա ասենք յունիքսի էֆեկտիվությունը<որը գրված է սի ով>;)

Ճիշտն ասած հենց հիմա գրում եմ ՕՀ` Vista Python-ով Symbian-ի համար, ՕՀ ՕՀ-ի ներսում, որը իսկականից ձյաձ Բիլն էլ չի տարբերի ու շատ ավելի հարմարավետ: : C++-ով ոչ մեկին չհաջողվեց: Իսկ ընդհանրապես, եթե խոսքը գնում է էֆեկտիվության և բարձր մակարդակի մասին, ուրեմն պետք է միայն Assembler-ով ՕՀ գրել, խոսքը գնում է միայն կոմպով գրվող ՕՀ-երին, իսկ ովքեր փորձում են C++-ով ՕՀ գրել, նրանք մեղմ ասած ալարկոտ են: Symbian-ն էլ ամբողջովին գրված է C++-ով, որի պատճառով շատ հաճախ խնդիրներ են առաջանում:

noybridge
26.02.2008, 09:31
Բարև Ձեզ,

Աշխատանքի ենք հրավիրում վեբ ծրագրավորողների: Կարող եք ռեսումեները ուղարկել [email protected] էլ. փոստին:

Արշակ | 093 616262

nenesys
21.04.2008, 13:24
Ժողովուրդ ջան ուզում եմ նոր թեմա բացել, նվիրված լայն տարածում գտած ծրագրավորման լեզուներից մեկին`C++ ին, և նրա հետ կապվաց խնդիրներին:
liovin koxmem, mitq@ shat lavn e. Bayc mi arajarkel es unem, isk inch kaseq VISUAL C++ i masin nor tema bacelu masin???

AG16
21.04.2008, 15:47
Ինչ-որ մեկը կարող է ինձ C++ ծրագիրը քաշելու հասցե տալ??? (շատ է պետք)

Programmer
22.05.2008, 10:48
Դիմում եմ c++ ից լավ գլուխ հանողներին.
Ինչնա պատճառը որ static_cast ը չի ձևափոխում վիրտուալ բազային ցուչի տիպից ածանցվածի ցուցչի տիպի, այն դեպքույմ երբ նորմալ ձևափոխումա ոչ վիրտուալ բազային դասերի համար՞:
օրինակ (Ստրաուստրուպ 15.4.2.1).
calss A{};
class B:public virtual A{};
class C:public virtual A{};
class D:public B,public C{};
D d;
A * pa=& d;
B * pb=d;
D * pd=ststic_cast<D*>(pb); // es chisht a
pd=ststic_cast<D *>(pa); // ??? stex talisa sxal ???

Kuk
19.10.2008, 23:33
երեխեք ջան ինձ շտապ պետքա c++ mfc application սովորելու գիրք, եթե մեկնումեկդ ունի թող ասի մեյլս տամ ւղառկեք էլի... կամ էլ լինկ տվեք
նախօրոք մերսիներ:)

Principles of C++
Սենց գիրք կա մոտս, հայերեն ա, եթե քո ուզածն ա, մեյլ տուր, տամ:

aerosmith
19.10.2008, 23:46
մերսի ԿՈՒԿ ջան, ես էլ ունեմ էդ, դրա մեջ իմ ուզածը չկա:(

ars83
20.10.2008, 12:59
մերսի ԿՈՒԿ ջան, ես էլ ունեմ էդ, դրա մեջ իմ ուզածը չկա:(

Խառը հղումներ.
http://wm-help.net/down_book.php?id=24
http://www.brain2life.com/library/programming/c2plus/visual_c++_i_mfc_tom_1_(2001)_%5Bbrain2life_com%5D.rar (կայքը՝ http://www.brain2life.com/book/251.html)
http://www.brain2life.com/library/programming/c2plus/visual_c++_i_mfc_tom_2_(2001)_%5Bbrain2life_com%5D.rar (կայքը՝ http://www.brain2life.com/book/251.html)

ars83
20.10.2008, 13:06
Դիմում եմ c++ ից լավ գլուխ հանողներին.
Ինչնա պատճառը որ static_cast ը չի ձևափոխում վիրտուալ բազային ցուչի տիպից ածանցվածի ցուցչի տիպի, այն դեպքույմ երբ նորմալ ձևափոխումա ոչ վիրտուալ բազային դասերի համար՞:
օրինակ (Ստրաուստրուպ 15.4.2.1).
calss A{};
class B:public virtual A{};
class C:public virtual A{};
class D:public B,public C{};
D d;
A * pa=& d;
B * pb=d;
D * pd=ststic_cast<D*>(pb); // es chisht a
pd=ststic_cast<D *>(pa); // ??? stex talisa sxal ???
http://bytes.com/forum/thread481929.html

T!gran
20.10.2008, 16:03
Ճիշտն ասած հենց հիմա գրում եմ ՕՀ` Vista Python-ով
_DEATH_ կբացատրես ինչ առավելություններ կունենա այն

MSGM
22.10.2008, 06:33
մերսի ԿՈՒԿ ջան, ես էլ ունեմ էդ, դրա մեջ իմ ուզածը չկա:(

Aha ruseren haytni girq:
http://www.prgmm.ru/download/Book/url-722

Bravo
11.11.2008, 22:05
Ժողովուրդ կարող եք օգնել այս երկու խնդիրը լուծեմ ?

Ստեղծել բազային Person դաս, որը պետք է պարունակի պատվիրատուի ընդհանուր տվյալները՝ անուն, ազգանուն, հասցե, քաղաք: Այդ դասից public հատկորոշիչով ժառանգվում են երկու ածական դաս air ու car: Առաջինը լրացուցիչ տեղեկություն է պարունակում պատվիրատուի կողմից ինքնաթիռով անցած ուղու և մեքենայի մակնիշի մասին, իսկ երկրորդը՝ մեքենայով անցած ուղու և մեքենայի մակնիշի մասին: Հայտարարեք տարբեր անուներով մի քանի օբյեկտներ: Օգտագործելով բազային և ածական դասերի մուրքի/ելքի ֆունկցիաները՝ մուտքագրեք պահանջվող տվյալներն ու արտածեք դրանք էկրանին: Դասերի սահմանումները պետք է լինեն համապատասխան header ֆայլում, անհրաժեշտ ֆունկցիաների նկարագրությունները՝ person.cpp ֆայլում, իսկ main() ֆունկցիան՝ ծրագրի աշխատանքի ցուցումներով run.cpp ֆայլում:

Ստեղծեք բազային base դաս, որի պաշտպանված անդամներ են երկրաչապական պատկերի լայնությունը և բարձրությունը: Այդ դասից public հատկորոշիչով ժառանգվում են երկու ածական դաս rect ու triang: Ածական դասերում պետք է նկարագրել իրենց կոնստրուկտորները և դեստրուկտորները՝ տեղեկություններ արտածելով էկրանի նրանց աշխատանքի մասին: Մշակել երկու ֆւնկցիա՝ area() – վերադարձնում է ուղղանկյան կամ եռանկյան հաշվարկված մակերեսի արժեքը, inp() – ստեղնաշարից ներմուծվում է լայնության և բարձրության արժեքները: Հայտարարեք rect ու triang դասերի մի քանի օբյեկտներ ու դիմելով area() ֆունկցիային արտածեք արդյունքները էկրանին:

Շնորհակալություն նախապես

Elmo
12.11.2008, 16:25
C++ արդեն հին ու բարի գերհզոր ծրագրավորման լեզու… կարելի ա ժամերով խոսել էդ լեզվի մասին, բայց ժամանակն է անցնել C# -ի: C# -ի հարմարավետությունը, կոդի հասկանալիությունը ու ավելի «մարդերեն» սինտաքսը արդեն սեղմում ա C++ ին: Կլասների հետ աշխատանքի նոր մեթոդներ, ցուցիչների բացակայություն, ժառանգականության նոր մեթոդներ, նորցված գրադարաններ, ավելի լավ գրաֆիկա, ավելի լավ պատուհաններ… կարճ ասած C#-ը ավելի լավ փող աշխատելու շանսեր ա տալիս:

CCoder
12.11.2008, 18:12
Դե ուրեմն դու C#-ով խաղ կգրես, կամ կոմպիլյատոր, կամ Player ...
ԵՎ ընդհանրապես ծրագրավորման լեզվի ընտրությունը կախված է ոչ թե անձնական նախասիրություններից այլ խնդրի դրվածքից և պահանջներից, օրինակ.
ծրագիրը պետք է աշխատի պորտերի հետ - C, Assembler;
պետք է տեղափոխելիություն – Java;
տվյալների բազայի հետ աշխատանք – C#;
Web ծրագրավորում – ASP.NET(C#), JSP(Java), Javascript, ...
արագություն – C++;
Մի հատ էլ այսպիսի օրինակ, ժամանակին (հիմա չգիտեմ ոնց) թնդանոթների արկերի և հրթիռների հետագիծը հաշվարկող ծրագիրը գրված էր ADA–ով, որովհետև այն ուներ հետագծի ֆիզիկական մոդելավորումը ապահովող հարուստ գրադարան։

Շատ մի հավատացեք այն գրքերին ու դասախոսներին որոնք պնդում են թե ցուցիչները չարիք են։ Չկան «վատ» ցուցիչներ կան վատ ծրագրավորողներ!
Բանիմաց ձեռքերում ցուցիչները շատ հզոր միջոց են։ Օրինակ C++ STL-ը։
C#–ում ցուցիչ կա տես unsafe:

Elmo
12.11.2008, 18:39
C#–ում ցուցիչ կա տես unsafe:

Իհարկե կա, եթե ցուցիչները շատ սիրող ծրագրավորող լինի, կա: Բայց առանց դրա էլ շատ լավ յոլա ենք գնում: Ես ցուցիչներ չեմ սիրում, ու շատ ուրախ եմ, որ դրանց երեսը կարամ չտենամ:
C# -ով խաղ չեն գրում, բայց հնարավոր ա գրել: Համ էլ հիմա Հայաստանում որ ֆիրմանա խաղեր գրում, որ ծրագրավորողը գնա աշխատի: Հիմա վեբ ծրագրավորումն ա փող բերում, ու բազզաների հետ աշխատող ծրագրերի ստեղծումը: Էդ երկուսի համար էլ C# -ը հզոր ու շատ գեղեցիկ լեցու ա:

Արիացի
13.11.2008, 18:55
C++ արդեն հին ու բարի գերհզոր ծրագրավորման լեզու… կարելի ա ժամերով խոսել էդ լեզվի մասին, բայց ժամանակն է անցնել C# -ի: C# -ի հարմարավետությունը, կոդի հասկանալիությունը ու ավելի «մարդերեն» սինտաքսը արդեն սեղմում ա C++ ին: Կլասների հետ աշխատանքի նոր մեթոդներ, ցուցիչների բացակայություն, ժառանգականության նոր մեթոդներ, նորցված գրադարաններ, ավելի լավ գրաֆիկա, ավելի լավ պատուհաններ… կարճ ասած C#-ը ավելի լավ փող աշխատելու շանսեր ա տալիս:

Համաձայն չեմ:
Իհարկե համաձայն եմ, որ փող աշխատելու ավելի շատ շանսեր ա տալիս, բայց երբեք C#-ը C++-ին չի հասնի: Երբեք C++ կարգին իմացողը չի անցնի C#-ի: Կարողա թվալ, թե C#-ը ավելի մեծ հնարավորություններ ունի, բայց իրականում C++-ի հնարավորությունները անսահմանափակ են: Նախ C#-ը մենակ Windows-ի համար ա, իսկ C++-ը պլատֆորմից կախված չի: Հետո C++-ը արագագործության առումով շատ ավելի բարձր է քան C#-ը: Եվ վերջապես, C++-ով ծրագրավորելիս ամեն ինչ քո ձեռքի տակ է և եթե մի սխալ ա լինում, գոնե գիտես, որ քեզնից ա, իսկ C#-ով քո տեղը շատ բաներ սիստեման ա անում, առանց քեզ հարցնելու, հենց օրինակ էն, որ ցուցիչներ չկան ու սիստեման ա դա ղեկավարում, իմ կարծիքով սա թերություն ա: Չնայած էս վերջին փաստարկը մի քիչ ճաշակի հարց է:
C#-ը նրանով է լավ, որ հեշտ է ամեն ինչ: C++-ը դժվար ա լրիվ սովորել ու հասկանալ, բայց եթե մի անգամ սովորեցիր էլ երբեք մտքով էլ չի անցնի այլ բանով ծրագրավորել: Շատ գեղեցիկա ամեն ինչ իրականացվում:

Արիացի
13.11.2008, 19:01
Հիմա վեբ ծրագրավորումն ա փող բերում, ու բազզաների հետ աշխատող ծրագրերի ստեղծումը: Էդ երկուսի համար էլ C# -ը հզոր ու շատ գեղեցիկ լեցու ա:
Սրա հետ համաձայն եմ ու C#-ը իրոք սենց բաների համար շատ հարմար է:
Բայց շատ ու շատ այլ բաներում, որտեղ կարևորը արագագործությունն ա (իսկ տենց խնդիրներ հաստատ ավելի շատ կան ուղղակի փոքր շրջանակներում) լավագույն լուծումը C++-ն ա:
Հետո էլ, եթե զուտ ցուցիչներ չես սիրում, ապա դրա համար STL-ում կա auto_ptr կլասս, որը քո տեղը ղեկավարում ա ցուցիչի ստեղծվելը ու ջնջվելը, իսկ boost-ում ավելի հզոր բաներ կան` shared_ptr, start_ptr և այլն: Էնպես որ, արժե զբաղվել :)

Elmo
13.11.2008, 19:04
Սրա հետ համաձայն եմ ու C#-ը իրոք սենց բաների համար շատ հարմար է:
Բայց շատ ու շատ այլ բաներում, որտեղ կարևորը արագագործությունն ա (իսկ տենց խնդիրներ հաստատ ավելի շատ կան ուղղակի փոքր շրջանակներում) լավագույն լուծումը C++-ն ա:
Հետո էլ, եթե զուտ ցուցիչներ չես սիրում, ապա դրա համար STL-ում կա auto_ptr կլասս, որը քո տեղը ղեկավարում ա ցուցիչի ստեղծվելը ու ջնջվելը, իսկ boost-ում ավելի հզոր բաներ կան` shared_ptr, start_ptr և այլն: Էնպես որ, արժե զբաղվել :)

Ահա: Բայց հիմա համակարգիչները հզոր են, իսկ պատվերով գրվող ծրագերն էլ հիմնականում կոնկրետ խնդիր ունեն, ունիվերսալ չեն ու մեծ էլ չեն:

Արիացի
13.11.2008, 19:10
Ահա: Բայց հիմա համակարգիչները հզոր են, իսկ պատվերով գրվող ծրագերն էլ հիմնականում կոնկրետ խնդիր ունեն, ունիվերսալ չեն ու մեծ էլ չեն:

Հա կոմպերը հզոր են, բայց միշտ արագագործությունը պետք ա: Մարդը միշտ ձգտում ա կատարելության:
Ու հետո էլ, ինչ-որ մի գիտնական ասում էր, որ եթե կոմպերի արագագործությունը աճում է 2 անգամ, ապա գիտական ասպարեզում առաջացած խնդիրների բարդությունը աճում է 5 անգամ, հետևաբար այդ աճը միակողմանի չի: Եթե կոմպը արագանում ա, խնդիրներն էլ են բարդանում:
Կոմերցիոն առումով, քո ասածը ես ընդունում եմ: C#-ը ճիշտ լուծում ա այդ դեպքում: Բայց գիտական խնդիրներում (որոնք հետագայում ունենում են նաև կոմերցիոն կիրառություն) միշտ կարևորը արագություննա:

aerosmith
25.11.2008, 19:51
մի բան հարցնեմ c\c++ իմացողներին։
օրինակ, ինձ պետքա իմանամ, օրինակ sin() ֆունկցիայի կոդը, որտեղից կարամ իմանամ, կամ ավելի լավ հարցս ձևակերպեմ, որտեղա գրած դրա կոդը???

Elmo
25.11.2008, 22:34
մի բան հարցնեմ c\c++ իմացողներին։
օրինակ, ինձ պետքա իմանամ, օրինակ sin() ֆունկցիայի կոդը, որտեղից կարամ իմանամ, կամ ավելի լավ հարցս ձևակերպեմ, որտեղա գրած դրա կոդը???

math.h Ֆայլում ձևակերպումն ա տված, բայց որոշումը չէս կարող տենալ, մայքրոսոֆթը փակում ա: Համենայն դեպս ես ման էի գալիս, բավականին լուրջ մարդիկ ասեցին, որ ռեալիզացիան փակ կոդով ա արվում:

Ռեդ
25.11.2008, 23:04
մի բան հարցնեմ c\c++ իմացողներին։
օրինակ, ինձ պետքա իմանամ, օրինակ sin() ֆունկցիայի կոդը, որտեղից կարամ իմանամ, կամ ավելի լավ հարցս ձևակերպեմ, որտեղա գրած դրա կոդը???
Չգիտեմ, չեմ կարող նայել, բայց մտածում եմ, որ Թեյլորի բանաձևի միջոցով և ըստ ճշտության ա հաշվում ;)

aerosmith
25.11.2008, 23:27
հա Թեյլորով հաստատ ստացվումա, բայց ինձ պետքա ոչ միայն վերը նշված ֆունկցիան այլ նաև սթռինգների հետ կապված մի քաի ֆունկցիաներ ևս, որոք կարողանամ բացել

total_abandon
26.11.2008, 10:38
Համաձայն չեմ:
Իհարկե համաձայն եմ, որ փող աշխատելու ավելի շատ շանսեր ա տալիս, բայց երբեք C#-ը C++-ին չի հասնի: Երբեք C++ կարգին իմացողը չի անցնի C#-ի: Կարողա թվալ, թե C#-ը ավելի մեծ հնարավորություններ ունի, բայց իրականում C++-ի հնարավորությունները անսահմանափակ են: Նախ C#-ը մենակ Windows-ի համար ա, իսկ C++-ը պլատֆորմից կախված չի: Հետո C++-ը արագագործության առումով շատ ավելի բարձր է քան C#-ը: Եվ վերջապես, C++-ով ծրագրավորելիս ամեն ինչ քո ձեռքի տակ է և եթե մի սխալ ա լինում, գոնե գիտես, որ քեզնից ա, իսկ C#-ով քո տեղը շատ բաներ սիստեման ա անում, առանց քեզ հարցնելու, հենց օրինակ էն, որ ցուցիչներ չկան ու սիստեման ա դա ղեկավարում, իմ կարծիքով սա թերություն ա: Չնայած էս վերջին փաստարկը մի քիչ ճաշակի հարց է:
C#-ը նրանով է լավ, որ հեշտ է ամեն ինչ: C++-ը դժվար ա լրիվ սովորել ու հասկանալ, բայց եթե մի անգամ սովորեցիր էլ երբեք մտքով էլ չի անցնի այլ բանով ծրագրավորել: Շատ գեղեցիկա ամեն ինչ իրականացվում:

Ով ա ասել որ C++ պլատֆորմից կախված չի, հենց C, C++, C# սաղ ել Windows պլատֆորմից են կախված: Եդ Java-ն ա, որ Cross platform-ա: C, C++, C# ամենքն էլ ստեղծված են համապատասխան խնդիրներ լուծելու համար, օրինակ, դրայվերներ գրողը, կյանքում C#-ով չի գրի, կամ նույն էլ C-ով հզոր հաշվապահական ծրագիր չես գրի(ճիշտն ասած C-ով կգրես բայց մինչև գրես կծերանաս:D): Ամենքը նախատեսված ա համապատասխան խնդիրներ լուծելու համար: Նենց որ չի կարելի ասել, թե եսի նրան խեղդումա կամ չէ: Էս ոչ Վիստայա ոչ էլ Եքսպի...:D:D

Արիացի
26.11.2008, 12:49
Ով ա ասել որ C++ պլատֆորմից կախված չի, հենց C, C++, C# սաղ ել Windows պլատֆորմից են կախված: Եդ Java-ն ա, որ Cross platform-ա: C, C++, C# ամենքն էլ ստեղծված են համապատասխան խնդիրներ լուծելու համար, օրինակ, դրայվերներ գրողը, կյանքում C#-ով չի գրի, կամ նույն էլ C-ով հզոր հաշվապահական ծրագիր չես գրի(ճիշտն ասած C-ով կգրես բայց մինչև գրես կծերանաս:D): Ամենքը նախատեսված ա համապատասխան խնդիրներ լուծելու համար: Նենց որ չի կարելի ասել, թե եսի նրան խեղդումա կամ չէ: Էս ոչ Վիստայա ոչ էլ Եքսպի...:D:D
C#-ը զուտ Windows-ական բանա: Իսկ մաքուր C-ն ու C++-ը պլատֆորմից կախված չեն: Եթե դու գրես կոդ, որը համապատասխանում ա ստանդարտներին, ապա էդ կոդը կարող ես կոմպիլյացիա անել ցանկացած պլատֆորմի տակ ու աշխատացնես: Ուրիշ բան եթե դու օգտագործում ես ոչ ստանդարտ գրադարաններ, ասեն MFC, որը linux-ի տակ չես գտնի: Բայց էդ դեպքում գրաֆիկական ինտերֆեյսը կարելի է գրել Qt-ով, իսկ մնացածը ստանդարտ C++-ով ու STL-ով ու կոմպիլյացիա անել որտեղ ուզում ես, նույնիսկ սմարտֆոնի վրա :)

Ավելացվել է 1 րոպե անց

մի բան հարցնեմ c\c++ իմացողներին։
օրինակ, ինձ պետքա իմանամ, օրինակ sin() ֆունկցիայի կոդը, որտեղից կարամ իմանամ, կամ ավելի լավ հարցս ձևակերպեմ, որտեղա գրած դրա կոդը???

Եթե linux ունես, էնտեղ սաղ կոդերը կան, կարաս բացես նայես: Կամ էլ մի հատ google-ում փնտրի: Հաստատ կգտնես:

Արշակ
26.11.2008, 13:27
C++ vs C# վեճի վերաբերյալ։
Իհարկե, C++ –ը տեխնիկապես ավելի շատ հնարավորություններ ունի, քան C#–ը, քանի որ այն համեմատաբար ավելի ցածր մակարդակի լեզու է քան C# կամ Java-ն(սրանք նույն կարգի են)։ Բայց ծայրահեղ օրինակը բերենք. Asembler–ը տեխնիկապես ամենամեծ հնարավորություններն ունի. բայց ո՞վ է հիմա Asembler–ով ծրագիր գրում։ Գրում են, բայց շատ հազվադեպ, խիստ մասնավոր դեպքերում։ Ու ընդհանուր առմամբ, ինչքան ցածր մակարդակի է ծրագրավորման լեզուն, էնքան տեխնիկապես ավելի շատ հնարավորություններ է տրամադրում, բայց դրա փոխարեն ստիպված ես ավելի շատ կոդ գրել, գրածդ կոդում սխալների քանակը սովորաբար ավելի մեծ է լինում։ Հետևաբար, կախված խնդրից, պետք է ընտրել համապատասխան մակարդակի լեզու։
Կոնկրետ C#-ի, Java–ի դեպքում միևնույն խնդրի համար 2-3 անգամ ավելի քիչ կոդ ես գրում քան C++-ի դեպքում, ցուցիչներից հրաժարվելու, հիշողությունն ավտոմատ ազատելու տեխնոլոգիայի (Garbage Collaction) ներմուծման և այլ տարբերությունների արդյունքում սխալների հավանականությունը կտրուկ ընկնում է։ Նաև անվտանգությունն է մեծանում։ Հետևաբար շուկայում առկա խնդիրների մեծ մասի դեպքում C#-ը, Java–ն ավելի նախընտրելի են։
Իմիջիայլոց, որքան գիտեմ, Microsoft-ը նախատեսում է, որ ապագայում ցուցիչների օգտագործմամբ, այսպես ասած՝ unsafe կոդով ծրագրերը կարող են օպերացիոն համակարգի կողմից արգելվել կամ գոնե զգուշացվել որպես վտանգավոր ծրագրեր, քանի որ ցուցիչները թույլ են տալիս կոնկրետ հիշողության հասցեների դիմել։ Սա մոտավոր լսել եմ. ճշգրիտ ինֆորմացիա չի։

Ինչ վերաբերում է պլատֆորմից անկախ լինելուն, անկախությունը երկու իմաստով կարելի է հասկանալ։ C#–ը չնայած տեսականորեն կարող է պլատֆորմից անկախ լինել, եթե այլ ՕՀ–երի համար .NET Framework ստեղծվի, բայց տվյալ պահին որքան գիտեմ չկա ու արդյունքում .NET–ով գրված ծրագիրը կարող է աշխատել միայն Windows-ի վրա։
Իսկ C++ -ով գրված ծրագիրը կարող է աշխատել ցանկացած ՕՀ–ում ու էդ իմաստով անկախ է, բայց աշխատացնելու համար պահանջում է կոմպիլացիա տվյալ ՕՀ–ում։
Մինչդեռ Java-ի դեպքում պլատֆորմից անկախությունը առկա է ցանկացած իմաստով։ Այն աշխատում է տարբեր պլատֆորմներում, քանի որ բոլոր տարածված ՕՀ–երի համար կա ստեղծված Java վիրտուալ մեքենա։ Ու ի տարբերություն C++ -ի, ամեն մի ՕՀ–ի համար կոմպիլացիա չի պահանջում. որևէ ՕՀ–ում compile արած Java ծրագիրը կարելի է աշխատացնել ցանկացած ՕՀ–ում։ Նույնիսկ գրաֆիկական User Interface-ի դեպքում։

Elmo
26.11.2008, 14:10
Ինչ վերաբերում է պլատֆորմից անկախ լինելուն, անկախությունը երկու իմաստով կարելի է հասկանալ։ C#–ը չնայած տեսականորեն կարող է պլատֆորմից անկախ լինել, եթե այլ ՕՀ–երի համար .NET Framework ստեղծվի, բայց տվյալ պահին որքան գիտեմ չկա ու արդյունքում .NET–ով գրված ծրագիրը կարող է աշխատել միայն Windows-ի վրա։
Իսկ C++ -ով գրված ծրագիրը կարող է աշխատել ցանկացած ՕՀ–ում ու էդ իմաստով անկախ է, բայց աշխատացնելու համար պահանջում է կոմպիլացիա տվյալ ՕՀ–ում։

Կարծեմ MAC-OS -ի վրա արդեն լիարժեք աշխատող .NET Framework կա, իսկ Linux -ի համար կիսատ գրած ա: Լրիվ հավաստի տեղեկություններ չեն: Կհայտնվե՞ն .NET Framework բոլոր ՕՀ-երի վրա: Միանշանակ այո, որովհետև հենց իրենք Linux ծրագրավորողները միշտ էլ աշխատում են ինտեգրացնել Windows-ի տակ գրված ծրագրերը: C# -ի ամենահզոր ու կարևոր առավելությունը C++ ի կատմամբ հենց միջանկյալ կոդն է: Գրված ծրագիրը մինչև վերջ չի վերածվում պլատֆորմից կախված ինստրուկցիայի, այլ դառնում է միջանկյալ կոդ MSIL: .NET Framework -ը նեռառում է Just In Time Compiler, որը կոմպիլյացիա է անում միջանկյալ կոդը՝ մինչև պլատֆորմից կախված ինստրուկիցա: Վերը նշվածը շատ նման է JAVA -ի նմանակմանը, բայց հավատացնում եմ որ .NET տեխնոլոգիան ենքան ստաբիլ ու ավելի հարազատ ա ՕՀ-ին, որ մի քանի անգամ հեշտանում ա թէ ծրագրավորողի, թե ծրագրի արդյունավետությունը: Եթե .NET տեխնոլոգիան ինտեգրվեց բոլոր ՕՀ-երում կարելի կլինի հրաժեշտ տալ JAVA -ին և անցնել J# -ի: Իսկ C++ ը անմահ լեզու ա, դրանով միշտ էլ կաշխատեն ՕՀ գրողները: Ասսեմբլեր-ով կարծեմ մենակ ռազմական նշանակության ծրագրեր են գրում, որտեղ կարևորվում է արագագործությունն ու սխալների բացառումը: Օրինակ՝ չեմ պատկերացնում, որ ՆԱՍԱ-ն իր հրթիռի բորդ կոմպյուտերի վրա 800 ԳԲ ծավալով սոֆթ տեղադրի, դա կմաքրի ասսեմբլերով ու կսարքի մի քանի մեգաբայթանոց փոքրիկ սոֆթ:

ars83
26.11.2008, 17:14
Իսկ C++ ը անմահ լեզու ա, դրանով միշտ էլ կաշխատեն ՕՀ գրողները: Ասսեմբլեր-ով կարծեմ մենակ ռազմական նշանակության ծրագրեր են գրում, որտեղ կարևորվում է արագագործությունն ու սխալների բացառումը: Օրինակ՝ չեմ պատկերացնում, որ ՆԱՍԱ-ն իր հրթիռի բորդ կոմպյուտերի վրա 800 ԳԲ ծավալով սոֆթ տեղադրի, դա կմաքրի ասսեմբլերով ու կսարքի մի քանի մեգաբայթանոց փոքրիկ սոֆթ:

C++ -ով գրված հսկայածավալ գիտական հաշվարկների գրադարաններ կան։ Օրինակ՝ AliROOT միջավայրը (http://aliceinfo.cern.ch/Offline/) ՝միջուկային ֆիզիկայի բնագավառում։ Աշխատում է gcc-ով Linux-ի տակ (կարծեմ, Mac-ի համարել ունեն), ոչ մի .NET-ի կարիք չի զգում։ Նման ծրագրերը (applications), օրինակ, դժվար թե փոխադրվեն C# -ի կամ մեկա այլ լեզվի։

total_abandon
26.11.2008, 17:21
Կարծեմ MAC-OS -ի վրա արդեն լիարժեք աշխատող .NET Framework կա, իսկ Linux -ի համար կիսատ գրած ա: Լրիվ հավաստի տեղեկություններ չեն: Կհայտնվե՞ն .NET Framework բոլոր ՕՀ-երի վրա: Միանշանակ այո, որովհետև հենց իրենք Linux ծրագրավորողները միշտ էլ աշխատում են ինտեգրացնել Windows-ի տակ գրված ծրագրերը: C# -ի ամենահզոր ու կարևոր առավելությունը C++ ի կատմամբ հենց միջանկյալ կոդն է: Գրված ծրագիրը մինչև վերջ չի վերածվում պլատֆորմից կախված ինստրուկցիայի, այլ դառնում է միջանկյալ կոդ MSIL: .NET Framework -ը նեռառում է Just In Time Compiler, որը կոմպիլյացիա է անում միջանկյալ կոդը՝ մինչև պլատֆորմից կախված ինստրուկիցա: Վերը նշվածը շատ նման է JAVA -ի նմանակմանը, բայց հավատացնում եմ որ .NET տեխնոլոգիան ենքան ստաբիլ ու ավելի հարազատ ա ՕՀ-ին, որ մի քանի անգամ հեշտանում ա թէ ծրագրավորողի, թե ծրագրի արդյունավետությունը: Եթե .NET տեխնոլոգիան ինտեգրվեց բոլոր ՕՀ-երում կարելի կլինի հրաժեշտ տալ JAVA -ին և անցնել J# -ի: Իսկ C++ ը անմահ լեզու ա, դրանով միշտ էլ կաշխատեն ՕՀ գրողները: Ասսեմբլեր-ով կարծեմ մենակ ռազմական նշանակության ծրագրեր են գրում, որտեղ կարևորվում է արագագործությունն ու սխալների բացառումը: Օրինակ՝ չեմ պատկերացնում, որ ՆԱՍԱ-ն իր հրթիռի բորդ կոմպյուտերի վրա 800 ԳԲ ծավալով սոֆթ տեղադրի, դա կմաքրի ասսեմբլերով ու կսարքի մի քանի մեգաբայթանոց փոքրիկ սոֆթ:

Ներկա պահին Assembler-ով լիքը գործ ա արվում մասնավորապես, դրայվերների ծրագրավորումը, չիպերի, միկրոսխեմաների ծրագրավորումը: Իսկ Java-ին հրաժեշտ տալու մասին ասեմ, որ Java-ն անփոխարինելի ա ու կլինի, վերջիվերջո սաղ ԿՊԿ-ների, հեռախոսների սոֆտը գրվում ա Java-ով: Ու դա հենց նենց չի.;)

Արիացի
28.11.2008, 14:02
C++ vs C# վեճի վերաբերյալ։
Իհարկե, C++ –ը տեխնիկապես ավելի շատ հնարավորություններ ունի, քան C#–ը, քանի որ այն համեմատաբար ավելի ցածր մակարդակի լեզու է քան C# կամ Java-ն(սրանք նույն կարգի են)։ Բայց ծայրահեղ օրինակը բերենք. Asembler–ը տեխնիկապես ամենամեծ հնարավորություններն ունի. բայց ո՞վ է հիմա Asembler–ով ծրագիր գրում։ Գրում են, բայց շատ հազվադեպ, խիստ մասնավոր դեպքերում։ Ու ընդհանուր առմամբ, ինչքան ցածր մակարդակի է ծրագրավորման լեզուն, էնքան տեխնիկապես ավելի շատ հնարավորություններ է տրամադրում, բայց դրա փոխարեն ստիպված ես ավելի շատ կոդ գրել, գրածդ կոդում սխալների քանակը սովորաբար ավելի մեծ է լինում։ Հետևաբար, կախված խնդրից, պետք է ընտրել համապատասխան մակարդակի լեզու։
Կոնկրետ C#-ի, Java–ի դեպքում միևնույն խնդրի համար 2-3 անգամ ավելի քիչ կոդ ես գրում քան C++-ի դեպքում, ցուցիչներից հրաժարվելու, հիշողությունն ավտոմատ ազատելու տեխնոլոգիայի (Garbage Collaction) ներմուծման և այլ տարբերությունների արդյունքում սխալների հավանականությունը կտրուկ ընկնում է։ Նաև անվտանգությունն է մեծանում։ Հետևաբար շուկայում առկա խնդիրների մեծ մասի դեպքում C#-ը, Java–ն ավելի նախընտրելի են։
Իմիջիայլոց, որքան գիտեմ, Microsoft-ը նախատեսում է, որ ապագայում ցուցիչների օգտագործմամբ, այսպես ասած՝ unsafe կոդով ծրագրերը կարող են օպերացիոն համակարգի կողմից արգելվել կամ գոնե զգուշացվել որպես վտանգավոր ծրագրեր, քանի որ ցուցիչները թույլ են տալիս կոնկրետ հիշողության հասցեների դիմել։ Սա մոտավոր լսել եմ. ճշգրիտ ինֆորմացիա չի։

Ինչ վերաբերում է պլատֆորմից անկախ լինելուն, անկախությունը երկու իմաստով կարելի է հասկանալ։ C#–ը չնայած տեսականորեն կարող է պլատֆորմից անկախ լինել, եթե այլ ՕՀ–երի համար .NET Framework ստեղծվի, բայց տվյալ պահին որքան գիտեմ չկա ու արդյունքում .NET–ով գրված ծրագիրը կարող է աշխատել միայն Windows-ի վրա։
Իսկ C++ -ով գրված ծրագիրը կարող է աշխատել ցանկացած ՕՀ–ում ու էդ իմաստով անկախ է, բայց աշխատացնելու համար պահանջում է կոմպիլացիա տվյալ ՕՀ–ում։
Մինչդեռ Java-ի դեպքում պլատֆորմից անկախությունը առկա է ցանկացած իմաստով։ Այն աշխատում է տարբեր պլատֆորմներում, քանի որ բոլոր տարածված ՕՀ–երի համար կա ստեղծված Java վիրտուալ մեքենա։ Ու ի տարբերություն C++ -ի, ամեն մի ՕՀ–ի համար կոմպիլացիա չի պահանջում. որևէ ՕՀ–ում compile արած Java ծրագիրը կարելի է աշխատացնել ցանկացած ՕՀ–ում։ Նույնիսկ գրաֆիկական User Interface-ի դեպքում։
Հիմնականում համաձայն եմ: Բայց իմ կարծիքով համեմատությունը Assembler-ի հետ տեղին չի, քանի որ C++-ը ի տարբերություն Assembler-ի օբյեկակողմնորոշված է: Կարելի է սենց ասել. C++ ամենացածր մակարդակի օբյեկտակողմնորոշված ծրագրավորման լեզուն է: Եվ էդ պատճառով C++-ը դառնում ոնց որ օբյեկտակողմնորոշված ծրագրավորման լեզուների Assembler: Կա ծրագրավորման ավելի բարձր մակարդակ` generic programming, որը նույնպես կարելի է իրականացնել C++-ով: Բայց հաստատ C#-ով կամ Java-ով դա հնարավոր չի անել, քանի որ դրանց մեջ բացակայում է շաբլոնները: Եվ հետևաբար C#-ն ու Java-ն էնքանով են բարձր C++-ից, որ հեշտացնում են ծրագրավորողի գործը, ինչ որ բաներ վերցնելով իրենց վրա: Օրինակ ցուցիչների բացակայությունը: Բայց դրա արդյունքում աշխատանքն է դանդաղում ու ծախսված հիշողությունն է մեծանում:
Ու բացի դրանից, ինչպես գրում է Մեյերսը C++-ը դա մի ծրագրավորման լեզու չի դա 4 ծրագրավորման տեխնիկաների համակցություն է.
1. Ստրուկտուրային ծրագրավորում, քանի որ C++-ը առաջին հերթին C է, իսկ C-ն ստրուկտուրալ ծրագրավորման լեզու է, սրա հետևանքն է իմ կողմից այնքան սիրված ցուցիչները:
2. Օբյեկտակողմնորոշված ծրագրավորում, քանի որ այն ունի կլասսների գաղափար և օբյեկտակողմնորոշված ծրագրավորման բոլոր սկզբունքները` ինկապսուլացիան, ժառանգականությունը և պոլիմորֆիզմը, ապահովում է:
3. Generic programming (այ էս տերմինը հայերեն չգիտեմ:)), որը իրականացվում է շաբլոնների միջոցով
4. STL: Դե սրա մասին էլ չեմ ասում միայն այն, որ C++-ը ունի STL թույլ է տալիս ինձ հրաժարվել մնացած բոլոր լեզուների օգտագործումից:

Եթե որևէ մեկը տիրապետում է C++-ի այս 4 հնարավորություններին, ապա հազիվ թե որևէ այլ լեզվի մեջ ինչ-որ առավելություն գտնի:

Արշակ
28.11.2008, 17:25
Կարծեմ MAC-OS -ի վրա արդեն լիարժեք աշխատող .NET Framework կա, իսկ Linux -ի համար կիսատ գրած ա: Լրիվ հավաստի տեղեկություններ չեն: Կհայտնվե՞ն .NET Framework բոլոր ՕՀ-երի վրա: Միանշանակ այո, որովհետև հենց իրենք Linux ծրագրավորողները միշտ էլ աշխատում են ինտեգրացնել Windows-ի տակ գրված ծրագրերը:
Elmo, մի հինգ տարի առաջ դեռևս Microsoft–ը խոսք էր տալիս որ Linux–ի համար .NET Framework–ը «հեսա» պատրաստ կլինի։ Ու կարծեմ տենց ամեն տարի։ Ու մինչև հիմա պատրաստ չի։ MAC–ի համար տեղյակ չեմ։ Ամեն դեպքում մի քանի ամիս առաջ էս թեման էլի ֆորումում բացվել էր, համոզվելու համար ինետում քչփորեցի ու ոչ մի բան չգտա այլ ՕՀ–երում .NET Framework–ի վերաբերյալ։ Կարծեմ ասում էին Linux-ի համար ինչ–որ մեկը ինչ–որ բան սարքել է, բայց ոնց հասկացա բավականաչափ վստահելի լուրջ բան չէր։ Նենց որ, ես էնքան էլ հույս չունեմ, թե մոտ ապագայում .NET–ը պլատֆորմից անկախ կդառնա։



C# -ի ամենահզոր ու կարևոր առավելությունը C++ ի կատմամբ հենց միջանկյալ կոդն է: Գրված ծրագիրը մինչև վերջ չի վերածվում պլատֆորմից կախված ինստրուկցիայի, այլ դառնում է միջանկյալ կոդ MSIL: .NET Framework -ը նեռառում է Just In Time Compiler, որը կոմպիլյացիա է անում միջանկյալ կոդը՝ մինչև պլատֆորմից կախված ինստրուկիցա: Վերը նշվածը շատ նման է JAVA -ի նմանակմանը,
Սա, ինչպես նաև մի քանի այլ սկզբունքներ Java-ից են փոխառել։ ;) Օրինակ նաև հասցեական ցուցիչներից հրաժարվելը։



…բայց հավատացնում եմ որ .NET տեխնոլոգիան ենքան ստաբիլ ու ավելի հարազատ ա ՕՀ-ին, որ մի քանի անգամ հեշտանում ա թէ ծրագրավորողի, թե ծրագրի արդյունավետությունը: Եթե .NET տեխնոլոգիան ինտեգրվեց բոլոր ՕՀ-երում կարելի կլինի հրաժեշտ տալ JAVA -ին և անցնել J# -ի: …
.NET–ը շատ հարազատ է կոնկրետ Windows ՕՀ–ին, հետևաբար կարծում եմ դժվար կլինի իրականացնելը այլ ՕՀ–երում։
Ինչ վերաբերվում է Java-ից հրաժարվելուն, չեմ կարծում, քանի որ էս պահին որքան գիտեմ Java-ն պոպուլյարությամբ հաղթում է ու առանձնապես սկզբունքորեն լուրջ առավելություն չունի C# -ը Java-ի նկատմամբ (իրար շատ նման տեխնոլոգիաներ են ու զուգահեռ զարգանում են)։ Իսկ ես պահին Java-ն գոնե պլատֆորմից ռեալ անկախությամբ առավելություն ունի։
Մի ոչ պակաս կարևոր հանգամանք էլ երևի գինն է։ Սենց հարցերից էնքան էլ տեղյակ չեմ, բայց ինչքան գիտեմ Java development–ը շատ ավելի էժան է նստում քան .NET–ի դեպքում։


Հիմնականում համաձայն եմ: Բայց իմ կարծիքով համեմատությունը Assembler-ի հետ տեղին չի, քանի որ C++-ը ի տարբերություն Assembler-ի օբյեկակողմնորոշված է: Կարելի է սենց ասել. C++ ամենացածր մակարդակի օբյեկտակողմնորոշված ծրագրավորման լեզուն է: Եվ էդ պատճառով C++-ը դառնում ոնց որ օբյեկտակողմնորոշված ծրագրավորման լեզուների Assembler:

Համաձայն եմ, C++-շատ հեռու է Assembler-ից։ Ստեղ երկու կարծիք լինել չի կարող։ Բայց հարցը դրանում չի։ Ես էլ նշեցի, որ համեմատությունը ծայրահեղ է մաշտաբների առումով, քանի որ C++-ը ամեն դեպքում բարձր մակարդակի լեզու է, բայց տեղին է էն իմաստով, որ ինչքան ցածր է լեզվի մակարդակը, էնքան օպտիմալ գրելու հնարավորությունը մեծ է, բայց ավելի շատ կոդ ես գրում, ու հակառակը։ Իսկ ծայրահեղ օրինակ բերելը իրավիճակն ավելի պարզ երևացող դարձնելու համար է։


Կա ծրագրավորման ավելի բարձր մակարդակ` generic programming, որը նույնպես կարելի է իրականացնել C++-ով: Բայց հաստատ C#-ով կամ Java-ով դա հնարավոր չի անել, քանի որ դրանց մեջ բացակայում է շաբլոնները:

Նման բան Java-ում էլ կա սկսած Java 5.0-ից;) հենց Generics էլ կոչվում է։ Կարծեմ C# -ում էլ էին ավելացրել, բայց համոզված չեմ։


Եվ հետևաբար C#-ն ու Java-ն էնքանով են բարձր C++-ից, որ հեշտացնում են ծրագրավորողի գործը, ինչ որ բաներ վերցնելով իրենց վրա: Օրինակ ցուցիչների բացակայությունը: Բայց դրա արդյունքում աշխատանքն է դանդաղում ու ծախսված հիշողությունն է մեծանում:
Մասամբ համաձայն եմ, չնայած Java–ի դանդաղությունը ավելի շատ միֆ է քան իրականություն։ Բայց սա այլ թեմա է, եթե հետաքրքրի կարող ենք առանձին քննարկել։
Բայց ամեն դեպքում ինչպես արդեն նշվեց, Java–ով շատ ավելի քիչ ժամանակ ես ծախսում ծրագիր գրելու համար։ Ու սեփական փորձով կարող եմ ասել, որ եթե ժամանակը բոլ–բոլ չի, ապա հաճախ ավելի լավ է ժամանակդ ծախսես լեզվից անկախ խնդրիդ ալգորիթմը կատարելագործելու վրա, որ ավելի արագ լինի, քան language-specific օպտիմիզացիաներ անես։



Ու բացի դրանից, ինչպես գրում է Մեյերսը C++-ը դա մի ծրագրավորման լեզու չի դա 4 ծրագրավորման տեխնիկաների համակցություն է.
1. Ստրուկտուրային ծրագրավորում, քանի որ C++-ը առաջին հերթին C է, իսկ C-ն ստրուկտուրալ ծրագրավորման լեզու է, սրա հետևանքն է իմ կողմից այնքան սիրված ցուցիչները:
2. Օբյեկտակողմնորոշված ծրագրավորում, քանի որ այն ունի կլասսների գաղափար և օբյեկտակողմնորոշված ծրագրավորման բոլոր սկզբունքները` ինկապսուլացիան, ժառանգականությունը և պոլիմորֆիզմը, ապահովում է:
3. Generic programming (այ էս տերմինը հայերեն չգիտեմ:)), որը իրականացվում է շաբլոնների միջոցով
4. STL: Դե սրա մասին էլ չեմ ասում միայն այն, որ C++-ը ունի STL թույլ է տալիս ինձ հրաժարվել մնացած բոլոր լեզուների օգտագործումից:

Եթե որևէ մեկը տիրապետում է C++-ի այս 4 հնարավորություններին, ապա հազիվ թե որևէ այլ լեզվի մեջ ինչ-որ առավելություն գտնի:
2–րդի վերաբերյալ։ Չնայած C++ ում օբյեկտային կողմնորոշված ծրագրավորման հնարավորություն լիովին կա, բայց պրակտիկորեն էն խորությամբ ու մասսայականությամբ չի կիրառվում, ինչպես Java-ի ու C#-ի դեպքում ու արդյունքում OOP-ի առավելությունների հաշվին Java-ն ու C#-ը մի քանի տարում նենց թափով զարգացան, հարուստ պատրաստի գրադարաններ ստեղծվեցին, որոնք առանց OOP-ի հնարավոր չէր տենց արագ ստեղծել։
Generic–ների մասին արդեն ասեցի, իսկ STL–ի վերաբերյալ, ճիշտն ասած C++ քիչ գիտեմ ու STL–ին թեթևակի եմ ծանոթ, բայց համեմատե՞լ ես արդյոք Java-ի կամ .NET-ի գրադարանների հետ։ Կարծում եմ, եթե համեմատես տենց վստահ չես ասի։ ;)

Արիացի
29.11.2008, 00:21
Դե C#-ի ամեն ինչն էլ java-ից ա փոխառնված: Ուղղակի դե Microsoft-ը հարուստ ֆիրմայա, լավ ռասկրուտկայա անում: Տենց մի անեկդոտ կա: Բիլ Գեյթսը Java-ով մի քանի օր ծրագրավորում ա ու ասում. <<Արա բայց էս java-ն ինչքանա C#-ի նման>>:): Մինչդեռ java-ն երբ մշակվում էր Microsoft-ը հլա նոր նոր կայանում էր: Ու ընդհանրապես ըստ ծրագրավորողների մեջ անցկացված հարցումների Java-ն ամենատարածված լեզուն ա:
Բայց մեկ ա Java-ն էլ C#-ն էլ շատ դանդաղ էն ու ոչ էֆեկտիվ հիշողության տեսակետից: Իհարկե կոդ քիչ ես գրում, բայց իմ պատկերացմամբ Java-ով գրած կոդը եթե գրենք C++-ով կստացվի ասենք մի 20% ավել կոդ: Որովհետև վերջ ի վերջո շատ մեծ տարբերություն չի կարող տալ: Չէ որ եթե կլաս ես գրում, էդ նույն կլասը բոլոր լեզուներով էլ նույն չափը ունի ընդհանուր հաշվով: Հետո եթե Java-ով տենց շատ գրադարաններ կան, ապա էդ նույն գրադարանները C++-ով էլ կա և մի բան էլ ավել: Մենակ STL-ը և boost-ը հերիք են հաշվարկային բոլոր խնդիրները կոմպակտ և արագ լուծելու համար: Իսկ գրաֆիկական ինտերֆեյսի համար էլ ընտրում են Qt-ը և բոլոր խնդիրները լուծվում են արագ և որակով: Գրադարանները բազմազան են ուղղակի պետք ա օգտագործման կարիք լինի, որ իմանանք դրա մասին: Ու ընդհանրապես ծրագրավորողին բավական է հետևյալ գործիքները իր առջև ծառացած ցանկացած խնդիր լուծելու համար` Linux, C++, PHP, MySQL: Ցանկացած խնդիր կարելի է էսքանով լուծել:

aerosmith
04.12.2008, 17:11
մի բան հարցնեմ, իմ մոտ վիզուալ ստուդիո 8-ա , ու երբ օգտագործում եմ POW ֆունկցիան բերումա սենց եռռոռ՝Error 2 error C2668: 'pow' : ambiguous call to overloaded function
խնդրում եմ օգնեք, ինչից կարողա լինի՞։

Elmo
04.12.2008, 18:28
մի բան հարցնեմ, իմ մոտ վիզուալ ստուդիո 8-ա , ու երբ օգտագործում եմ POW ֆունկցիան բերումա սենց եռռոռ՝Error 2 error C2668: 'pow' : ambiguous call to overloaded function
խնդրում եմ օգնեք, ինչից կարողա լինի՞։

Ո՞ր POW -ի մասին ա խոսքը: 3 հատ POW կա, ավելի ճիշտ pow, method

Этот API поддерживает платформу .NET Framework и не должен вызываться непосредственно из вашего кода.

Пространство имен: Microsoft.JScript
Сборка: Microsoft.JScript (в Microsoft.JScript.dll)


[JSFunctionAttribute(JSFunctionAttributeEnum.None, JSBuiltin.Math_pow)]
public static double pow(
double dx,
double dy
)

կա նույնի դաշտը

և կա Pow
Возвращает указанное число, возведенное в указанную степень.

Пространство имен: System
Сборка: mscorlib (в mscorlib.dll)


public static double Pow(
double x,
double y
)

MSDN -ում ամեն ինչ կգտնես

Ավելացվել է 1 րոպե անց

Error 2 error C2668: 'pow' : ambiguous call to overloaded function

ոնց հասկանում եմ դու հենց pow ես կանչում, եթե ուզում ես թիվն աստիճան բարձրացնես Pow կանչի;

aerosmith
04.12.2008, 18:45
հա ես հենց աստիճան բարձրացնող, math.h-i POW ֆունկցիան նկատի ունեմ

Արիացի
05.12.2008, 10:56
մի բան հարցնեմ, իմ մոտ վիզուալ ստուդիո 8-ա , ու երբ օգտագործում եմ POW ֆունկցիան բերումա սենց եռռոռ՝Error 2 error C2668: 'pow' : ambiguous call to overloaded function
խնդրում եմ օգնեք, ինչից կարողա լինի՞։

Կարողա արգումենտները սխալ են: Հաստատ double կամ double-ի բերվող տիպ էս փոխանցում?

aerosmith
05.12.2008, 16:31
չե տղեք ջան., սաղ չոտկի են, էի իմ հաա հանելուկ եղավ, տարա ինստիտուտ, իրանց ստուդիօ-6-ի վրեն չոտկի աշխատեց

ars83
05.12.2008, 16:36
Ու ընդհանրապես ծրագրավորողին բավական է հետևյալ գործիքները իր առջև ծառացած ցանկացած խնդիր լուծելու համար` Linux, C++, PHP, MySQL: Ցանկացած խնդիր կարելի է էսքանով լուծել:
PHP չէ, այլ Perl, շատ-շատ Python, լավ: :)

Արիացի
05.12.2008, 17:45
չե տղեք ջան., սաղ չոտկի են, էի իմ հաա հանելուկ եղավ, տարա ինստիտուտ, իրանց ստուդիօ-6-ի վրեն չոտկի աշխատեց

Microsoft-ին նամակ գրի, ասա վոր բագ ունեն Visual Studio8-ում::)

Ավելացվել է 1 րոպե անց

PHP չէ, այլ Perl, շատ-շատ Python, լավ: :)

Հա: Էդքան էլ կարևոր չի: Ասածս էն ա, որ մի հատ կարգին ՕՍ լինի, C++, մի հատ բազա ու մի հատ էլ սկրիպտային լեզու::)

CCoder
07.12.2008, 22:13
math.h գրադարանի մեջ կան pow ֆունկցիայի հետևյալ տարբերակները


double pow(double _X, double _Y);
double pow(double _X, int _Y);
float pow(float _X, float _Y);
float pow(float _X, int _Y);
long double pow(long double _X, long double _Y);
long double pow(long double _X, int _Y);Օրինակ եթե գրենք՝

int x=5, y=6;
pow(x, y);
double pow(double _X, int _Y);
float pow(float _X, int _Y);
long double pow(long double _X, int _Y);Այս 3 տարբերակն էլ կարող են ընտրվել, Visual Studio 6-ի կոմպիլյատորը, որպես int տիպին ամենամոտ ընտրում է float-ով տարբերակը։ Բայց հնարավոր է, որ ծրագիրը աշխատի այնպիսի թվերի հետ, որոնք չտեղավորվեն float-ում, դրա համար էլ խստացրել են լեզվի կանոնները այդ ընտրությունը թողնելով ծրագրավորողի վրա։
Սխալն էլ թարգմանվում է, որպես "Վերաբեռնված ֆունկցիայի անորոշ կանչ"

Անանուն
22.12.2008, 00:36
ambiguous call to overloaded function - բեռնավորված ֆունկցիայի երկիմաստ կանչ, քանի որ int - ը կարելի է ձևափոխել և float-ի և double - ի, կոմպիլյատորը չի կարող որոշել թե որը ընտրել: Նման դեպքերում ավելի ճիշտ է գրել pow(4.0, 5.0):

Անանուն
04.01.2009, 21:29
Stroustrup-ի նոր գիրքը http://www.research.att.com/~bs/programming.html

aerosmith
16.01.2009, 21:45
մի բան հարցնեմ, ուրեմն մոտս վիզուալ ստուդիո 2005-ա։ ու երբ ուզում եմ STEP INTO-ով compile, ինքը մտնումա նաև օրինակ SCANF kam PRINTF ֆունկցիաների մեջ էլ, ոնց կարամ անեմ, որ միայն իմ գրած ֆունկցիաների մեջ մտնի???
Կանխավ շնորհակալ եմ:)

Ռեդ
16.01.2009, 21:46
մի բան հարցնեմ, ուրեմն մոտս վիզուալ ստուդիո 2005-ա։ ու երբ ուզում եմ STEP INTO-ով compile, ինքը մտնումա նաև օրինակ SCANF kam PRINTF ֆունկցիաների մեջ էլ, ոնց կարամ անեմ, որ միայն իմ գրած ֆունկցիաների մեջ մտնի???
Կանխավ շնորհակալ եմ:)
Հլա մյուսով փորձի, Step Over չկա՞

aerosmith
16.01.2009, 22:22
Հլա մյուսով փորձի, Step Over չկա՞

կա ստեպ օվեռ, բայց ինձ սթեփ ինտու-ա պետք, որ կարողանամ, տենամ իմ գրած ֆունկցիաների մեջա սխալներս, թե main program-ի

dvgray
17.01.2009, 07:25
Ստրաուստրուպի հարցազրույցը, տրված 98 թվին
"Կամպյուտեր" ամսագրին:
Շատ հետաքրիր է: Խորհուրդ եմ տալիս կարդալ :)

http://cs.mipt.ru/docs/comp/rus/develop/other/stroustrup_interview/index.html

Ներսես_AM
17.01.2009, 09:24
Ստրաուստրուպի հարցազրույցը, տրված 98 թվին
"Կամպյուտեր" ամսագրին:
Շատ հետաքրիր է: Խորհուրդ եմ տալիս կարդալ :)

http://cs.mipt.ru/docs/comp/rus/develop/other/stroustrup_interview/index.html
աաաաաաաաաաա եթե էս ճիշտա, հարգվեց Ստրաուսը :D :D :D

vaheg
17.01.2009, 10:11
աաաաաաաաաաա եթե էս ճիշտա, հարգվեց Ստրաուսը :D :D :D

nope, պարզա որ հորինածա (http://www.research.att.com/~bs/bs_faq.html#impostor)...

Elmo
20.01.2009, 17:46
И. Что?
С. И относительно 'повторно-используемого кода' - Вы когда-нибудь слышали, чтобы хоть одна компания 'повторно-использовала' что-либо?

մենակ ես մասը սպանում ա:
Օրինակ ես էլ արդեն քանի տարբերակով փորձեցի հասկանալ ինչի՞ ա վերջիվեջո պետք էդ անտեր կոդի կրկնակի օգտագործումը: Ու տենց էլ չհասկացա, էլի փորձեցի ինչ որ ուժ գտնել մեջս ու շարունակել կարդալ կոդի կրկնակի օգտագործման մասին գլուխը.... վերջը գերբնական ուժերը ինձ լքեցին, ու ես պարզապես գրքի էդ հատվածը անտեսեցի, չկարդացի ու անցա առաջ:

Արիացի
23.01.2009, 18:06
Ստրաուստրուպի հարցազրույցը, տրված 98 թվին
"Կամպյուտեր" ամսագրին:
Շատ հետաքրիր է: Խորհուրդ եմ տալիս կարդալ :)

http://cs.mipt.ru/docs/comp/rus/develop/other/stroustrup_interview/index.html

Կամայական մարդ, որ Ստրաուստրուպի գրքերը, կամ գոնե մի հոդված, կարդացել ա, պարզ կհասկանա, որ սա հնարված հոդված ա: Բայց ամեն դեպքում, որոշ ճիշտ բաներ գրած ա մեջը: :)

Elmo
23.01.2009, 18:28
Կամայական մարդ, որ Ստրաուստրուպի գրքերը, կամ գոնե մի հոդված, կարդացել ա, պարզ կհասկանա, որ սա հնարված հոդված ա: Բայց ամեն դեպքում, որոշ ճիշտ բաներ գրած ա մեջը: :)

Ես կարդացել եմ: Ես էլ եմ կարծում, որ հոդվածի 90 տոկոսը հորինվածք ա, բայց էլի շատ լավ հոդված ա: Իսկական ճիշտ քննադատություն ա: Էսքանը ասում եմ, բայց ես ինքս 2 տարի էդ անտեր C++ -ը, ու վերջերես էլ C# -ը «ծամել եմ»:

Արիացի
23.01.2009, 18:34
Ես կարդացել եմ: Ես էլ եմ կարծում, որ հոդվածի 90 տոկոսը հորինվածք ա, բայց էլի շատ լավ հոդված ա: Իսկական ճիշտ քննադատություն ա: Էսքանը ասում եմ, բայց ես ինքս 2 տարի էդ անտեր C++ -ը, ու վերջերես էլ C# -ը «ծամել եմ»:

Քննադատությունը ճիշտ ա, բայց ամեն դեպքում պետք չի կապել սա Ստրաուստրուպի հետ: Մի քիչ էլ չափազանցված ա: Համենայն դեպս "hello world!"-ը էն չափերի չի, ինչ հոդվածում ա նշված: :)
Ճիշտ ա էֆֆեկտիվության հարցով, C++-ը C-ից թույլ ա, բայց էն, որ օբյեկտակողմնորոշված ծրագրավորումը կոդը ավելի հասկանալի ու վերահսկելի ա դարձնում ու թույլ ա տալիս հեշտությամբ մեծ պրոյեկտներ իրականացնել, դա փաստ ա:

Egern.net
25.01.2009, 01:43
98 թվին Ստրաուստրուպի տված հարցազրույցը Computer ժուռնալին իրականում սա է :)
http://www.research.att.com/~bs/ieee_interview.html
http://www.research.att.com/~bs/ieee_interview.pdf

aerosmith
11.03.2009, 19:54
Սենց մի հարց C++-ով կարամ գրածս ծրագիրը սարքեմ ընենց, որ սմարթների վրա քցեմ։
այսինքն ոնց անեմ, որ SIS ֆորմատ դառնա.

Արիացի
19.03.2009, 20:58
Սենց մի հարց C++-ով կարամ գրածս ծրագիրը սարքեմ ընենց, որ սմարթների վրա քցեմ։
այսինքն ոնց անեմ, որ SIS ֆորմատ դառնա.

Դա պտի հատուկ կոմպիլյատոր գտնես ու դրանով կոմպիլյացիա անես կոդդ: Տենց բաների մասին լսել եմ, բայց չեմ օգտագործել: Որ Գուգլով պոիսկ տաս կգտնես:

Հրատացի
26.03.2009, 21:21
Սենց մի հարց C++-ով կարամ գրածս ծրագիրը սարքեմ ընենց, որ սմարթների վրա քցեմ։
այսինքն ոնց անեմ, որ SIS ֆորմատ դառնա.
ստեղ նայի (http://www.winblog.ru/2006/03/31/ippon_310306_01.html)

մի հատ էլ գուգլի :)

aerosmith
19.04.2009, 19:00
ժող ջան սենց մի հարց շատ շտապա պետք
ոնց կարամ TRY-ի մի քանի THROW դնեմ??? ու ամեն մի THROW ունենա իր համապատասխան CATCH-ը
կանխավ շնորհակալ եմ:)

One_Way_Ticket
20.04.2009, 00:08
ոնց կարամ TRY-ի մի քանի THROW դնեմ???Այս նախադասությունը չհասկացա:


ու ամեն մի THROW ունենա իր համապատասխան CATCH-ը
Մի փոքր տեսություն: throw անելուց ինչ-որ տիպի օբյեկտ եք "շպրտում", իսկ catch անելուց` ինչ-որ տիպի օբյեկտ "բռնում": Կոմպիլյատորը վերևից ներքև հերթականությամբ փնտրում է տվյալ try բլոկում catch, որին համապատասխանող տիպի կկարողանա բերել (cast անել) "շպրտված" օբյեկտը: Եթե ոչ մեկը չի համապատասխանում, օբյեկտ "շպրտվում է վերև" և համապատասխան catch-ը փնտրվում է այդտեղ: Եթե ոչ մի տեղ գտնել չի հաջողվում, ծրագրի աշխատանքն ավարտվում է:
Հետևաբար, եթե ուզում եք տարբեր throw-ներ բռնվեն տարբեր catch-երի կողմից, ապա պիտի պարզապես տարբեր տիպի օբյետկներ throw անեք, ընդ որում այդ տիպերը մեկը մյուսի չբերվեն:

aerosmith
20.04.2009, 07:21
ես նկատի ունեի ոնց կարամ տռայ-ի մեջ մի քանի տռօու դնեմ???
խնդրում եմ եթե դժվար չի մի փոքր կոդով, կամ պսիվդակոդով գրի էլի։

One_Way_Ticket
20.04.2009, 14:18
ես նկատի ունեի ոնց կարամ տռայ-ի մեջ մի քանի տռօու դնեմ???
Մի անգամ, բավական վաղուց, գիշերը ժամը մեկն էր, արդեն պատրաստվում էի քնել, հեռախոսազանգ ստացա: Կայացավ այսպիսի խոսակցություն:
- Ալլո
- Բարև Ձեզ
- Բարև Ձեզ
- Ես ուզում եմ Իսպանիա զանգել
- Ի՞նչ
- Ուզում եմ Իսպանիա զանգել
- Զանգեք
- Հիմա՞ զանգեմ
- Այո:
- Շնորհակալություն:

Ինչի համար սա հիշեցի: Ուզում եք try բլոկում մի քանի throw դնե՞լ: Դրեք :D

Ահա օրինակը:

#include <iostream>

class A {};
class B {};

int main()
{
int n;
std::cin >> n;
try
{
if (n % 2 == 0)
throw A();
else
throw B();
}
catch (A)
{
std::cout << "Zuyg";
}
catch (B)
{
std::cout << "Kent";
}
return 0;
}

aerosmith
20.04.2009, 15:22
ասեմ , որ ես հարց էի տալիս, թե ոնց կարամ try-մեջ մի քնի throw դնեմ։ իսկ քո բերած
օրինակը ասեմ չէր համապատասխանում տվյալ իրադրությանը, եթե ես իմանայի էդ անելու ձևը, ես կյանքում չէի հարցնի , ուր մնաց, որ անիմաստ հրապարակեի, որ ուզում եմ նման բան անել։

բայց և ինչևէ շնորհակալ եմ օրինակի համար

Ներսես_AM
20.04.2009, 16:32
ասեմ , որ ես հարց էի տալիս, թե ոնց կարամ try-մեջ մի քնի throw դնեմ։ իսկ քո բերած
օրինակը ասեմ չէր համապատասխանում տվյալ իրադրությանը, եթե ես իմանայի էդ անելու ձևը, ես կյանքում չէի հարցնի , ուր մնաց, որ անիմաստ հրապարակեի, որ ուզում եմ նման բան անել։

բայց և ինչևէ շնորհակալ եմ օրինակի համար
սենց բա՞ն ես ուզում անես :)



try{

}
catch(){
throw A;
throw B;
}

Ց++ չգիտեմ բայց Ջավայում սենց բան գրես կամպիլյատորը կքֆրտի :D Պիտի որ Ց++ում էլ չլինի, տրամաբանություն չկա սենց բան գրելու մեջ :)

One_Way_Ticket
20.04.2009, 16:32
try
{
if (n % 2 == 0)
throw A();
else
throw B();
}
Ինչպես տեսնում ես, try-ի մեջ մի քանի throw է դրած: Եթե դա չէր ուզածդ, հարցն ավելի պարզ ձևակերպիր:

freethinker
21.04.2009, 10:18
throw-ի վրա կարծեմ սահմանափակումներ չկան, երբ ուզում ու որտեղ ուզում ես գրի :blin

Elmo
21.04.2009, 10:44
throw-ի վրա կարծեմ սահմանափակումներ չկան, երբ ուզում ու որտեղ ուզում ես գրի :blin

մի try -ն փակվում ա մի throw -ով, եթե ուրիշ պայմաններ նշված չի: Օրինակ One_Way_Ticket -ի բերած կոդը: Պայմանով ընտրվում ա ուրիշ ճանապարհ:

Dayana
03.05.2009, 21:33
C++-ցիներ, մի հարց ունեմ, որ Դեյտելում չեմ գտնում :( կբացատրեք ինչ է իրենից ներկայացնում Շաբլոն կլասի մասնակի և ընդհանուր մասնագիտացումը (специализация шаблонных классов):
Խնդրում եմ, եթե գիտեք, մի երկու բառով գրեք, վաղը սրանից կուրսային եմ հանձնելու :))

Արտիստ
17.05.2009, 10:28
Փիփլ ջան, c++-ում ինչ-որ բան կա չէ որ աշխատումա binary numeral system-ի հետ? Ավելի կոնկրետ, ինձ պետքա ցանկացած թիվ վերածել երկուականի, ու ինչքան հիշում եմ, մի lib-ի նման բան պտի լինի, որի միջոցով շատ հեշտ ետ կարելիա անել? Հա?:think

One_Way_Ticket
17.05.2009, 13:54
Փիփլ ջան, c++-ում ինչ-որ բան կա չէ որ աշխատումա binary numeral system-ի հետ? Ավելի կոնկրետ, ինձ պետքա ցանկացած թիվ վերածել երկուականի, ու ինչքան հիշում եմ, մի lib-ի նման բան պտի լինի, որի միջոցով շատ հեշտ ետ կարելիա անել? Հա?:think

std::string decimal_to_binary(int x)
{
if (x == 0) return "0";
std::string result;
while (x)
{
result = std::string(x % 2 == 0 ? "0" : "1") + result;
x /= 2;
}
return result;
}

Cyber
08.07.2009, 11:28
Բարեվ բոլորին –––––––––– ինչպես կարելի է LSA dump անել C++ -ով ????

aerosmith
06.08.2009, 01:07
Ժող ջան կարողա ինչ-որ մեկը իմանա սի++ -ում կա այնպի Ֆունկցիա, որը փնտրի իմ ուզզած դիսկի մեջ, բոլոր կատալոգներում, իմ ուզած ֆորմատով բոլոր ֆակլերը, և ասեմք թե անունները .զանգվածի տեսքով վերադարձնի ինձ։

_DEATH_
06.08.2009, 09:59
Ժող ջան կարողա ինչ-որ մեկը իմանա սի++ -ում կա այնպի Ֆունկցիա, որը փնտրի իմ ուզզած դիսկի մեջ, բոլոր կատալոգներում, իմ ուզած ֆորմատով բոլոր ֆակլերը, և ասեմք թե անունները .զանգվածի տեսքով վերադարձնի ինձ։

Եթե խոսքը վիզուալի մասին ա գնում դժվար թե լինի, մայքրոսոֆթը կպած ուզում ա մարդկանց տանջի: Պտի հերթով բոլոր կատալոգներում ֆայլերի անունի տողի կետից հետո եկող մասը համեմատես քո ուզած ֆորմատի հետ:
Կամ էլ Qt ես քցում Find Files Dialog օրինակ կա ու ընդհանրապես ինչ ասես կա օրինակների մեջ ու նենց պարզ ա, որ հավեսդ գալիս ա: Ծրագրի կոդն էլ մի փորձից եմ ասում մոտ 10-15 անգամ փոքր ա: win api 1534 տող, Qt 153 տող, նույն ծրագիրն եմ գրել երկուսով էլ, ուղակի Qt-ի ինտերֆեյսը հազար անգամ ավելի հարմար ա ստացվել ու սիրուն ու մոտ 5-6 անգամ ավելի քիչ ժամանակ եմ ծախսել, եթե ոչ ավելի քիչ:

aerosmith
06.08.2009, 10:02
Որ խնդրեմ QT-ով գրածդ վին.ափփլիքեյշններից մի հատ կուղարկես մեյլիս՞՞՞՞ուղղակի հետաքրքրումա դրանով գրվածի դիզայնը

_DEATH_
06.08.2009, 10:20
Մի հատ գիրք եմ կարդում, առաջի երեք օրինակ կցում եմ ստեղ տես: 3-ն էլ ինտերֆեյսով ծրագրեր են, ոչ թե դոս: Ընդհանրապես Qt-ի հիմնական գաղափարը SIGNAL-SLOT-նա: Խոսքի quit-ը նայի, կնոպկայա, clicked() սխմվելու սիգնալը ստանում ա, սլոտում եղած quit() ֆունկցիան աշխատում ա: age-ը ամենածավալունը նկարը կցել եմ: spinBox-ն ու slider-ը իրար հետ կապված են, մեկը փոխում ես մյուսն էլ ա փոխվում: Ու տես ինչ ճկուն ա գլխավոր պատուհանը ցանկացած բան կարա լինի, դաժե դիալոգ:

Cyber
15.08.2009, 18:25
Մի հատ գիրք եմ կարդում, առաջի երեք օրինակ կցում եմ ստեղ տես: 3-ն էլ ինտերֆեյսով ծրագրեր են, ոչ թե դոս: Ընդհանրապես Qt-ի հիմնական գաղափարը SIGNAL-SLOT-նա: Խոսքի quit-ը նայի, կնոպկայա, clicked() սխմվելու սիգնալը ստանում ա, սլոտում եղած quit() ֆունկցիան աշխատում ա: age-ը ամենածավալունը նկարը կցել եմ: spinBox-ն ու slider-ը իրար հետ կապված են, մեկը փոխում ես մյուսն էլ ա փոխվում: Ու տես ինչ ճկուն ա գլխավոր պատուհանը ցանկացած բան կարա լինի, դաժե դիալոգ:
չնայեցի ինչ ես արել բայց C++ -ն ու Qt -ն համեմատելը
էտ նույնն ա ոնց որ Մերսեդեսը ու զապը համեմատես : - )
( լավ զապը չէ ՝ 07-ը ;-) )

_DEATH_
15.08.2009, 18:43
չնայեցի ինչ ես արել բայց C++ -ն ու Qt -ն համեմատելը
էտ նույնն ա ոնց որ Մերսեդեսը ու զապը համեմատես : - )
( լավ զապը չէ ՝ 07-ը ;-) )

Ինչ ես ուզում ասած լնես բան չհասկացա, ով ա C++ -ն ու Qt -ն համեմատել՞՞՞ :o

C++-ը ծրագրավորման լեզու ա, իսկ Qt -ն ամենահաջող քռոս-պլատֆորմ UI գրելու framework-ը C++_ի համար:
Գոնե իմացի խոսքը ինչի մասին ա նոր գրի:

Cyber
03.09.2009, 20:28
ճիշտն ասած պարապ էի դրա համար էտի պոստեցի

իսկ հիմա լուրջ հարց տամ
Որտեղից կարող եմ քաշել C++ -ը
( ձեր կայքու բագ կա - "Միացնել հայերենը"-ի ժամանակ Delete-ը կետ ա դնում )

One_Way_Ticket
03.09.2009, 22:54
Որտեղից կարող եմ քաշել C++ -ը
Ինտերնետից (ինչպիսի հարց, այնպիսի պատասխան):

Cyber
04.09.2009, 17:13
Microsoft Visual C++ 6.0 - ը
Պարզ ա որ ինտերնետից ( հո թթի արաղ չի որ թթից քաշենք :) ) :

jorazak
25.11.2009, 01:41
Microsoft Visual C++ 6.0 - ը
Պարզ ա որ ինտերնետից ( հո թթի արաղ չի որ թթից քաշենք :) ) :

Երևի ի նկատի ունես C++ թարգմանիչներ (компилятор) որտեղից կարելի է բեռնել... Visual Studio-ի անվճար (express) տարբերակները կարող ես գտնել հենց microsoft.com-ից:

jorazak
25.11.2009, 02:06
Սենց մի հարց C++-ով կարամ գրածս ծրագիրը սարքեմ ընենց, որ սմարթների վրա քցեմ։
այսինքն ոնց անեմ, որ SIS ֆորմատ դառնա.

SDK-ներ կան այստեղ
http://www.forum.nokia.com/Technology_Topics/Development_Platforms/Symbian_C++/

Օգտակար դակումենտացիա կա այստեղ
http://www.symbiantutorial.org ու
http://developer.symbian.org - ում

Հա ու հենց S60 պլատֆորմայի վրա աշխատող Python լեզվի թարգմանիչ կա, որը կարելի է ներբեռնել այստեղից
http://handheld.softpedia.com/get/Developer-Tools/Application-Builders/Python-for-S60-63457.shtml

_DEATH_
25.11.2009, 12:57
SDK-ներ կան այստեղ
http://www.forum.nokia.com/Technology_Topics/Development_Platforms/Symbian_C++/

Օգտակար դակումենտացիա կա այստեղ
http://www.symbiantutorial.org ու
http://developer.symbian.org - ում

Հա ու հենց S60 պլատֆորմայի վրա աշխատող Python լեզվի թարգմանիչ կա, որը կարելի է ներբեռնել այստեղից
http://handheld.softpedia.com/get/Developer-Tools/Application-Builders/Python-for-S60-63457.shtml

Python լեզվի ինտերպրետատոր ավելի ճիշտ

Bravo
17.03.2010, 21:10
Ժող որտեղից կարող եմ գտնել Դաիտլի գրքի 5/E հրատարակչության խնդիրների պատասխանները?

s_hrayr
19.03.2010, 18:15
www.deitel.com կամ www.prenhall.com/deitel

EgoBrain
26.03.2010, 23:05
Ժողովուրդ, warning C4018: '<=' : signed/unsigned mismatch-ը ինչից կլինի?? for(i=0; i<=7-strlen(s);i++) տողիս վրա ա բերում, բայց ոնց որ ամեն ինչ նորմալ պիտի լիներ...

Մեկ էլ թիվը տող սարքող ֆունկցիա ա պետք:

helium
26.03.2010, 23:22
strlen ֆունկցիան վերադարձնումա size_t(unsigned int), այլ ոչ թե int, իսկ քո օրինակում կատարել ես համեմատում int-ի ու size_t-ի միջեւ: Կամ i-ն դարձրու size_t կամ էլ 7-strlen(s)-ը սարքի int:

_DEATH_
26.03.2010, 23:25
Ընդամենը կոմպիլյատորը զգուշացնում ա, որ '<=' համեմատել ես նշանով ու առանց նշան թվեր:

visual 2005-ով ընդհանրապես տենց զգուշացում չի էլ բերում:

EgoBrain
26.03.2010, 23:25
Ok!!!

MSGM
27.03.2010, 00:03
atoi ֆունկցիան փորձի տողից թիվ ստանալու համար:

One_Way_Ticket
27.03.2010, 00:46
Ժողովուրդ, warning C4018: '<=' : signed/unsigned mismatch-ը ինչից կլինի?? for(i=0; i<=7-strlen(s);i++) տողիս վրա ա բերում, բայց ոնց որ ամեն ինչ նորմալ պիտի լիներ...
Քանի դեռ թվերդ երաշխավորված փոքր են int-ի սահմանագծից (երկուսի եռեսուներկու աստիճան), կարող ես հանգիստ խղճով իգնոր անել այդ warning-ը:


Մեկ էլ թիվը տող սարքող ֆունկցիա ա պետք:
Եթե խոսքը ամբողջ թվի մասին է, itoa

Bravo
11.05.2010, 14:51
Ժողովուրդ կարող եք օգնել, վիրտուալ ֆայլային համակարգ է պետք, ինչ որ մեկը կարող է գրած լինի նման ծրագիր:
ընդամենը ուզում եմ ոինդովսի տակ մաւնտ և անմաւնտ անի դռայվերներ

s_hrayr
11.05.2010, 22:11
Ժողովուրդ կարող եք օգնել, վիրտուալ ֆայլային համակարգ է պետք, ինչ որ մեկը կարող է գրած լինի նման ծրագիր:
ընդամենը ուզում եմ ոինդովսի տակ մաւնտ և անմաւնտ անի դռայվերներ
Ուր մտա ես գրառումտ էր: Բացի էտ էլ մարդիկ ստեղ կոնկրետ հարցեր են ուզում ոչ թե պատրաստի պրոյեկտներ: Ինտերնետում լավ ման արի կգտնես:

min-mak
01.06.2010, 18:14
բարև ակումբցիներ ջան, ժող ինձ սենց հարց է հետաքրքրում, ուզում եմ C++-ով գրածս ծրագիրը մինիմայզ անելուց ոչ թե սովորական մինիմայզ անի այլ մտնի ժամի կողքի բառում, օրինակ ոնց որ KDWIN-ին է, մի խոսքով "Խնդիրներ ծրագրավորումից" թեմայում MSGM-ի գրած այս (http://www.onlinedisk.ru/file/443669/) ծրագրի պես, այն տարբերությամբ որ MSGM-ը դա գրել է C#-ով, իսկ ինձ պետք է C++-ով: ասեմ նաև որ կոմպիլիատորս Visual C++ 2008-ն է

LoK®
01.06.2010, 23:51
բարև ակումբցիներ ջան, ժող ինձ սենց հարց է հետաքրքրում, ուզում եմ C++-ով գրածս ծրագիրը մինիմայզ անելուց ոչ թե սովորական մինիմայզ անի այլ մտնի ժամի կողքի բառում, օրինակ ոնց որ KDWIN-ին է, մի խոսքով "Խնդիրներ ծրագրավորումից" թեմայում MSGM-ի գրած այս (http://www.onlinedisk.ru/file/443669/) ծրագրի պես, այն տարբերությամբ որ MSGM-ը դա գրել է C#-ով, իսկ ինձ պետք է C++-ով: ասեմ նաև որ կոմպիլիատորս Visual C++ 2008-ն է
Թրեյում մինիմայզ անելու համար սկզբում պիտի իկոնկա ավելացնես Shell_NotifyIcon ֆունկցիայի միջոցով, հետո SC_MINIMIZE հրամանը ստանալուց թաքցնես պատուհանը:

Ահա օրինակ (http://www.onlinedisk.ru/file/447747/), Dialog Based հասարակ ծրագիր ա, պիտի որ ամեն ինչ հասկանալի լինի: Եթե հարցեր լինեն, գրի:

min-mak
02.06.2010, 17:12
Թրեյում մինիմայզ անելու համար սկզբում պիտի իկոնկա ավելացնես Shell_NotifyIcon ֆունկցիայի միջոցով, հետո SC_MINIMIZE հրամանը ստանալուց թաքցնես պատուհանը:

Ահա օրինակ (http://www.onlinedisk.ru/file/447747/), Dialog Based հասարակ ծրագիր ա, պիտի որ ամեն ինչ հասկանալի լինի: Եթե հարցեր լինեն, գրի:

Ստացվեց իմ ախպեր, շատ շատ մերսի: Իսկ քո տված կոդը դու ինչով էիր կոմպիլացիա արել? Visual Studio 2010-ով??????

LoK®
02.06.2010, 17:24
Ստացվեց իմ ախպեր, շատ շատ մերսի: Իսկ քո տված կոդը դու ինչով էիր կոմպիլացիա արել? Visual Studio 2010-ով??????
Խնդրեմ :)
Չէ, 2008 ով եմ արել:

min-mak
02.06.2010, 17:38
Խնդրեմ :)
Չէ, 2008 ով եմ արել:

իմն էլ է 2008, բայց կոմպիլացիա անելուց էռօռ տվեց, առանձին պրոյեկտ բացեցի ու Shell_NotifyIcon-ին ու SC_MINIMIZE-ին վերաբերող կոդերը copy-paste արեցի աշխատավ, էռոռն էլ սա է տալիս`
էս տողի #include <afxcontrolbars.h> // MFC support for ribbons and control bars վրա ասումա fatal error C1083: Cannot open include file: 'afxcontrolbars.h': No such file or directory
հասկանալիա որ ասումա այդ ֆայլը բացակայումա, բայց խի???? դրա համար հարցրի թե քո կոմպիլիատորը 2010նա

Միքո
02.06.2010, 17:40
fatal error C1083: Cannot open include file: 'afxcontrolbars.h': No such file or directory


կարողա էտ ֆայլը քո մոտ չկա, մա՞ն ես եկել մոտդ

min-mak
02.06.2010, 17:46
կարողա էտ ֆայլը քո մոտ չկա, մա՞ն ես եկել մոտդ

լինելը չկա, բայց դա ոչ թե պրոեկտի ֆայլնա այլ հենց կոմպիլիատորի, բայց իմ մոտ էլա 2008 LoK®-ի մոտ էլ, հենց դա է խնդիրը թէ խի չկա, ասեմ նաև որ իմ մոտ 2008-ի Team System տարբերակնա, որը իմ իմանալով ամենավերջինն է(իհարկե 2010-ը չհաշված)

LoK®
02.06.2010, 17:51
իմն էլ է 2008, բայց կոմպիլացիա անելուց էռօռ տվեց, առանձին պրոյեկտ բացեցի ու Shell_NotifyIcon-ին ու SC_MINIMIZE-ին վերաբերող կոդերը copy-paste արեցի աշխատավ, էռոռն էլ սա է տալիս`
էս տողի #include <afxcontrolbars.h> // MFC support for ribbons and control bars վրա ասումա fatal error C1083: Cannot open include file: 'afxcontrolbars.h': No such file or directory
հասկանալիա որ ասումա այդ ֆայլը բացակայումա, բայց խի???? դրա համար հարցրի թե քո կոմպիլիատորը 2010նա
Էտ 2008-ի Service Pack 1-ի հետ ա եկել :)

min-mak
13.06.2010, 20:32
Ժող ջան սենց մի հարց ունեմ, գրում եմ ծրագիր visual C++-ով, ուզում եմ որ այդ ծրագիրը բացվի 1 անգամ, 2-րդ անգամ բացելուց գրի ասենք "Already runing" ոնց որ KDWin-ում է: Ինչքան հիշում եմ դա կոմպիլիատորի մեջ մի բան փոխելով հարցը լուծվում էր, առաջ գիտեի ձևը բայց հիմա ոչ մի կերպ չեմ կարում հիշեմ :oy: արդեն մի քանի ժամա էտ եմ ուղում հիշեմ

Աթեիստ
13.06.2010, 21:14
Ժող ջան սենց մի հարց ունեմ, գրում եմ ծրագիր visual C++-ով, ուզում եմ որ այդ ծրագիրը բացվի 1 անգամ, 2-րդ անգամ բացելուց գրի ասենք "Already runing" ոնց որ KDWin-ում է: Ինչքան հիշում եմ դա կոմպիլիատորի մեջ մի բան փոխելով հարցը լուծվում էր, առաջ գիտեի ձևը բայց հիմա ոչ մի կերպ չեմ կարում հիշեմ :oy: արդեն մի քանի ժամա էտ եմ ուղում հիշեմ

Ինքս C++ չգիտեմ, բայց
http://www.google.am/search?num=20&hl=hy&newwindow=1&client=opera&hs=cKr&rls=en-GB&q=C%2B%2B+only+one+instances&btnG=%D5%88%D6%80%D5%B8%D5%B6%D5%A5%D5%AC&meta=

Հենց առաջին էջից
http://support.microsoft.com/kb/243953
http://www.codeguru.com/cpp/misc/misc/applicationcontrol/article.php/c3763/Forcing-Only-One-Instance-of-an-Application-to-Run-at-a-Time-in-Visual-C.htm

min-mak
13.06.2010, 22:33
Ինքս C++ չգիտեմ, բայց
http://www.google.am/search?num=20&hl=hy&newwindow=1&client=opera&hs=cKr&rls=en-GB&q=C%2B%2B+only+one+instances&btnG=%D5%88%D6%80%D5%B8%D5%B6%D5%A5%D5%AC&meta=

Հենց առաջին էջից
http://support.microsoft.com/kb/243953
http://www.codeguru.com/cpp/misc/misc/applicationcontrol/article.php/c3763/Forcing-Only-One-Instance-of-an-Application-to-Run-at-a-Time-in-Visual-C.htm

Շատ Մերսի Աթեիստ ջան, խնդիրը լուծվավ: տվածդ այս http://support.microsoft.com/kb/243953 հղումը շատ օգնեց

Անամնիսիս
02.07.2010, 01:22
Բարև ձեզ:Կներեք բայց ով կարա բացատրի թե ինչու Visual C++-ում եթե պրոջեկտս սարքում եմ իրա առաջարկած տեղում ապա բուլդը էռոռ է տալի,ասում է տէ կոմպլացիա արածը չկա,իսկ ուրիշ տեղ որ անում եմ ամեն ինչ նորմալ է ստացվում:Ընդ որում դա լինում է միայն այն ժամանակ երբ Windows-ս 7 է, Vista-ի ու XP-ի ժամանակ նորմալ աշխատում է:Նախորոք շնորհաալուտյուն

Miq_stdio
15.07.2010, 11:22
շատ հնարավորա ձեր ասած python-ը հեշտա գրելու համար ու փաստա, որ ժամանակակից աշխարհում սիրում ու օգտագործում են որովհետև ետ լեզվի մեջ քիչ է այսպես ասած trouble-ը բայց իսկական մասնագետը պետք է իմանա C++ ու ամբողջ աշխարհում ետ լեզուն ընդունվածա որպես ստանդարտ այդ լեզվով կարող ես գրել ամեն ինչ (իսկ python-ով ոչ) ․․
աշխարհում ինքն իրեն բացովի փակովի դռները, վերելակները, զինորական տեխնիկան, տանկերը, հրթիռները, ռոբոտները ․․․ և այլն գրված են C++ ով
իսկ ետ ձեր ասած գործողություն google թվի հետ (ը) կարամ մենակ ասեմ որ հիմար միտք է
եթե պետք չի մեզ ետ թվի հետ գործողություն անել․․ ուրեմն ինչու հիշացնել դրա մասին
կարող ես մի հատիկ օրինակ բերել երբ մեզ պետքա այդ թվի հետ գործ անել ու չես կարող cppով

Ghevond20
25.07.2010, 21:43
ահագին զարմացա որ իմացա թե C++ ը բարձր մակարդակի լեզու է, ավելի շատ կզարմանայ եթե գրեյք որ այն օբյեկտը կողմնորոշված լեզու է: իսկ են որ պիտոնը ավելի լավ լեզու է քան սին ապա մի հատ հարց. Կարող եք գրել օհ պիտոնով, որը կունենա ասենք յունիքսի էֆեկտիվությունը<որը գրված է սի ով>;)

իսկ կասես ինչ տարբերություն կա Սի ի և Սի երկու գումարածի մեջ?
օրինակ մի գաղափար որը Սի ում չկա "ամեն ինչ օբյեկտ է" զրկում է սի ին կոչվել բարձր մակարդակի լեզու, բարձր մակարդակի լեզու է սմօլտօկը, ջավան, դոդիեզը, պհպ ն եվ այլն

Համամիտ չեմ ես ինքս օգտագործում եմ C++ և դրանից այնկօղմ իմ համար ուրիշ լեզու չկա: Իսկ եթե ուզում ես իմանալ C-ի ու C++- ի տարբրուտյունները կարող եմ քեզ Ստրաուստրոպի գրքերից տամ կրդաս կհասկանս տարբերությունը: Եվ ասեմ ավելին կարող ես նենց մի խնդիր ասես որ C++օվ հնարավոր չլինի ավելի էֆեկտիվ գրել քան ցանկացած այլ լեզվով: C ++ THE BEST:

Nnn
28.07.2010, 02:20
Խնդրում եմ օգնեք դինամիկ զանգվածների ստեղծման մեջ:
Իմ կարդացած գրքի օրինակով գրում եմ չի լինում:
Կարող եք մի օրինակ գրել բազմաչափ դինամիկ զանգվածի:
:)

Aware
28.07.2010, 09:57
Խնդրում եմ օգնեք դինամիկ զանգվածների ստեղծման մեջ:
Իմ կարդացած գրքի օրինակով գրում եմ չի լինում:
Կարող եք մի օրինակ գրել բազմաչափ դինամիկ զանգվածի:
:)

-------------------------
Երկչափ զանգված`
int i;
int **a=new int*[5];
for(i=0; i < 5; ++i)
a[i]=new int[7];
Հիշողությունից ջնջելը
for(i=0; i < 5; ++i)
delete [] a[i];
delete [] a;
--------------------------
Քառաչափ զանգված`
int i,j,k;
int ****a=new int***[5];
for(i=0;i < 5; ++i){
a[i]=new int**[6];
for(j=0;j<6;++j){
a[i][j]=new int*[7];
for(k=0;k<7;++k){
a[i][j][k]=new int[8];
}
}
}
Հիշողության մեջից ջնջելու համար
for(i=0;i<5;++i){
for(j=0;j<6;++j){
for(k=0;k<7;++k){
delete [] a[i][j][k];
}
delete [] a[i][j];
}
delete [] a[i];
}
delete [] a;

P.S. Ընդհանրապես խորհուրդ կտամ օգտվես vector<T> ու դրա ընդլայնված տարբերակ deque<T> դասերից: Մանրամասները ինտերնետում կգտնես:

artush1984
19.09.2010, 12:54
Քառաչափ զանգված`
int i,j,k;
int ****a=new int***[5];


էս ինչ է գրած?

One_Way_Ticket
19.09.2010, 13:29
էս ինչ է գրած?
a-ն int-ի ցուցիչի վրայի ցուցիչի վրայի ցուցիչի վրայի ցուցիչ է :)

Nnn
08.10.2010, 21:19
Օգնեցեք խնդրում եմ:(

Ծրագիր եմ գրել, որում անհրաժեշտ է ներմուծել տող/զանգվածս տող տիպի չէ, այլ char []/ բայց այդ զանգվածում բացատը չի ընդունվում ինչպես նաև enter-ը: Ինչպես կարող եմ դա կազմակերպել առանց string տիպը օգտագործելու?

Miq_stdio
31.10.2010, 12:21
Ինչի՞տ է պետք գրել charov եթե դու գիտես, որ ժամանակտ ես ծաղսում, եթե դու ժամանակ ունես ավելի լավ է սովորես STL-ի ֆունկցիաները ․․․
վերջերս մի ծանոթ ծրագրավորող ասաց ու՞մ է պետք հայտնաբերել հեծանիվը երկրորդ անգամ;)


#include<iostream>
#include<cstring>
using namespace std;

main()
{
char *ch = new char [100];
cin.getline(ch, 100);
cout << ch << '\n';
delete [] ch;
return 0;
}

Miq_stdio
31.10.2010, 12:28
Համամիտ չեմ ես ինքս օգտագործում եմ C++ և դրանից այնկօղմ իմ համար ուրիշ լեզու չկա: Իսկ եթե ուզում ես իմանալ C-ի ու C++- ի տարբրուտյունները կարող եմ քեզ Ստրաուստրոպի գրքերից տամ կրդաս կհասկանս տարբերությունը: Եվ ասեմ ավելին կարող ես նենց մի խնդիր ասես որ C++օվ հնարավոր չլինի ավելի էֆեկտիվ գրել քան ցանկացած այլ լեզվով: C ++ THE BEST:
եթե դու գիտես С լեսզուն միայն, Stroustrup-ի գիրքը չես կարող հասկանալ․․ դրա մեջ Փիլիսոփայություն է և խորհուրդ պրոֆեսիոնալներին
չնայած ինքս ամենաշատը գնահատում եմ այս գիրքը ու կարդում եմ third edition-ը։

Nnn
31.10.2010, 20:32
Ինչի՞տ է պետք գրել charov եթե դու գիտես, որ ժամանակտ ես ծաղսում, եթե դու ժամանակ ունես ավելի լավ է սովորես STL-ի ֆունկցիաները ․․․
վերջերս մի ծանոթ ծրագրավորող ասաց ու՞մ է պետք հայտնաբերել հեծանիվը երկրորդ անգամ;)


#include<iostream>
#include<cstring>
using namespace std;

main()
{
char *ch = new char [100];
cin.getline(ch, 100);
cout << ch << '\n';
delete [] ch;
return 0;
}


երևի stg?
այո ճիշտ եք, բայց իմ մոտ որոշակի խնդիրներ կան կապված Visual 2008-2009ի հետ:)

Պոզիտրոն
31.10.2010, 21:06
Ժող ջան խնդրում եմ շտապ օգնեք:
ամսի 2- ին միջանկյալի եմ ու տանը պարապելու համար c++ ա պետք: Բանը նրանում ա որ մենք անցնում են Borland c++ -ով: wondows 7 64-ի վրա չի լինում (չնայած ինեթում ձևերը ասում ա ոնց անել, բայց մեկա չի լինում): Արդյուք ուրիշ c++ով նույն ծրագիրը կաշխատի:խնդրոում եմ օգնեք

One_Way_Ticket
31.10.2010, 22:02
Արդյուք ուրիշ c++ով նույն ծրագիրը կաշխատի:
Դեպքերի ճնշող մեծամասնությունում կաշխատի։

Պոզիտրոն
31.10.2010, 22:16
Դեպքերի ճնշող մեծամասնությունում կաշխատի։
օրինակ 10-ով?

Armen.181
07.12.2010, 19:51
ժող որևէ մեկը կարող է *.bat ֆիլը կարել *.exe-ին,և արդյոք հնարավոր է դա
ինձ պետք է մոտ այսպիս մի exe որ վանդակում գրվածը գրվի «D:\Fringe.s03e08.rus.LostFilm.TV.avi» փոխարեն
http://twinpix.nu/uploads/full/54628.jpg

50657

Miq_stdio
07.12.2010, 21:47
ժող որևէ մեկը կարող է *.bat ֆիլը կարել *.exe-ին,և...

http://www.youtube.com/watch?v=BCGB6sf6lGA

......
մարդ կա, որ գիտի ոնց կարելի է ստեղծել cyclic list... կլասս
այսինքն նույն զանգվածը, որը կպտտվի այնքան, որքան անհրաժեշտ կլինի․․․
դուք implementation-i օրինակը ցույց տվեք, ես մնացածը կանեմ․․․․

Nnn
15.01.2011, 18:04
Խնդրում եմ օգնեք:)
Ուզում եմ borland C++ Bulder 6 նստեցնեմ: Բայց նստեցնելուց հետո այսպիսի սխալ ե տալիս ու չի աշխատում:
50972

Խնդրում եմ օգնեք :(

Սլավիկ
15.01.2011, 20:13
Ուզում եմ Visual C++ 6.0 սովորել , ինչ գրքեր խորհուրդ կտաք:

Ներսես_AM
15.01.2011, 22:25
Խնդրում եմ օգնեք:)
Ուզում եմ borland C++ Bulder 6 նստեցնեմ: Բայց նստեցնելուց հետո այսպիսի սխալ ե տալիս ու չի աշխատում:
50972

Խնդրում եմ օգնեք :(
Փորձի աջ քլիք Run as Administrator-ով միացնել

Nnn
16.01.2011, 11:52
Փորձի աջ քլիք Run as Administrator-ով միացնել

Շատ շնորհակլություն:hands
Իսկ դա ինչ սխալ է? Կարելի է ինչ-որ կերպ խուսափել դրանից?

Programmer
18.01.2011, 15:23
Ուզում եմ Visual C++ 6.0 սովորել , ինչ գրքեր խորհուրդ կտաք:

Օրինակ սա՝ - Майкл Дж. Янг - Visual C++ 6. Том 1 (http://progbook.ru/c/437-yang-visual-c-6-tom-1.html), Майкл Дж. Янг - Visual C++ 6. Том 2 (http://progbook.ru/c/438-yang-visual-c-6-tom-2.html)

V!k
18.01.2011, 15:34
Ժող "Visual C++ 2008"-ն ա պե՞տք, լինկ կտաք քաշե՞մ:think

JoKer777
25.02.2011, 12:48
Ժող ջան, ինչից կլինի որ ց++ 2010 ում ծրագիր եմ գրում, չի բացում... ավելի ճիշտ ինքը ռուն է անում, ու միանգամից փակումա, արդյունքը չի պահում..., պասկալի մեջ վերջում գրում ենք readkey պահումա, իսկ ստեղ ինչ անենք՞

Yellow Raven
25.02.2011, 13:22
Ժող ջան, ինչից կլինի որ ց++ 2010 ում ծրագիր եմ գրում, չի բացում... ավելի ճիշտ ինքը ռուն է անում, ու միանգամից փակումա, արդյունքը չի պահում..., պասկալի մեջ վերջում գրում ենք readkey պահումա, իսկ ստեղ ինչ անենք՞

Փորձի վերջում գրես


getchar();

Հետո enter-ով կփակես Console պատուհանը;)

bugron
29.05.2011, 21:14
Փորձի վերջում գրես



Հետո enter-ով կփակես Console պատուհանը;)

Իհարկե առանց մոռանալու, որ նախ պետք է գրվի #include <conio.h>-ը:

Cyber
30.06.2011, 16:22
Ես մի հատ փոքրիկ ծրագիր եմ գրում VC++ MFC-ով , այդ ծրագիրը պետք է իր մեջի ռեսուրսից (Resource) մի փոքրիկ .dat ֆայլ հանի և քցի HDD-ի մեջ , 2 օրա ման եմ գալի ու չեմ գտնում ձևը , որտեղ ասես նայել եմ , կարողա ձևը իմանաք ?

LoK®
30.06.2011, 16:46
Ես մի հատ փոքրիկ ծրագիր եմ գրում VC++ MFC-ով , այդ ծրագիրը պետք է իր մեջի ռեսուրսից (Resource) մի փոքրիկ .dat ֆայլ հանի և քցի HDD-ի մեջ , 2 օրա ման եմ գալի ու չեմ գտնում ձևը , որտեղ ասես նայել եմ , կարողա ձևը իմանաք ?
Մոտավորապես սենց`


HMODULE res = NULL;
HRSRC rsrc = NULL;
DWORD size = 0;
HGLOBAL resHandle = NULL;
PVOID resourceBuffer = NULL;

res = AfxGetResourceHandle();
rsrc = FindResource(res, MAKEINTRESOURCE( MY_RESOURCE_ID ), "BINARY");
if(rsrc != NULL)
{
size = SizeofResource(res, rsrc);
if(size != 0)
{
resHandle = LoadResource(res, rsrc);

if(resHandle != NULL)
{
resourceBuffer = LockResource(resHandle);
if(resourceBuffer != NULL)
{
// save resourceBuffer to file
}
}
}
}


Ենթադրվում ա, որ էդ ֆայլը ռեսուրսների մեջ ավելացված ա որպես "BINARY" և նրա ID-ն MY_RESOURCE_ID ա:

Cyber
30.06.2011, 17:55
իսկ , // save resourceBuffer to file - ը ոնց անեմ ?

LoK®
30.06.2011, 20:15
իսկ , // save resourceBuffer to file - ը ոնց անեմ ?
Օրինակ սենց`

HANLDE hFile = CreateFile("path to the file", GENERIC_WRITE, FILE_SHARE_WRITE, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if(hFile != INVALID_HANDLE_VALUE)
{
DWORD written = 0;
WriteFile(hFile, resourceBuffer, size, &written, 0);

CloseHandle(hFile);
}

Cyber
30.06.2011, 20:26
Չի ստացվում :esim
Սկի ֆայլն էլ չի ստեղծվում

LoK®
30.06.2011, 20:37
Չի ստացվում :esim
Սկի ֆայլն էլ չի ստեղծվում
Երևի ֆունկցիաներից մեկը սխալ ա վերադարձնում: Debug կարողանում ե՞ս անել, մի հատ տես որ ֆունկցիան ա սխալ վերադարձնում:

Cyber
01.07.2011, 12:24
Լավ արդեն ստացվեց , մերսի շատ շատ , էս տողում
rsrc = FindResource(res, MAKEINTRESOURCE( MY_RESOURCE_ID ), "BINARY");
BINARY-ի տեղը պտի գրեի "CUSTOM" , առաջ էլի փորձած կաի , բայց միշտ դրանց տեղը գրում էի RT-RCDATA

armen9494
03.09.2011, 13:36
Ժողովուրդ մի բան հարցնեմ: Նախ ասեմ, որ սկսնակ եմ: C++-ով ինչպես կարելի է նայել, թե որ մասում է սխալը: Pascal-ը սխալ գտնելու դեպքում, միանգամից կանգնում էր այդ սխալի վրա, իսկ C++-ը միայն գրում է, թե քանի սխալ կա ծրագրում:
Հ.Գ. մեկ էլ մի բան: Իմ մոտ ծրագիրը Install անելուց չկարողացավ install անել MSDN-ը (եթե չեմ սխալվում, դա C++-ի help-ն է): Հնարավո՞ր է արդյոք դա առանձին տեղադրել:

Valentina
03.09.2011, 18:47
Ժողովուրդ մի բան հարցնեմ: Նախ ասեմ, որ սկսնակ եմ: C++-ով ինչպես կարելի է նայել, թե որ մասում է սխալը: Pascal-ը սխալ գտնելու դեպքում, միանգամից կանգնում էր այդ սխալի վրա, իսկ C++-ը միայն գրում է, թե քանի սխալ կա ծրագրում:
Հ.Գ. մեկ էլ մի բան: Իմ մոտ ծրագիրը Install անելուց չկարողացավ install անել MSDN-ը (եթե չեմ սխալվում, դա C++-ի help-ն է): Հնարավո՞ր է արդյոք դա առանձին տեղադրել:

Ներքևի մասում ,որտեղ որ գրվում է սխաների քանակը ու բացատրում ինչ սխալա, 2 անգամ քլիք արա վրան սխալի տողը կմգացվի:
Ինչ վերաբերումա MSDN-ին առանձին հնարավորա տեղադրել, Visual Studio 2008-ի փաթեթի մեջ լինումա:

armen9494
04.09.2011, 14:28
Շնորհակալություն: Դե արդեն ասեցի, որ սկսնակ եմ, ու երևի էս սկզբի ժամանակները ձեր համար անիմաստ ու շատ հեշտ թվացող մի քանի հարցեր կտամ: Նախապես ամեն ինչի համար շնորհակալություն:
Ինչպես են C++-ում գրում e և pi թվերը:

Lusina
04.09.2011, 15:11
Շնորհակալություն: Դե արդեն ասեցի, որ սկսնակ եմ, ու երևի էս սկզբի ժամանակները ձեր համար անիմաստ ու շատ հեշտ թվացող մի քանի հարցեր կտամ: Նախապես ամեն ինչի համար շնորհակալություն:
Ինչպես են C++-ում գրում e և pi թվերը:
math.h-ում կան, ինչպես նաև շատ ուրիշ հաստատուններ և ֆունկցիաներ՝ sin, cos, exp և այլն

#include <math.h>
M_PI
M_E
Բայց ինքդ էլ կարող ես սահմանել և օգտագործել

armen9494
04.09.2011, 21:23
math.h-ում կան, ինչպես նաև շատ ուրիշ հաստատուններ և ֆունկցիաներ՝ sin, cos, exp և այլն

#include <math.h>
M_PI
M_E
Բայց ինքդ էլ կարող ես սահմանել և օգտագործել

Փորձեցի, չաշխատեց:(
#include<iostream.h>
#include<math.h>
void main()
{double a;
a=M_PI;
cout<<a<<endl; }

տալիս է

G:\test\test.cpp(5) : error C2065: 'M_PI' : undeclared identifier
Error executing cl.exe.

test.obj - 1 error(s), 0 warning(s)

Հ.Գ. մի ձև գտել եմ pi-ի համար` static double pi = atan2(0.0,-1.0); ուղղակի հետաքրքիր է, արդյո՞ք ինքը իր մեջ չունի դա: Դժվար թե pascal-ը ունենար, իսկ սա` ոչ:

Lusina
04.09.2011, 21:29
Փորձեցի, չաշխատեց:(
#include<iostream.h>
#include<math.h>
void main()
{double a;
a=M_PI;
cout<<a<<endl; }

տալիս է

G:\test\test.cpp(5) : error C2065: 'M_PI' : undeclared identifier
Error executing cl.exe.

test.obj - 1 error(s), 0 warning(s)
Փորձեք պարզապես PI, ես մի քանի տարի ա ,ինչ C++-ով ծրագիր չեմ գրել, հիմա լավ չեմ հիշում, եթե նորից չճանաչի, ասեք

armen9494
04.09.2011, 22:56
Փորձեք պարզապես PI, ես մի քանի տարի ա ,ինչ C++-ով ծրագիր չեմ գրել, հիմա լավ չեմ հիշում, եթե նորից չճանաչի, ասեք

Նորից նույն սխալն է տալիս, շնորհակալություն, որ օգնում եք

Lusina
04.09.2011, 23:06
Նորից նույն սխալն է տալիս, շնորհակալություն, որ օգնում եք
Հետաքրքիր ա, http://tigcc.ticalc.org/doc/math.html ստեղ էլ ա ասում, որ կա:think
Իսկ ի՞նչ ճշտությամբ ա պետք, կարելի ա սահմանել, ասենք սենց
const double pi = 3.1415;

armen9494
05.09.2011, 17:56
Հետաքրքիր ա, http://tigcc.ticalc.org/doc/math.html ստեղ էլ ա ասում, որ կա:think
Իսկ ի՞նչ ճշտությամբ ա պետք, կարելի ա սահմանել, ասենք սենց
const double pi = 3.1415;

Եթե հարցը գնում է սահմանելուն, ապա կարծում եմ ավելի լավ կլինի այսպես անել
static double pi = atan2(0.0,-1.0)

երևի թե ավելի ճիշտ կլինի: Ինձ հիմա ճշտությունը պետք չի, ուղղակի նոր եմ սկսում ուսումնասիրել լեզուն, հետաքրքիր է, իսկ ինստիտուտում շաբատը մի անգամ ունենք այդ մասնագիտական առարկան: Դրա համար իրանց սպասելով դժվար թե ինչ-որ նորմալ բան սովորեմ, փորձում եմ ինքս գրականություն գտնել, կարդալ ու հարցերի միջոցով հասկանալ, իսկ ձեզանից էլ շատ շնորհակալ եմ, որ օգնում եք:

Lusina
05.09.2011, 18:17
Եթե հարցը գնում է սահմանելուն, ապա կարծում եմ ավելի լավ կլինի այսպես անել
static double pi = atan2(0.0,-1.0)

երևի թե ավելի ճիշտ կլինի: Ինձ հիմա ճշտությունը պետք չի, ուղղակի նոր եմ սկսում ուսումնասիրել լեզուն, հետաքրքիր է, իսկ ինստիտուտում շաբատը մի անգամ ունենք այդ մասնագիտական առարկան: Դրա համար իրանց սպասելով դժվար թե ինչ-որ նորմալ բան սովորեմ, փորձում եմ ինքս գրականություն գտնել, կարդալ ու հարցերի միջոցով հասկանալ, իսկ ձեզանից էլ շատ շնորհակալ եմ, որ օգնում եք:
Դե հա, ես մտքովս անցած առաջին հեշտ տարբերակն ասեցի, հստակ սահմանելու շատ ուրիշ լավ եղանակներ կան.Իսկ շնորհակալության կարիք չկա, սա օգնություն համարել չի կարելի,որովհետև կոնկրետ լեզուն ես էլ խորացված չգիտեմ, միայն հիմքը .
Հ.Գ.Ինչ վերաբերվում ա լեզուն ուսումնասիրելուն՝ բոլորը սկսնակներին Դեյտել են խորհուրդ տալիս.

armen9494
05.09.2011, 19:15
Դե հա, ես մտքովս անցած առաջին հեշտ տարբերակն ասեցի, հստակ սահմանելու շատ ուրիշ լավ եղանակներ կան.Իսկ շնորհակալության կարիք չկա, սա օգնություն համարել չի կարելի,որովհետև կոնկրետ լեզուն ես էլ խորացված չգիտեմ, միայն հիմքը .
Հ.Գ.Ինչ վերաբերվում ա լեզուն ուսումնասիրելուն՝ բոլորը սկսնակներին Դեյտել են խորհուրդ տալիս.

Գիտեմ, ինձ էլ են Դեյտել խորհուրդ տվել, բայց հիմա ձեռքիս տակ դա չունեմ: Փոխարենը ունեմ "C++ հիմունքները" (Ռ. Վարդանյան, Ս.Կարապետյան): Սկսել եմ կարդալ, առաջին հայացքից հեշտ ու ըմբռնելի է, բայց երևի ավելի քիչ է մանրամասնեցված (համ էլ հայերեն է): Մոտակա ժամանակներս կփորձեմ Դեյտելի ոչ էլեկտրոնային տարբերակը ճարել, քանի որ ուզում եմ արդեն ռուսերենի անցնել, շուտով կսկսեմ ուրիշ լեզուներ սովերել, իսկ նրանց գրականությունը դժվար թե հայերեն տարբերակով լինի:

Անամնիսիս
05.09.2011, 21:26
Ժողովուրդ մի բան հարցնեմ: Նախ ասեմ, որ սկսնակ եմ: C++-ով ինչպես կարելի է նայել, թե որ մասում է սխալը: Pascal-ը սխալ գտնելու դեպքում, միանգամից կանգնում էր այդ սխալի վրա, իսկ C++-ը միայն գրում է, թե քանի սխալ կա ծրագրում:
Հ.Գ. մեկ էլ մի բան: Իմ մոտ ծրագիրը Install անելուց չկարողացավ install անել MSDN-ը (եթե չեմ սխալվում, դա C++-ի help-ն է): Հնարավո՞ր է արդյոք դա առանձին տեղադրել:

Որքան հասկացա քո մոտ visual Studion է:
Պարզապես սողնակը բարձրացրա կամ վրան մի քանի անգամ քլիք անես կգա։
Այո MSDN առանձին նստեցնել հնարավոր է։

armen9494
10.11.2011, 20:17
Բարև ձեզ, որ խնդրեմ, կօգնե՞ք :))
Խնդիրը գրում եմ՝ իմ համար անհասկանալի պատճառով չի աշխատում



#include <iostream.h>
void main ()

{
unsigned long int x[10][10],i,j,n,k,p=1;
do {cout<<"n="; cin>>n;} while (n>10 || n<=1);
do {cout<<"k="; cin>>k;} while (k=0);
for (i=0; i<n; i++)
{
cout<<endl;
for (j=0; j<n; j++)
cin>>x[i][j];
}
for (i=0; i<n; i++)
for (j=0; j<n-i-1; j++)
if (x[i][j]%k==0) // && x[i][j]!=0)
p*=x[i][j];
cout<<p;

}

One_Way_Ticket
10.11.2011, 21:03
Առանց խնդիրը իմանալու դժվար է օգնելը:

armen9494
10.11.2011, 22:00
Առանց խնդիրը իմանալու դժվար է օգնելը:

Տրված է n ամբոջ թիվը և nxn չափի մատրից, որի տարրերը բնական թվեր են: Տպել մատրիցի օժանդակ անյունագծից վերև կամ նրա վրա գտնվող այն տարրերի արտադրյալը, որոնք բազմապատիկ են տրված k ամբողջ թվին:

One_Way_Ticket
10.11.2011, 22:24
while (k=0) փոխեք while (k==0)
Քանի որ անկյունագծի վրա գտնվող էլեմենտները նույնպես ուզում եք հաշվի առնել, j<n-i-1-ի միջից -1-ը ջնջեք։
Մնացածը ոնց որ ճիշտ է։

armen9494
10.11.2011, 22:46
while (k=0) փոխեք while (k==0)

վաաայ, էլի էս անջատված սխալս:oy



Քանի որ անկյունագծի վրա գտնվող էլեմենտները նույնպես ուզում եք հաշվի առնել, j<n-i-1-ի միջից -1-ը ջնջեք։
Մնացածը ոնց որ ճիշտ է։
դե անջատված եմ էլի, <= մոռացել եմ:oy

Շատ շատ շնորհակալություն:)

John
12.12.2011, 15:13
Ժող ջան, մի հատ խնդիր կա, միջանկյալի տոմսիս մեջ էր, գրել եմ, բայց դե տենց լավ չգիտեմ էլի՝ ուզում եմ օգնեք իմանալ ճիշտ եմ գրել թե չէ :)

Խնդիր: Կազմել ծրագիր, որ մեջ ներմուծենք N հատ բնական թիվ, արտածվի (էկրանին տպվի) ներմուծած թվերից երկնիշների գումարը

լուծում՝
#include <iostream.h>
int main ()
{
int x, i, s;
i=1;
s=0;
const N=5;
while (i<=5)
{
if (10<=x<=99)
s=s+x
}
i=i+1; cout<<S;
return 0;
}

One_Way_Ticket
12.12.2011, 15:42
Ժող ջան, մի հատ խնդիր կա, միջանկյալի տոմսիս մեջ էր, գրել եմ, բայց դե տենց լավ չգիտեմ էլի՝ ուզում եմ օգնեք իմանալ ճիշտ եմ գրել թե չէ :)

Խնդիր: Կազմել ծրագիր, որ մեջ ներմուծենք N հատ բնական թիվ, արտածվի (էկրանին տպվի) ներմուծած թվերից երկնիշների գումարը

լուծում՝
#include <iostream.h>
int main ()
{
int x, i, s;
i=1;
s=0;
const N=5;
while (i<=5)
{
if (10<=x<=99)
s=s+x
}
i=i+1; cout<<S;
return 0;
}
Սխալներն այնքան շատ են, որ նույնիսկ դժվար է հատ հատ մատնանշելը:

John
12.12.2011, 15:43
Սխալներն այնքան շատ են, որ նույնիսկ դժվար է հատ հատ մատնանշելը:
:D շնորհակալ եմ :) լիքվիդն էլ ա տղու համար :D

armen9494
12.12.2011, 17:02
:D շնորհակալ եմ :) լիքվիդն էլ ա տղու համար :D
Շատ մի մտածի, ավելի շուտ՝ վափշե մի մտածի, սովորի ոչ թե էդ լիկվիդի, այլ քո հավեսի համար;)


Խնդիր: Կազմել ծրագիր, որ մեջ ներմուծենք N հատ բնական թիվ, արտածվի (էկրանին տպվի) ներմուծած թվերից երկնիշների գումարը


Ջոն ջան սխալները շատ են, թե քիչ՝ կապ չունի: Ես էլ եմ նոր սկսում սովորել c++, դրա համար կփորձեմ հիմա գրել էս խնդիրը, ավելի շուտ՝ քոնի վրա կասեմ, թե որ տողում ինչն ա սխալ: Ավելի լավ c++ իմացողներին կխնդրեմ, որ նայեն՝ ես հո սխալ չեմ ասել: Եթե ինչ-որ բան՝ թեկուզ և նրբություն սխալ կլինի, կխնդրեմ ասեք՝ դա ինձ շատ ա պետք:




#include <iostream.h>
int main ()
{
int x, i, s;
i=1;
s=0;
const N=5;
while (i<=5)
{
if (10<=x<=99)
s=s+x
}
i=i+1; cout<<S;
return 0;
}


Գրեմ մանրամասն. տեղեր կա, որ սխալ չի, բայց ավելի ցանկալի ա էդ տարբերակը, դրանք էլ կգրեմ:
Սկսեմ ամենասկզբից:

Սա սխալ չի, բայց ցանկալի ա էս ձևով գրել՝
5-րդ տողում i=1-ը կարող էիր չգրել և դրա փոխարեն i-ն սկզբնարժեքավորեիր հայտարարելիս, այսինքն էդ դեպքում էս ծրագրիտ 4-րդ տողը կլիներ`
int x,i=1,s;
նմանապես 6-րդ տողում s=0-ն...

Ըստ խնդրիդ պահանջի կարելի է ենթադրել, որ N-ը ինչ-որ հաստատուն թիվ չի, խնդրից "օգտվողը" երբ ինչ թիվ ուզի կարող է տալ: Այդ պատճառով 7-րդ տողը անիմաստ ա: Դրա փոխարեն պիտի գրեիր այսպես`
do cin>>n while (n<1);
իսկ եթե do ... while ցիկլը չես անցել, ուրեմն ուղղակի գրի cin>>n;

Երևի արդեն հասկացար, որ 8-րդ տողի պայմանը կփոխվեր և կդառնար (i<=n)

Հիմա քո գլխավոր սխալը. որտե՞ղ ես ներմուծում x-ը: Մի հատ նորից խնդիրը նայի ու տես, որ դու x չես ներմուծել, ուրեմն ո՞նց ես 10-րդ տողում նրա համար պայման ստուգում:
Դրա համար մինչև 10-րդ տողը պիտի ներմուծեիր x-ը՝
cin>>x;
ի դեպ՝ ստեղ էլ կարող ես գրել
do cin>>x while(x<1)
որովհետև խնդիրը ասում ա, որ թիվը բնական ա՝ այսինքն մեծ ա 0-ից:

10-րդ տողում պայմանը սխալ ես գրել, c++-ում չի կարելի երկու պայման իրար հետ էտ ձևով գրել: Պիտի գրեիր սենց՝
if(x>=10 && x<=99)
Քո գրածը սովորական մաթեմատիկայի լեզվով ա:

11-րդ տող. շատերը ասում են, որ էս գրելաձևը սխալ ա, որովհետև կա ավելի կրճատ ձև, որի դեպքում համակարգիչն ավելի արագ է աշխատում՝
s+=x;
Սա և s=s+x անում են նույն գործողությունը:
Իրականում քո գրածը էդքան էլ սխալ չի, ավելի շուտ՝ կախված ա դասախոսից, կուզի աչք կփակի վրեն, կուզի կսարքի եսիմինչ:

Մինչև ցիկլից դուրս գալը (12-րդ տողը) պիտի i-ն մեկով ավելացնես, այսինքն՝
i++;

13-րդ տողում լրիվ անիմաստ ա i=i+1 -ը, դա ոչինչ չի փոխում քո խնդրի մեջ:
Մի բան ասեմ, սա ստեղ կապ չունի, բայց քեզ պետք կգա. ընդհանրապես մի գրի x=x+1, դրա փոխարեն կան երկու ուրիշ օպերատորներ՝
i++
կամ
++i
Բայց միչև դրանց օգտագործելը լավ կարդա դրանց մասին՝ շատ լուրջ "նրբություններ" ունեն:

13-րդ տողում մի սխալ էլ ունես, շատերը կասեն, որ էդ սխալ չի, զուտ անուշադրություն ա (տետրիդ մեջ վափշե բան չեն կարա ասեն) բայց դու ըտեղ գրել ես մեծատառ "S" տառը, իսկ վերևում հայտարարել ես փոքրատառ: C++-ում նույն տառի մեծատառն ու փոքրատառը իրարից լրիվ տարբեր բաներ են:


Մի բան էլ ասեմ, չնայած սրան կարող ես էդքան շատ ուշադրություն չդարձնել, սա էլ լուրջ սխալ չի.
4-րդ տողում հայտարարելիս կարող ես գրել
unsigned int ...
Որովհետև ըստ քո խնդրի գիտես, որ բոլոր թվերը 0-ից մեծ են:

Էս էլ խնդրի ճիշտ տարբերակը՝


#include <iostream.h>
int main ()
{
unsigned int i=1, s=0, n, x;
do cin>>n; while(n<1);
while(i<=n)
{
cin>>x;
if(x>=10 && x<=99)
s+=x;
i++;
}
cout<<s;
return 0;
}

One_Way_Ticket
12.12.2011, 17:13
Ես էլ եմ նոր սկսում սովորել c++, դրա համար կփորձեմ հիմա գրել էս խնդիրը, ավելի շուտ՝ քոնի վրա կասեմ, թե որ տողում ինչն ա սխալ: Ավելի լավ c++ իմացողներին կխնդրեմ, որ նայեն՝ ես հո սխալ չեմ ասել: Եթե ինչ-որ բան՝ թեկուզ և նրբություն սխալ կլինի, կխնդրեմ ասեք՝ դա ինձ շատ ա պետք:
Ամեն ինչ ճիշտ ես գրել:

John
12.12.2011, 20:53
նշածդ սխալներից մի քանիսը, օրինակ՝ x-ը չներմուծելը, էդ ուղղակի անուշադրությունից ելնելով ստեղ մոռացել եմ գրել, բայց գրավորի ժամանակ գրել եմ :) իսկ ընդհանրապես ահագին արժեքավոր բաներ իմացա, շնորհակալ եմ :)

armen9494
16.01.2012, 14:31
Ժողովուրդ էս անգամ հարցս մի քիչ բարդ ա:
Ես ունեմ մի սարք (հեռախոսակայան), որը com պորտով ժամանակ առ ժամանակ (ամեն զանգը կատարելուց հետո) տվյալներ ա ուղարկում (եթե ճիշտ գիտեմ, մի զանգի ժամանակ մի տող): Ինձ պետք ա մի ծրագիր, որով կարողանամ ստանալ էդ տվյալները և գրել մի ֆայլի մեջ:
Սրանք գտա ինտերնետում, բայց էդքան էլ լավ չեմ հասկանում, եթե հասկանում եք, կօգնե՞ք
http://netcode.ru/cpp/?lang=&katID=20&skatID=178&artID=5166
http://netcode.ru/cpp/?click=files/class_comport.zip

armen9494
16.01.2012, 15:05
Եվ մի հարց էլ. ինչպե՞ս են c++ ակտիվացնում և օգտագործում գրաֆիկան, միայն graphics.h մոդուլը կա, թե՞ ուրիշներն էլ գոյություն ունեն:

Հարցերովս զզվացրեցի երևի:oy իսկ կարո՞ղ ա իմանաք ինչպես աշխատեմ ստեղնաշարի հետ, այսինքն c++-ում ո՞ր ֆունկցիաներն են համապատասխանում Պասկալի readkey և keypressed ֆունկցիաներին;

Նախապես շատ շատ շնորհակալություն:)

Master of Puppets
30.01.2012, 12:07
Եվ մի հարց էլ. ինչպե՞ս են c++ ակտիվացնում և օգտագործում գրաֆիկան, միայն graphics.h մոդուլը կա, թե՞ ուրիշներն էլ գոյություն ունեն:

Հարցերովս զզվացրեցի երևի:oy իսկ կարո՞ղ ա իմանաք ինչպես աշխատեմ ստեղնաշարի հետ, այսինքն c++-ում ո՞ր ֆունկցիաներն են համապատասխանում Պասկալի readkey և keypressed ֆունկցիաներին;

Նախապես շատ շատ շնորհակալություն:)
Եթե ուզում ես գրաֆիկաի հետ աշխատել, ապա խորհուրդ կտամ սկզբի համար սովորել SDL գրադարանի հետ աշխատել:

armen9494
08.02.2012, 19:13
Եթե ուզում ես գրաֆիկաի հետ աշխատել, ապա խորհուրդ կտամ սկզբի համար սովորել SDL գրադարանի հետ աշխատել:

Շնորհակալություն: Իսկ որ խնդրեմ կասե՞ս թե ինչ է SDL գրադարանը:

Ruzanna Stepanyan
12.02.2012, 21:03
բարեև ձեզ հարգելի ֆորումականներ: Ես սկսնակ եմ և ոչ մի կերպ չի ստացվում հետևյալ խնդիրը, խնդրում եմ օգնեք: Խնդիրը 11-րդ դասարանի դասագրքից է

Որոշել և արտածել 12-ին բազամպատիկ ամենամեծ հնգնաիշ թիվը:

Խնդրում եմ, եթե հնարավոր է մանրամասն գրեք: Նախապես շնորհակալություն: :)

Chelovek84
13.02.2012, 00:06
Շնորհակալություն: Իսկ որ խնդրեմ կասե՞ս թե ինչ է SDL գրադարանը:
http://www.libsdl.org/

One_Way_Ticket
13.02.2012, 01:54
բարեև ձեզ հարգելի ֆորումականներ: Ես սկսնակ եմ և ոչ մի կերպ չի ստացվում հետևյալ խնդիրը, խնդրում եմ օգնեք: Խնդիրը 11-րդ դասարանի դասագրքից է

Որոշել և արտածել 12-ին բազամպատիկ ամենամեծ հնգնաիշ թիվը:

Խնդրում եմ, եթե հնարավոր է մանրամասն գրեք: Նախապես շնորհակալություն: :)
#include <iostream>
int main()
{
int n = 99999;
while (n % 12 != 0)
{
--n;
}
std::cout << n << '\n';
return 0;
}

Վերցնում ես ամենամեծ հնգանիշ թիվը և փոքրացնում ես այնքան, մինչև բաժանվի 12-ի։

Ruzanna Stepanyan
13.02.2012, 09:23
#include <iostream>
int main()
{
int n = 99999;
while (n % 12 != 0)
{
--n;
}
std::cout << n << '\n';
return 0;
}

Վերցնում ես ամենամեծ հնգանիշ թիվը և փոքրացնում ես այնքան, մինչև բաժանվի 12-ի։

Շատ, շատ շնորհակալ են:

Քանի որ ես սկսնակ եմ, խնդրում եմ եթե դժվար չի, բացատրեք աս վերջին տողը ինչ է նշանակում

std::cout << n << '\n';
return 0;
}

Ruzanna Stepanyan
13.02.2012, 10:19
Տրված է եռանիշ թիվ: Հաշվել և արտածել եռանիշ թվի թվանշանների գումարի և եռանիշ թվի հարաբերության արժեքը, եթե միավորների թվանշանը մեծ է տասնավորների թվանշանից, հակառակ դեպքում կարտածի եռանիշ թիվը:

Այս խնդրի մեջ էլ ՈՉ-ի պայմանը կատարվում է, իսկ ԱՅՈ-ի պայմանը չի կատարվում: Խնդրում եմ օգնեք

#include <iostream>
using namespace std;
void main()
{
int a,b,c,n;
double k;
cout<<"Mutqagreq eranish tiv"<<endl;
cin>>n;
a=n/100;
b=(n-a*100)/10;
c=n%10;
if(c>b)
{
k=(a+b+c)/n;
cout<<"k="<<k<<endl;
}
else
cout<<"n="<<n<<endl;
}

Varzor
13.02.2012, 11:48
Շատ, շատ շնորհակալ են:

Քանի որ ես սկսնակ եմ, խնդրում եմ եթե դժվար չի, բացատրեք աս վերջին տողը ինչ է նշանակում

std::cout << n << '\n';
return 0;
}

cout<< և cin>> հրամանները նախատեսված են ինֆորմացիայի մուտքի/ելքի համար (պարզագույն տարբերակով` էրանին արտածելու և ստեղնաշարից կարդալու) ու հանդիսանում են std ստանդարտ գրադարանի անդամներ:
Քանի որ #incude-ում կոնկրետ հայտարարված չէ, ապա տվյալ հրամաններին դիմելու համար նախապես գրվում է std::` ցույց տալու համար, թե որտեղից պիտի կոմպիլյատորը կարդա այդ հրամանների կատարման կարգը :
Կատարվում են ստանդարտ դրադարանի մեջ ընդգրկված հրամանները:
Կարելի էր ուղղակի գրել cout<<, քանի որ cout-ը նկարագրված է iostream.h--ում
http://msdn.microsoft.com/en-us/library/zh80x809(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/6xwbdak2(v=vs.80).aspx

armen9494
13.02.2012, 22:10
Տրված է եռանիշ թիվ: Հաշվել և արտածել եռանիշ թվի թվանշանների գումարի և եռանիշ թվի հարաբերության արժեքը, եթե միավորների թվանշանը մեծ է տասնավորների թվանշանից, հակառակ դեպքում կարտածի եռանիշ թիվը:

Այս խնդրի մեջ էլ ՈՉ-ի պայմանը կատարվում է, իսկ ԱՅՈ-ի պայմանը չի կատարվում: Խնդրում եմ օգնեք

#include <iostream>
using namespace std;
void main()
{
int a,b,c,n;
double k;
cout<<"Mutqagreq eranish tiv"<<endl;
cin>>n;
a=n/100;
b=(n-a*100)/10;
c=n%10;
if(c>b)
{
k=(a+b+c)/n;
cout<<"k="<<k<<endl;
}
else
cout<<"n="<<n<<endl;
}

Խորհուրդ կտամ նախապես փորձեք բլոկ սխեման գծել, որից հետո նոր ծրագրի կոդը գրել:

armen9494
13.02.2012, 22:48
[LIST=1]
#include <iostream>
using namespace std;
void main()
{
int a,b,c,n;
double k;
cout<<"Mutqagreq eranish tiv"<<endl;
cin>>n;
a=n/100;
b=(n-a*100)/10;
c=n%10;
if(c>b)
{
k=(a+b+c)/double(n);
cout<<"k="<<k<<endl;
}
else
cout<<"n="
<<n<<endl;
}



Ահա լուծումը:
Պռոբլեմը 14-րդ տողում էր: Ուրեմն քանի որ ձեր a,b,c,n թվերը int տիպի են, ապա (a+b+c)/n-ը նույնպես int տիպի է ( (int+int+int)/int=int ): Քանի որ ձեր ստացվող թիվը 1-ից փոքր էր և 0-ից մեծ (օրինակ 0,0243), ձեր էկրանին արտածվում էր 0:
Ի՞նչ է նշանակում իմ գրածը
k=(a+b+c)/double(n);
double(n)-ը նշանակում է, որ այս պարագայում ծրագիրը n-ին նայի որպես double տիպի թիվ:
Հետևաբար՝ (int+int+int) / double = double
Կարող էինք նաև գրել այսպես՝
k=(double(a)+b+c)/n;
k=double(a+b+c)/n;
..........................

բայց ոչ այսպես՝
k=double((a+b+c)/n);
քանի որ սկզբում հաշվվում է (a+b+c)/n , որը լինում է int տիպի և հավասար 0, որից հետո վերածվում է double տիպի, արդյունքում սխալ:)

Ruzanna Stepanyan
13.02.2012, 23:54
Շնորհակալ եմ շատ

Ruzanna Stepanyan
13.02.2012, 23:57
Խորհուրդ կտամ նախապես փորձեք բլոկ սխեման գծել, որից հետո նոր ծրագրի կոդը գրել:

Ես հենց էդպես էլ անում եմ հարգելի Արմեն, որովհետև աշակերտներս էլ առանց բլոկսխեմայի չեն պատկերացնում: Նոր եմ սկսել սովորել այս ծրագիրը, որորհետև ափսոսում եմ, որ իրենց ժամանակը վատնել Պասկալի վրա:

Եվ անչափ շնորհակալ եմ ինձ աջակցելու ու օգնելու համար::)

Ruzanna Stepanyan
20.02.2012, 10:55
Խնդրում եմ օգնեք: Խնդրի լուծման մեջ ոտեղ է իմ սխալը:

Տրված է N բնական թիվը: Ստանալ և տպել N-ic մեծ այն ամենափոքր թիվը, որը 2-ի աստիճանն է հանդիսանում:

#include <iostream>
using namespace std;
void main()
{
double x,m;
int n;
cout<<"n=";
cin>>n;
x=1;
m=2;
while (pow(2,x)==m)
{
if (m>n)
{
x+=1;
m+=2;
}
cout<<"m="<<m<<endl;
}
cout<<"m="<<m<<endl;
}

Varzor
20.02.2012, 11:12
Խնդրում եմ օգնեք: Խնդրի լուծման մեջ ոտեղ է իմ սխալը:

Տրված է N բնական թիվը: Ստանալ և տպել N-ic մեծ այն ամենափոքր թիվը, որը 2-ի աստիճանն է հանդիսանում:

#include <iostream>
using namespace std;
void main()
{
double x,m;
int n;
cout<<"n=";
cin>>n;
x=1;
m=2;
while (pow(2,x)==m)
{
if (m>n)
{
x+=1;
m+=2;
}
cout<<"m="<<m<<endl;
}
cout<<"m="<<m<<endl;
}
while-ի մեջ սխալ ես գրել` անվերջ ցիկլ կստացվի, քանի որ ըստ քո գրածի pow(2,x)-ը միշտ հավասար կլինի m:
Փոխի սենց`

#include <iostream>
using namespace std;
void main()
{
double x, m;
int n;
cout<<"n=";
cin>>n;
x = 1;
m = 2;
while ( m <= n )
{
x+=1;
m = pow(2, x);
}
cout<<"m="<<m<<endl;
}

Ruzanna Stepanyan
20.02.2012, 12:07
Անչափ շնորհակալ եմ :)


while-ի մեջ սխալ ես գրել` անվերջ ցիկլ կստացվի, քանի որ ըստ քո գրածի pow(2,x)-ը միշտ հավասար կլինի m:
Փոխի սենց`

#include <iostream>
using namespace std;
void main()
{
double x, m;
int n;
cout<<"n=";
cin>>n;
x = 1;
m = 2;
while ( m <= n )
{
x+=1;
m = pow(2, x);
}
cout<<"m="<<m<<endl;
}

Ruzanna Stepanyan
20.02.2012, 13:12
Խնդրում եմ, մի հատ էս խնդիրն էլ նայեք:

Տրված է n բնական թիվը, որը 2-ի որևէ աստիճան է հանդիսանում՝ n=2k :
Հաշվել և արտածել k-ի արժեքը:

#include <iostream>
using namespace std;
void main()
{
double k;
int n;
cout<<"n=";
cin>>n;
n = 2;
k = 1;
while (n==(pow(2,k)))
{
n+=2;
k+=1;
}
cout<<"k="<<k<<endl;
}

armen9494
20.02.2012, 14:04
Խնդրում եմ, մի հատ էս խնդիրն էլ նայեք:

Տրված է n բնական թիվը, որը 2-ի որևէ աստիճան է հանդիսանում՝ n=2k :
Հաշվել և արտածել k-ի արժեքը:

#include <iostream>
using namespace std;
void main()
{
double k;
int n;
cout<<"n=";
cin>>n;
n = 2;
k = 1;
while (n==(pow(2,k)))
{
n+=2;
k+=1;
}
cout<<"k="<<k<<endl;
}

Ճիշտն ասած ձեր գրածի ալգորիթմը չհասկացա, նամանավանդ էն պահը, որ n-ը ներմուծելուց հետո նրան 2 եք վերագրում :pardon
Քանի որ ասեցիք, որ սովորելու նպատակով եք այս խնդիրները ուսումնասիրում, ասեմ մի քանի բան, որ ձեր խնդրի մեջ սխալ են (ալգորիթմը մի կողմ դրած):
Նախ քանի որ դուք օգտագործում եք pow-ը, պետք է ծրագրին կցված լինի math.h-ը՝
#include <math.h>
k թիվը պետք չէ double տիպի հայտարարել, քանի որ այն միայն ամբողջ արժեքներ կարող է ընդունել:
k+=1-ի փոխարեն ավելի ճիշտ է գրել k++ կամ ++k

Այս պահը սխալ չէ, բայց ճիշտ կանեք հակառակը գրել (ինքս էլ եմ հաճախ էս ձևով գրում ու ուզում եմ իմ մեջ փոխել սա)
while (n==(pow(2,k)))
while ((pow(2,k))==n)
որովհետև հաճախ սխալվում ենք ու ==-ի փոխարեն դնում ենք =
while (n=(pow(2,k))) էս դեպքում ծրագիրը error չի տա, ու սխալ արդյունք կստանանք, իսկ մյուս դեպքում սխալ կտա, քանի որ pow(2,k)-ին չի կարող վերագրել n-ի արժեքը:


Մի հարց՝ մեզ տրված թիվը հաստատ 2-ի աստիճան է, թե կարող է ուրիշ թիվ էլ լինել: Լավ, հիմա կգրեմ էն տարբերակը, երբ հաստատ 2-ի աստիճան է, եթե մյուսը լինի, ասեք, մյուս տարբերակի համար էլ կսարքեմ այնպես, որ ուրիշ թիվ ներմուծելու դեպքում ասի կրկին ներմուծեք:

Կառաջարկեմ այս եղանակը. բացում ենք նախապայմանով ցիկլ, ցիկլի մեջ n-ը բաժանում ենք երկուսի և k-ն մեկով ավելացնում ենք: Ցիկլի պայմանը n!=1-ն է: Այսինքն թիվը այնքան ենք բաժանում 2-ի վրա, մինչև դառնա մեկ:




#include <iostream.h>

void main()
{
unsigned int n,k=0;
cin>>n;
while(n!=1)
{
n/=2;
k++;
}
cout<<k;
}


___

Varzor
20.02.2012, 15:16
Խնդրում եմ, մի հատ էս խնդիրն էլ նայեք:

Տրված է n բնական թիվը, որը 2-ի որևէ աստիճան է հանդիսանում՝ n=2k :
Հաշվել և արտածել k-ի արժեքը:


#include <iostream>
using namespace std;
void main()
{
double k;
int n;
cout<<"n=";
cin>>n;
n = 2;
k = 1;
while (n==(pow(2,k)))
{
n+=2;
k+=1;
}
cout<<"k="<<k<<endl;
}
Էլի սխալը While-ի մեջ է: Չեմ հասկանում` ինչի համար էս ցիկլի ներսում n-ի արժեքը փոխում? Չէ որ այն արդեն նախորոշված թիվ է?
Պետք չի երկար ցիկլեր գրել այս խնդրի համար` ընդհանրապես ցիկլ պետք չի:
Մի հրամանով կարելի է գտնել:

#include <iostream.h>
#include <stdlib.h>
include <string.h>
int main()
{
/*k-ն չի կարող լինել կոտորակային թիվ */
int k;
int n;
char strBin [32];
cout<<"n=";
cin>>n;
/* n_ը վերածում ենք երկուական տեսքի տեքստի */
itoa(n, strBin, 2);
/* քանի որ n-ը 2-ի աստիճան է, ապա նրա երկուական տեսքի առաջին սիմվոլը k+1 -ն է` օր 4=22=100 (bin); strLen("100")=3; 3-1=2 */
k = strlen(strBin) - 1;
cout<<"k="<<k<<endl;
return 0;
}

Varzor
20.02.2012, 15:25
Մի հարց՝ մեզ տրված թիվը հաստատ 2-ի աստիճան է, թե կարող է ուրիշ թիվ էլ լինել: Լավ, հիմա կգրեմ էն տարբերակը, երբ հաստատ 2-ի աստիճան է, եթե մյուսը լինի, ասեք, մյուս տարբերակի համար էլ կսարքեմ այնպես, որ ուրիշ թիվ ներմուծելու դեպքում ասի կրկին ներմուծեք:

Կառաջարկեմ այս եղանակը. բացում ենք նախապայմանով ցիկլ, ցիկլի մեջ n-ը բաժանում ենք երկուսի և k-ն մեկով ավելացնում ենք: Ցիկլի պայմանը n!=1-ն է: Այսինքն թիվը այնքան ենք բաժանում 2-ի վրա, մինչև դառնա մեկ:

Արմ ջան, եթե արդեն իսկ սկզբից հայտնի է, որ թիվը 2-ի աստիճան է, ապա ավելորդ հաշվարկներ անել էլ պետք չի:
Ի դեպ math.h-ի պահը լավ նկատեցիր` ուշադիր չէի եղել :oy

armen9494
20.02.2012, 16:02
Էլի սխալը While-ի մեջ է: Չեմ հասկանում` ինչի համար էս ցիկլի ներսում n-ի արժեքը փոխում? Չէ որ այն արդեն նախորոշված թիվ է?
Պետք չի երկար ցիկլեր գրել այս խնդրի համար` ընդհանրապես ցիկլ պետք չի:
Մի հրամանով կարելի է գտնել:

#include <iostream.h>
#include <stdlib.h>
include <string.h>
int main()
{
/*k-ն չի կարող լինել կոտորակային թիվ */
int k;
int n;
char strBin [32];
cout<<"n=";
cin>>n;
/* n_ը վերածում ենք երկուական տեսքի տեքստի */
itoa(n, strBin, 2);
/* քանի որ n-ը 2-ի աստիճան է, ապա նրա երկուական տեսքի առաջին սիմվոլը k+1 -ն է` օր 4=22=100 (bin); strLen("100")=3; 3-1=2 */
k = strlen(strBin) - 1;
cout<<"k="<<k<<endl;
return 0;
}

Վարզոր ջան, չեմ կարծում որ Ռուզանը բան հասկացավ այս գրածից. մի մոռացի, որ նոր է սկսել ուսումնասիրել ծրագրավորումը, իսկ խնդիրը իմ կարծիքով հենց ցիկլերի բաժնից է: Ինքս նման բաներ դեռ չեմ անցել:
Ճիշտը որ ասեմ՝ ես էլ էդքան լավ չհասկացա գրածդ, բայց կփորձեմ նորից նայել:

Հասկացա :hands
Իրոք որ հոյակապ լուծում է, թվերի համակարգերը իմանալու դեպքում շատ հեշտ հասկանալի ;)

Մի հարց ունեմ՝ եթե խնդիրը լիներ 3-ի աստիճանի համար, ապա պիտի անցնեիք երեքական տեսքի՞:

Varzor
20.02.2012, 16:08
Վարզոր ջան, չեմ կարծում որ Ռուզանը բան հասկացավ այս գրածից. մի մոռացի, որ նոր է սկսել ուսումնասիրել ծրագրավորումը, իսկ խնդիրը իմ կարծիքով հենց ցիկլերի բաժնից է: Ինքս նման բաներ դեռ չեմ անցել:
Ճիշտը որ ասեմ՝ ես էլ էդքան լավ չհասկացա գրածդ, բայց կփորձեմ նորից նայել:
Ճիշտ է, գրածս ցիկլերի հետ կապ չունի: Կապ ունի տիպերի կոնվերտացիաների, երկուական համակարգի հատկությունների և տեքստային ֆունկիցաների հետ:
Բայց բարդ չի: Ցանկացած 2-ի աստիճան երկուական տեսքով իրենից ներկայացնում է 1 և հետևից էլ աստիճանի քանակով զրոների հավաքածու: Դու դա հաստատ անցել ես: Օրինակ` 8=23; 810=10002 a այսինքն` 1 հատ 1 ու պոչից 3 հատ 0: Բնական է, որ 2-ի աստիճան հանդիսացող թվի երկուական տեսքի սիմվոլների երկարության քանակը աստիճանից մեկով ավել է: եհնց այդ հատկության վրա էլ հիմնվել եմ լուծում տալուց:

armen9494
20.02.2012, 17:06
Ճիշտ է, գրածս ցիկլերի հետ կապ չունի: Կապ ունի տիպերի կոնվերտացիաների, երկուական համակարգի հատկությունների և տեքստային ֆունկիցաների հետ:
Բայց բարդ չի: Ցանկացած 2-ի աստիճան երկուական տեսքով իրենից ներկայացնում է 1 և հետևից էլ աստիճանի քանակով զրոների հավաքածու: Դու դա հաստատ անցել ես: Օրինակ` 8=23; 810=10002 a այսինքն` 1 հատ 1 ու պոչից 3 հատ 0: Բնական է, որ 2-ի աստիճան հանդիսացող թվի երկուական տեսքի սիմվոլների երկարության քանակը աստիճանից մեկով ավել է: եհնց այդ հատկության վրա էլ հիմնվել եմ լուծում տալուց:

Պարզ ա, իսկ մյուս թվերի համար կարո՞ղ եմ C++-ով գրել նման ծրագիր, թե՞ միայն կարողանում է թիվը երկուական դարձնել:

Ruzanna Stepanyan
20.02.2012, 17:56
Արմեն ջան էս խնդիրը հենց ցիկլերի խնդիր է 11-րդ դասարանի դասագրքից:
Ես մի քիչ նայեմ, հասկանամ, ոնց եք բացատրել ու գրեմ հա հարց որ լինի:

Շատ շատ շնորհակալ եմ


Վարզոր ջան, չեմ կարծում որ Ռուզանը բան հասկացավ այս գրածից. մի մոռացի, որ նոր է սկսել ուսումնասիրել ծրագրավորումը, իսկ խնդիրը իմ կարծիքով հենց ցիկլերի բաժնից է: Ինքս նման բաներ դեռ չեմ անցել:
Ճիշտը որ ասեմ՝ ես էլ էդքան լավ չհասկացա գրածդ, բայց կփորձեմ նորից նայել:

Հասկացա :hands
Իրոք որ հոյակապ լուծում է, թվերի համակարգերը իմանալու դեպքում շատ հեշտ հասկանալի ;)

Մի հարց ունեմ՝ եթե խնդիրը լիներ 3-ի աստիճանի համար, ապա պիտի անցնեիք երեքական տեսքի՞:

Ruzanna Stepanyan
20.02.2012, 18:06
Տրված է n բնական թիվը, որը 2-ի որևէ աստիճան է հանդիսանում :
Հաշվել և արտածել k-ի արժեքը:

Խնդիր սա է:

Խնդրում եմ եթե դժվար չի քայլ ռա քայլ բացատրեք էլի, որ ես հասկանամ, հետո էլ աշակերտներիս հասկացնեմ :)





Ճիշտն ասած ձեր գրածի ալգորիթմը չհասկացա, նամանավանդ էն պահը, որ n-ը ներմուծելուց հետո նրան 2 եք վերագրում :pardon
Քանի որ ասեցիք, որ սովորելու նպատակով եք այս խնդիրները ուսումնասիրում, ասեմ մի քանի բան, որ ձեր խնդրի մեջ սխալ են (ալգորիթմը մի կողմ դրած):
Նախ քանի որ դուք օգտագործում եք pow-ը, պետք է ծրագրին կցված լինի math.h-ը՝
#include <math.h>
k թիվը պետք չէ double տիպի հայտարարել, քանի որ այն միայն ամբողջ արժեքներ կարող է ընդունել:
k+=1-ի փոխարեն ավելի ճիշտ է գրել k++ կամ ++k

Այս պահը սխալ չէ, բայց ճիշտ կանեք հակառակը գրել (ինքս էլ եմ հաճախ էս ձևով գրում ու ուզում եմ իմ մեջ փոխել սա)
while (n==(pow(2,k)))
while ((pow(2,k))==n)
որովհետև հաճախ սխալվում ենք ու ==-ի փոխարեն դնում ենք =
while (n=(pow(2,k))) էս դեպքում ծրագիրը error չի տա, ու սխալ արդյունք կստանանք, իսկ մյուս դեպքում սխալ կտա, քանի որ pow(2,k)-ին չի կարող վերագրել n-ի արժեքը:


Մի հարց՝ մեզ տրված թիվը հաստատ 2-ի աստիճան է, թե կարող է ուրիշ թիվ էլ լինել: Լավ, հիմա կգրեմ էն տարբերակը, երբ հաստատ 2-ի աստիճան է, եթե մյուսը լինի, ասեք, մյուս տարբերակի համար էլ կսարքեմ այնպես, որ ուրիշ թիվ ներմուծելու դեպքում ասի կրկին ներմուծեք:

Կառաջարկեմ այս եղանակը. բացում ենք նախապայմանով ցիկլ, ցիկլի մեջ n-ը բաժանում ենք երկուսի և k-ն մեկով ավելացնում ենք: Ցիկլի պայմանը n!=1-ն է: Այսինքն թիվը այնքան ենք բաժանում 2-ի վրա, մինչև դառնա մեկ:



___

armen9494
20.02.2012, 18:48
Խնդրում եմ եթե դժվար չի քայլ ռա քայլ բացատրեք էլի, որ ես հասկանամ, հետո էլ աշակերտներիս հասկացնեմ :)
Կասե՞ք, թե գրածիս որ մասը կոնկրետ հասկանալի չի, կարծում եմ էդ դեպքում ձեզ էլ ավելի հեշտ կլինի հասկանալ՝ կիմանաք, թե կոնկրետ որտեղ եք թերանում:
Վարզորի գրածը խորհուրդ չեմ տա փորձեք հասկանալ, որովհետև սկսնակի համար շատ բարդ է ու մի փոքր ավելին պետք է իմանաք, քան ծրագրավորումը:
Իսկ իրականում Վարզորինը շա՜տ ավելի օրիգինալ ու օպտիմալ լուծում է:hands

Հ.Գ. ես խնդրագիրք ունեմ (scan արած), Պոլիտեխնիկի ВТ-ում դրանով ենք անցնում, եթե ուզում եք, կարող եմ ուղարկել:

Varzor
20.02.2012, 20:17
Պարզ ա, իսկ մյուս թվերի համար կարո՞ղ եմ C++-ով գրել նման ծրագիր, թե՞ միայն կարողանում է թիվը երկուական դարձնել:
itoa պրոցեդուրան ընդունում է արժեքներ 2-ից մինչև 32 միջակայքում ;)
Առանց մեծ ջանքերի կարելի է գրել ֆունկցիա, որը կվերադարձնի տրված թբի այս կամ այն համակարգով արտահայտումը: Բնական է, որ այդ համակարգերի քանակը պիտի սահմանափակ լինի, քանի որ տարբեր համակարգերում թվերի արտահայտման սիմվոլային բազմությունը կարող է յուրահատուկ լինել: Օրինակ` 16-ականում 9 թվից հետո սկսում են A-F սիմվոլները: Ըստ էության կարելի է գրել մինչև 36-ականների համար` 0-9 թվանշանները, ավելացված A-Z լատինական այբուբենի 26 սիմվոլները

Ruzanna Stepanyan
20.02.2012, 23:42
Շնորհակալ եմ անչափ: Հասկացա վերջապես :)

Ruzanna Stepanyan
20.02.2012, 23:44
Կասե՞ք, թե գրածիս որ մասը կոնկրետ հասկանալի չի, կարծում եմ էդ դեպքում ձեզ էլ ավելի հեշտ կլինի հասկանալ՝ կիմանաք, թե կոնկրետ որտեղ եք թերանում:
Վարզորի գրածը խորհուրդ չեմ տա փորձեք հասկանալ, որովհետև սկսնակի համար շատ բարդ է ու մի փոքր ավելին պետք է իմանաք, քան ծրագրավորումը:
Իսկ իրականում Վարզորինը շա՜տ ավելի օրիգինալ ու օպտիմալ լուծում է:hands

Հ.Գ. ես խնդրագիրք ունեմ (scan արած), Պոլիտեխնիկի ВТ-ում դրանով ենք անցնում, եթե ուզում եք, կարող եմ ուղարկել:

Արմեն ջան եթե դժվար չի կուղարկես իմ mail-ին. [email protected]

armen9494
21.02.2012, 23:33
Վարզոր ախպեր մի բան ասեմ, չզարմանաս :D
Մենք երեկ խի՞ էինք էդքան խառնվել իրար՝ տո ցիկլով լուծում, տո երկուական կոդ, երեքական կոդ :D
Էսօր մեր տղեքից մեկին էս խնդիրը ասեցի, ընենց բան ասեց՝ աչքերս քյալիս էր թռել :o
Մի յուրահատուկ բան, որի անունն է լոգարիթմ :D
Էս էլ խնդիրը՝
էս դեպքում 2-ի k աստիճանի համար


#include <iostream.h>
#include <math.h>

void main ()
{
int x;
cin>>x;
cout<<(log(x)/log(2));
}

իսկ էս դեպքում ընդհանրապես y-ի k աստիճանի համար :))


#include <iostream.h>
#include <math.h>

void main ()
{
int x,y;
cin>>x;
cin>>y;
cout<<(log(x)/log(y));
}

Ռուզան, եթե լուծումը ձեզ հետաքրքրեց, կարող եմ բացատրել, թե ինչ եմ արել: Իրոք որ էս եղանակը շատ պարզ ու բոլորի համար հասկանալի է (եթե իհարկե գիտենք լոգարիթմ)

Varzor
22.02.2012, 10:45
Վարզոր ախպեր մի բան ասեմ, չզարմանաս :D
Մենք երեկ խի՞ էինք էդքան խառնվել իրար՝ տո ցիկլով լուծում, տո երկուական կոդ, երեքական կոդ :D
Էսօր մեր տղեքից մեկին էս խնդիրը ասեցի, ընենց բան ասեց՝ աչքերս քյալիս էր թռել :o
Մի յուրահատուկ բան, որի անունն է լոգարիթմ :D
Էս էլ խնդիրը՝
էս դեպքում 2-ի k աստիճանի համար

Դա ամենակարճ լուծումն է զուտ գրելու տեսանկյունից: Իսկ 2-ական կոդով արտահայտումը պրոցեսորայյին տակտերի տեսանկյունից ամենակարճն է, ընդ որում` մասնավոր, կոնկրետ այդ դեպքի համար: Պատճառը հասկանալի է` թվերը երկուականով են պահվում հիշողությունում:
Ու ընդհանրապես մենակ ցիկլերով այդ խնդիրը լուծելու բազմաթիվ տարբերակներ կան` նվազող բաժանումով, աճողական բազմապատկումով, pow-ի միջոցով և այլն:
Այսպիսի խնդիրներն էլ հենց կոչված են ծրագրավորողի մտքի ճկունությունը և ծրագրավորման լեզվի իմացությունը ստուգելու համար:

Ruzanna Stepanyan
22.02.2012, 16:11
Արմեն ջան, լուծումը շատ հետաքրքրեց, լոգարիթմ իհարկե գիտեմ:


Վարզոր ախպեր մի բան ասեմ, չզարմանաս :D
Մենք երեկ խի՞ էինք էդքան խառնվել իրար՝ տո ցիկլով լուծում, տո երկուական կոդ, երեքական կոդ :D
Էսօր մեր տղեքից մեկին էս խնդիրը ասեցի, ընենց բան ասեց՝ աչքերս քյալիս էր թռել :o
Մի յուրահատուկ բան, որի անունն է լոգարիթմ :D
Էս էլ խնդիրը՝
էս դեպքում 2-ի k աստիճանի համար



իսկ էս դեպքում ընդհանրապես y-ի k աստիճանի համար :))



Ռուզան, եթե լուծումը ձեզ հետաքրքրեց, կարող եմ բացատրել, թե ինչ եմ արել: Իրոք որ էս եղանակը շատ պարզ ու բոլորի համար հասկանալի է (եթե իհարկե գիտենք լոգարիթմ)

armen9494
22.02.2012, 16:24
Արմեն ջան, լուծումը շատ հետաքրքրեց, լոգարիթմ իհարկե գիտեմ:

Ինչ-որ պահ կա՞ր, որ անհասկանալի էր, եթե այո՝ ասեք, կմանրամասնեմ:

Ruzanna Stepanyan
22.02.2012, 16:36
Ինչ-որ պահ կա՞ր, որ անհասկանալի էր, եթե այո՝ ասեք, կմանրամասնեմ:


cout<<(log(x)/log(2));


եթե կարելի է սա մի քիչ մանրամասն կասեք

armen9494
22.02.2012, 16:48
cout<<(log(x)/log(2));


եթե կարելի է սա մի քիչ մանրամասն կասեք

Լավ:
cout<<-ը արտածման օպերատոր է:
Ուրեմն սենց, մեզ ի՞նչ է պետք հաշվել k-ն ստանալու համար՝ log2x (լոգարիթմ 2 հիմքով x)
C++ լեզվում չկա այնպիսի օպերատոր, որով կարողանանք գրել լոգարիթմ 2 հիմքով x : Կա միայն մի օպերատոր լոգարիթմ հաշվելու համար, որի հիմքը e-ն է՝ log
Դե մաթեմատիկայից էլ գիտենք, որ՝
logba = (logca) / (logcb)
որտեղից էլ log2x=(logex) / (loge2)
իսկ c++-ում դրա գրելաձևը այսպես է՝ log(x)/log(2)

Varzor
22.02.2012, 16:51
cout<<(log(x)/log(2));
եթե կարելի է սա մի քիչ մանրամասն կասեք

C++-ում Log ֆունկցիան բնական` e հիմքով լոգարիթմն է, մաթեմատիկական Ln() ֆունկցիայի համարժեքը:
Log2x=k, այսինքն k-ն այնպիսի թիվ է, որ 2k=x
Ըստ լոգարիթմերի կանոնի Logab=Logcb/Logca: Այսինքն կարելի է գրել` Logab=ln b/ln a: Մեր օրինակի դեպքում` Log2=ln x/ln 2=k: հենց այս օրինաչափությունն էլ C++ լեզվով գրվում է (log(x)/log(2));

Հ.Գ.
Չեմ կրկնվել, ուղղակի իմ գրելու ընթացքում Արմենն արդեն պատասխանել էր :))

armen9494
22.02.2012, 17:16
Հ.Գ.
Չեմ կրկնվել, ուղղակի իմ գրելու ընթացքում Արմենն արդեն պատասխանել էր :))

մեկս մյուսին հերթ չի տալիս պատասխանելու համար :D

Վարզոր ախպեր մի բան հարցնեմ էլի: Մոտս c++-ի վիդեոուռոկներ ունեմ, բայց չեմ կարում ջոկեմ, թե որ վերսիան ա, եթե քեզ առաջին ֆայլը ուղարկեմ (որի մեջ ինստալլյացիան ա երևում, բայց չի երևում ինչ-որ վերսիա), ուղղակի տեսքից կարո՞ղ ես ասել, թե էդ որն ա:

Varzor
22.02.2012, 17:51
մեկս մյուսին հերթ չի տալիս պատասխանելու համար :D
Վարզոր ախպեր մի բան հարցնեմ էլի: Մոտս c++-ի վիդեոուռոկներ ունեմ, բայց չեմ կարում ջոկեմ, թե որ վերսիան ա, եթե քեզ առաջին ֆայլը ուղարկեմ (որի մեջ ինստալլյացիան ա երևում, բայց չի երևում ինչ-որ վերսիա), ուղղակի տեսքից կարո՞ղ ես ասել, թե էդ որն ա:
Դե եթե երևում է` կասեմ: Ուղղակի որոշ տարբերակներ ես չեմ էլ տեղադրել` թռել եմ: Հիմա 2010-ն էմ քաշել, բայց դեռ չեմ դրել:

armen9494
22.02.2012, 17:59
Դե եթե երևում է` կասեմ: Ուղղակի որոշ տարբերակներ ես չեմ էլ տեղադրել` թռել եմ: Հիմա 2010-ն էմ քաշել, բայց դեռ չեմ դրել:

Ուղարկեցի;)

Ruzanna Stepanyan
22.02.2012, 18:12
Շնորհակալ եմ շատ:

Մի հատ էս խնդիրն էլ նայեք էլի ճիշ տեմ գրել թէ չէ

Հշավել և արտածել այն բնական թվերի քանակը, որոնց վրա առանց մնացորդի բաժանվում է տրված n բնական թիվը:

#include <iostream>
void main ()
{
int n,i,qanak;
cout<<"n=";
cin>>n;
i=1;
qanak=0;
while (n%i==0)
{
i++;
qanak++;
}
cout<<"qanak="<<qanak<<endl;
}

armen9494
22.02.2012, 18:22
Շնորհակալ եմ շատ:

Մի հատ էս խնդիրն էլ նայեք էլի ճիշ տեմ գրել թէ չէ

Հշավել և արտածել այն բնական թվերի քանակը, որոնց վրա առանց մնացորդի բաժանվում է տրված n բնական թիվը:

#include <iostream>
void main ()
{
int n,i,qanak;
cout<<"n=";
cin>>n;
i=1;
qanak=0;
while (n%i==0)
{
i++;
qanak++;
}
cout<<"qanak="<<qanak<<endl;
}

Իմ կարծիքով սխալ է: Մի հարց տամ. խնդրում կարելի՞ է օգտագործել for օպերատորը, թե խնդիրը while-ի համար է:

Ruzanna Stepanyan
22.02.2012, 18:26
հա կարելի է

armen9494
22.02.2012, 18:48
Էդ դեպքում առաջարկում եմ հետևյալ ալգորիթմը.
վերցնում ենք էդ թիվը ու for ցիկլով 1-ով պակասացնելով բաժանում իրեն նախորդող թվերի վրա՝ մինչև 1:
Ցիկլի մեջ ստուգում ենք տրված պայմանը:



#include <iostream.h>
void main ()
{
int n,i,qanak=0;
cout<<"n=";
cin>>n;
for(i=n-1;i>=1;i--)
if(n%i==0) ++qanak;
cout<<"qanak="<<qanak<<endl;
}



Բացվում ա ցիկլ, հետևյալ պայմանով՝ քանի դեռ i-ն մեծ է կամ հավասար մեկից, և յուրաքանչյուր թվի համար ստուգվում՝ արդյո՞ք n-ը բաժանվում է այդ թվին, թե ոչ:

Ruzanna Stepanyan
23.02.2012, 11:20
Շատ պարզ ու մատչելի :) Մերսի

armen9494
23.02.2012, 22:34
Ժողովուրդ մի քիչ շտապ ա պետք, եթե հնարավոր ա, կօգնե՞ք:
Գրածս ծրագիրը չեմ բացատրի, որովհետև հարցս էդքնա էլ դրա մասին չի:
Լավ, գրեմ հարցս, ինքներդ կհասկանաք:
Նախ լուծածս խնդիրը՝



#include <iostream.h>

void baz(int[][40],int[][40],int[][40],int);

void main()
{
int n,m,j,a[40][40], b[40][40], s[40][40];
do {cout<<"n="; cin>>n;} while(n<1 || n>40);
for( int i=1; i<=n; i++)
for( int j=1; j<=n; j++)
{
a[i][j]=0;
b[i][j]=0;
s[i][j]=0;
}
do {cout<<"m="; cin>>m;} while(m<1);
cout<<"artarceq tver@"<<endl;

for( int k=1; k<=m; k++)
{
cin>>i>>j;
cout<<endl;
a[i][j]=1;
b[i][j]=1;
s[i][j]=1;
}
k=0;
bool t=false;
do
{
for( i=1; i<=n; i++)
for( j=1; j<=n; j++)
if(b[i,j]!=0)
{
t=true;
k++;
break;
}
if(true==t)
break;
if(true==t)
baz(a,b,s,n);
// for( i=1; i<=n; i++)
// for( j=1; j<=n; j++)
// cout<<b[i][j];
} while( true==t);
cout<<k;
for( i=1; i<=n; i++)
{
for( j=1; j<=n; j++)
cout<<s[i][j];
cout<<endl;
}

}

void baz(int a[][40], int b[][40], int s[][40], int n)
{
int c[40][40];
for( int i=1; i<=n; i++)
for( int j=1; j<=n; j++)
{
c[i][j]=0;
for( int k=1; k<=n; k++)
c[i][j]+=a[i][k]*b[k][j];
}
for( i=1; i<=n; i++)
for( int j=1; j<=n; j++)
{
b[i][j]=c[i][j];
s[i][j]+=c[i][j];
}
}



Լավ, միանգամից էջը մի փակեք, էդքան էլ ահավոր բան չի:oy
Ուրեմն ծրագրի 20,21,22-րդ տողերում ես ստեղծում եմ a, b և s մատրիցները, որի տարրերը կամ 1 են, կամ 0 (սկզբում (տող 10-12)բոլորը 0 եմ սարքել, իսկ հիմա որը պետք ա 1 եմ դնում):
Ուրեմն a մատրիցը խնդրի լուծման ընթացքում չի փոփոխվում:
Խնդրիս մեջ ունեմ baz ֆունկցիան (տող 2-նախատիպ, տող 52-ֆունկցիա):
Ուրեմն այդ ֆունկցիայի մեջ a մատրիցը բազմապատկվում է b-ով, ստացվում c մատրիցը: Հետո c-ի մեջի եղածը գրվում է b-ի մեջ: Այնուհետև s մատրիցին գումարվում է b մատրիցը:

Դե ցիկլերս որոշ ժամանակ հետո վերջանում են (այն ժամանակ, երբ b մատրիցի բոլոր տարրերը 0 են դառնում) և ես ուզում եմ տպել ստացված s մատրիցը (տող 45-49), բայց արդյունքում տպում ա էն հին՝ տող 22-րդի արդյունքում ստացածս (կարող եք չստուգել՝ a մատրիցը հաստատ չի):

Ծրագիրս pascal-ով գրել եմ, չոտկի աշխատում ա, էս ա՝



type matric=array[1..40,1..40] of integer;
var a,b,s:matric;
i,j,n,m,k:integer; t:boolean;
procedure baz(var a,b,s:matric; n:integer);
var i,j,k:integer; c:matric;
begin
for i:=1 to n do
for j:=1 to n do
begin
c[i,j]:=0;
for k:=1 to n do
c[i,j]:=c[i,j]+a[i,k]*b[k,j];
end;

for i:=1 to n do
for j:=1 to n do
begin
b[i,j]:=c[i,j];
s[i,j]:=s[i,j]+b[i,j]
end
end;

begin
repeat
write('n=');
read(n);
writeln;
until(n>1) and (n<=40);
for i:=1 to n do
for j:=1 to n do
begin
a[i,j]:=0;
b[i,j]:=0;
s[i,j]:=0;
end;
repeat
write('m=');
read(m);
writeln;
until(m>1);
write('mutqagreq tver@');
writeln;
for k:=1 to m do
begin
read(i,j);
writeln;
a[i,j]:=1;
b[i,j]:=1;
s[i,j]:=1;
end;
k:=0;
repeat
t:=false;
for i:=1 to n do
begin
for j:=1 to n do
if b[i,j]<>0 then
begin
t:=true;
k:=k+1;
break
end;
if t=true then break
end;
if t=true then
baz(a,b,s,n)
until t=false;
write(k)
end.



Հ.Գ. Վարզոր ջան քեզ կարող ա ծանոթ լինի, խնդիրը կառավարման հիմունքներից ա;)
Հ.Հ.Գ. ի դեպ՝ ես մտածված եմ զանգվածը 1-ին տարրից սկսել արժեքավորելը, կարծում եմ դա ինչ-որ պռոբլեմի առաջ չպիտի բերի

armen9494
23.02.2012, 23:08
Վայ, ներողություն եմ խնդրում, էն վերևի տեղադրածս խնդրի pascal-ի տարբերակը սխալն եմ տեղադրել:oy
ճիշտը էս ա



uses crt;
type matric=array[1..40,1..40] of integer;
var a,b,s:matric;
i,j,n,m,k:integer; t:boolean;
procedure baz(var a,b,s:matric; n:integer);
var i,j,k:integer; c:matric;
begin
for i:=1 to n do
for j:=1 to n do
begin
c[i,j]:=0;
for k:=1 to n do
c[i,j]:=c[i,j]+a[i,k]*b[k,j];
end;
{ readkey; }
for i:=1 to n do
begin
for j:=1 to n do
begin
{ write(b[i,j]);}
b[i,j]:=c[i,j];
s[i,j]:=s[i,j]+b[i,j]
end;
{ writeln; }
end;
end;

begin
repeat
write('n=');
read(n);
until(n>1) and (n<=40);
for i:=1 to n do
for j:=1 to n do
begin
a[i,j]:=0;
b[i,j]:=0;
s[i,j]:=0;
end;
repeat
write('m=');
read(m);
until(m>1);
write('mutqagreq tver@');
writeln;
for k:=1 to m do
begin
read(i,j);
{ writeln;}
a[i,j]:=1;
b[i,j]:=1;
s[i,j]:=1;
end;
k:=0;
repeat
t:=false;
for i:=1 to n do
begin
for j:=1 to n do
if b[i,j]<>0 then
begin
t:=true;
k:=k+1;
break
end;
if t=true then break
end;
if t=true then
baz(a,b,s,n)
until t=false;
writeln('k=',k);
for i:=1 to n do
begin
for j:=1 to n do
write(s[i,j]);
writeln;
end;
readkey;


end.

soultaker
24.02.2012, 01:46
Տող 30`


if(b[i,j]!=0)


չգիտեմ քո պրոբլեմը ինչիցա, բայց էս մասը ուզեցել ես գրես if(b[i][j]!=0), էն էլ պասկալով ես գրել :))

Ներսես_AM
24.02.2012, 03:02
Արմեն ջան էս վերևում սխալդ թույն սխալ ա: :D

Նախախես ասեմ որ C++ համարյա չգիտեմ: Բայց ոնց որ թե գիտեմ ինչումն ա սխալդ: Ուրեմն մեթոդ կանչելուց երկու տարբերակ կա պարամետրեր փոխանցելու: Փոխանցում արժեքով (pass by value) ու փոխանցում ցուցիչով(pass by reference):
Արժեքով փոխանցում կատարելուց հիշողության մեջ ստեղծվում է փոխանցվողի կրկնօրինակը ու մեթոդի մեջ հետը ինչ ուզում ես արա սկզբնականի վրա չի ազդի քանի որ բոլոր գործողությունները կատարվում են կրկնօրինակի վրա:
Ցուցիչով փոխանցում կատարելիս փոխանցվում է փոխանցվող պարամետրի ցուցիչը ու բոլոր գործողություննը փոխում են սկզբնականը:

Օրինակ Պասկալում արվում ա սենց
procedure baz(var n:integer); //Փոխանցում ցուցիչով
procedure baz(n:integer); //Փոխանցում արժեքով

որ սկսեցի գրառումս գրել ասեցի ինտերնետում կնայեմ մի քիչ կգրեմ Սիով ոնց ա, էն էլ հիմա պիտի գնամ: Հնարավոր ա իմ ասածի հետ կապ չունի, որովհետև ոնց ասեցի Սի չգիտեմ:

armen9494
24.02.2012, 11:24
Ներսես ջան էդքանը հաշվի առել եմ, c++-ում զանգվածը հենց հասցեով էլ փոխանցվում ա ֆունկցիային, դրա համար ուրիշ ոչինչ անել պետք չի, սխալը ըտեղ չի:
soultaker ջան մերսի, չէի նկատել, ասելուցդ էլ հետո մի 5 րոպե նայում էի ու չէի ջոկում, թե ինչն ա սխալ. Պասկալը նստել ա մեջս :))
բա ինչի՞ էր ծրագրիս էդ մասը ճիշտ աշխատում :pardon

Հ.Գ. լավ, էս կարգի անիմաստ սխալ անեմ, որ չկարողանամ գտնեմ :))

soultaker
24.02.2012, 13:43
բա ինչի՞ էր ծրագրիս էդ մասը ճիշտ աշխատում :pardon


Էտ մասը սինտաքսով ճիշտա համարվում, գրածա`
if(b[i,j]!=0)

Սրա մեջ i,j իրենից ներկայացնումա արտահայտություն: Կամայական ստորակետով իրարից բաժանված արժեքների հաջորդականությունը մշակվումա հետևյալ կերպ` հերթով հաշվումա ամեն մասի արժեքը (տվյալ դեպքում i ու j), վերջում արտահայտության ընդհանուր արժեքը լինումա վերջին մասի արժեքը, իսկ մնացած մասերի արժեքները անտեսվում են: Ասենք եթե գրեյիր i+=j,j էտ դեպքում սկզբում մի հատ i-ին կգումարեր j, հետո կվերադարձներ j-ի արժեքը: Այսինքն i,j արժեքով համարժեք է j-ին, ու նույնը կլիներ եթե
if(b[i,j]!=0)
փոխարեն գրեյիր
if(b[j]!=0)

armen9494
24.02.2012, 14:19
Էտ մասը սինտաքսով ճիշտա համարվում, գրածա`
if(b[i,j]!=0)

Սրա մեջ i,j իրենից ներկայացնումա արտահայտություն: Կամայական ստորակետով իրարից բաժանված արժեքների հաջորդականությունը մշակվումա հետևյալ կերպ` հերթով հաշվումա ամեն մասի արժեքը (տվյալ դեպքում i ու j), վերջում արտահայտության ընդհանուր արժեքը լինումա վերջին մասի արժեքը, իսկ մնացած մասերի արժեքները անտեսվում են: Ասենք եթե գրեյիր i+=j,j էտ դեպքում սկզբում մի հատ i-ին կգումարեր j, հետո կվերադարձներ j-ի արժեքը: Այսինքն i,j արժեքով համարժեք է j-ին, ու նույնը կլիներ եթե
if(b[i,j]!=0)
փոխարեն գրեյիր
if(b[j]!=0)

Այսինքն էս դեպքում ինքը ի՞նչ ա ստուգում, եթե իմ մոտ մատրիցը երկչափ ա՝
if(b[j]!=0)

Varzor
24.02.2012, 16:42
Այսինքն էս դեպքում ինքը ի՞նչ ա ստուգում, եթե իմ մոտ մատրիցը երկչափ ա՝
if(b[j]!=0)
Ստուգում ա j տողը: Ըստ էության C++-ում երկչափ մատրիցը միաչափ վեկտորների վեկտոր է և թույլ է տալիս միանգամից վեկտորների մակարդակով գործողություններ կատարել:

armen9494
24.02.2012, 17:46
Բայց ո՞նց ա ստուգում j տողը, եթե այն թիվ չի, այլ տարրեր են, որոնք ունեն տարբեր արժեքներ :pardon

Varzor
24.02.2012, 19:40
Բայց ո՞նց ա ստուգում j տողը, եթե այն թիվ չի, այլ տարրեր են, որոնք ունեն տարբեր արժեքներ :pardon
Շատ զգուշ ստուգում ա :))
Փորքի, մի փոքր կոդ գրի ու կհամոզվես:
Ըստ էության զանգվածի փոփոխականը ոչ այլ ինչ է, քան այդ զանգվաի էլեմենտների տեղակայման նշիչ (указатель): Երբ գործողություն ես կատարում հենց մենակ իր հետ, գործողութոյւն ես կատարում այդ նշիչի հետ: Օրինակ`
int a[10];
int b[10];
Եթե b զանգվածն ունեi ինչ-թր էլէմենտներ, ապա կարող ես միանգամից գրել a=b ու ա-ն նույնպես կստանա b-ի էլեմենտները:
Ես հիշում եմ, որ զանգվածների հետ աշխատելիս հայտարարում էինք int* x կամ int** x: Այս դեպքում արդեն պարտադիր չի նախապես հայտարարել զանգվածի չափերը ու եթե հայտարարելուց հետո գործուոյթուն կատարվի, ասենք x[1] = 0, ապա կհասկանա:

Անկեղծ ասած այս ամենի հիմունքները շատ աղոտ եմ հիշում :(

armen9494
24.02.2012, 19:57
Շատ զգուշ ստուգում ա :))
Փորքի, մի փոքր կոդ գրի ու կհամոզվես:
Ըստ էության զանգվածի փոփոխականը ոչ այլ ինչ է, քան այդ զանգվաի էլեմենտների տեղակայման նշիչ (указатель): Երբ գործողություն ես կատարում հենց մենակ իր հետ, գործողութոյւն ես կատարում այդ նշիչի հետ: Օրինակ`
int a[10];
int b[10];
Եթե b զանգվածն ունեi ինչ-թր էլէմենտներ, ապա կարող ես միանգամից գրել a=b ու ա-ն նույնպես կստանա b-ի էլեմենտները:
Ես հիշում եմ, որ զանգվածների հետ աշխատելիս հայտարարում էինք int* x կամ int** x: Այս դեպքում արդեն պարտադիր չի նախապես հայտարարել զանգվածի չափերը ու եթե հայտարարելուց հետո գործուոյթուն կատարվի, ասենք x[1] = 0, ապա կհասկանա:

Անկեղծ ասած այս ամենի հիմունքները շատ աղոտ եմ հիշում :(

Լավ, էս պահը մոտավորապես հասկացա, հիմա էն s-ը ինչի՞ ճիշտ չի հաշվում :(

MSGM
24.02.2012, 20:44
36-39 տողերում գրել ես.

if(true==t)
break;
if(true==t)
baz(a,b,s,n);
:D
Այսինքն baz ֆունկցիան երբեք չի կանչվում, s-ն էլ, բնականաբար, չի փոխվում:

armen9494
24.02.2012, 21:37
36-39 տողերում գրել ես.

if(true==t)
break;
if(true==t)
baz(a,b,s,n);
:D
Այսինքն baz ֆունկցիան երբեք չի կանչվում, s-ն էլ, բնականաբար, չի փոխվում:

Հաաա, պարզ ա, ձևավոր begin end-ն եմ մոռացել :D
Մերսի շատ:)

armen9494
24.02.2012, 22:16
Լուծեցի :yahoo
Բոլորիդ շատ շատ շնորհակալություն :hands

armen9494
02.03.2012, 21:47
Ժողովուրդ մոտս մի խնդիր կա, կապված c++ 2010-ի հետ: Ուրեմն երբ 6.0-ով սարքում եմ MFC application ինձ տալիս ա մի "պանել", որի մեջ կան որոշակի ֆունկցիայով նշաններ (կոճակ, տեքստ գրելու տեղ և այլն), որոնք կարող եմ հանգիստ վերցնել ու դնել իմ պրոյեկտի մեջ: Իսկ 2010-ով դա չկա, չեմ կարծում, որ ընդհանրապես չկա, ուղղակի երևի լավ պախկվել ա:(
Պանելի անունը 6.0-ում Controls-ա:

armen9494
04.03.2012, 11:59
Ժողովուրդ մոտս մի խնդիր կա, կապված c++ 2010-ի հետ: Ուրեմն երբ 6.0-ով սարքում եմ MFC application ինձ տալիս ա մի "պանել", որի մեջ կան որոշակի ֆունկցիայով նշաններ (կոճակ, տեքստ գրելու տեղ և այլն), որոնք կարող եմ հանգիստ վերցնել ու դնել իմ պրոյեկտի մեջ: Իսկ 2010-ով դա չկա, չեմ կարծում, որ ընդհանրապես չկա, ուղղակի երևի լավ պախկվել ա:(
Պանելի անունը 6.0-ում Controls-ա:

գտա :yahoo

armen9494
10.03.2012, 21:27
Ու նորից ես :))
Էս անգամ էլ հարցս ֆայլերից ա (հլը որ էդքան լավ չգիտեմ, եթե հարցս շատ պրիմիտիվ ա, կխնդրեմ չքարկոծել :tomato)

Ուրեմն ունեմ ֆայլ, որի մեջ էս տեսքով int տիպի թվեր են գրված՝

a1 a2
a3 a4
a5 a6
........

(օրինակ)

2 8
7 9
54 21
6 0


Հիմա ուզում եմ մի ծրագիր գրեմ, որի միջոցով կկարողանամ էս ֆայլի մեջի թվերը գրել մատրիցի մեջ՝

a[1][1] a[1][2]
a[2][1] a[2][2]
a[3][1] a[3][2]
.............

հլը որ ինչ անում եմ չի ստացվում, կարդալու հետ խնդիրներ ա առաջանում (լրիվ ուրիշ բան ա հասկանում):

Արտո8
18.03.2012, 09:49
Բարև բոլորին.
հետաքրքիր խնդիր առաջարկեմ. c++ -ով գրեք կոդ a[i1], a[i2], a[i3] տեղափոխվի a[j1], a[j2], a[j3] ցիկլով for(int i = 0; i < 3; ++i) {...} և չօգտագործելով if(...), c ? a : b և switch(...) օպերատորները ցիկլի ներսում և օգտագործվի մեկ = օպերատոր, որտեղ i1, i2, i3, j1, j2, j3 const int են, a[] array:

Արտո8
18.03.2012, 10:16
քանի որ չթողեց խմբագրեմ, ավելացնում եմ. նախորդ խնդրում չօգտագործել օժանդակ array-ներ և փոփոխականներ:

soultaker
18.03.2012, 13:46
Եթե i1, i2, i3, j1, j2, j3 թվերը 1023-ից մեծ չեն, ապա`



for(int i = 0; i < 3; ++i)
{
a[((j1 + (j2 << 10) + (j3 << 20)) >> (i * 10)) & 1023] = a[((i1 + (i2 << 10) + (i3 << 20)) >> (i * 10)) & 1023];
}

Արտո8
18.03.2012, 19:43
իմ պայմաններին բավարարում է, ինձ պարզ է Ձեր մոտեցումը, բայց ինչպես Դուք նշեցիք, ունի սահմանափակում, իսկ ինչ կասեք ընդհանուր դեպքի համար, երբ i1, i2, i3, j1, j2, j3 լրիվ ամբողջ թվեր են որքան որ հնարավոր է c++-ում ամենամեծ int արժեքի համար, կամ որ եթե ունենք ոչ թէ 3-ի դեպքը , այլ 4 կամ 5, ինչպես օրինակ i1, i2, i3, i4, i5, j1, j2, j3, j4, j5 և for(int = 0; i < 5; ++i) {...}, այդ դեպքում սահմանափակումը էլ ավելի կսեխմվի: Կա լուծում առանց այդ սահմանափակման: Իսկ Դուք աշխատում եք c++-ով?: Ես կսպասեմ, որ մասնակցեն synopsis, cqg, և նմանատիպ ֆիրմաների c++ ծրագրավորողները, եթե իհարկե այնքան մեծամիտ չեն գտնվի առհամարեն ու կփորձեն լուծում գտնել: Իսկ ես 88 օր հետո իմ լուծումը կտեղադրեմ այստեղ:

soultaker
19.03.2012, 02:52
Իսկ Դուք աշխատում եք c++-ով?
Մի ժամանակ աշխատում էի, հիմա` ոչ:


Իսկ ես 88 օր հետո իմ լուծումը կտեղադրեմ այստեղ:
88 օրը շատ չի՞:

Ամեն դեպքում հետաքրքիր խնդիր էր, կփորձեմ ամբողջական լուծում գտնել:

soultaker
19.03.2012, 03:01
Այս մեկն արդեն առանց սահմանափակումների`



for(int i = 0; i < 3; ++i)
{
a[j1 * (i == 0) + j2 * (i == 1) + j3 * (i == 2)] = a[i1 * (i == 0) + i2 * (i == 1) + i3 * (i == 2)];
}

Արտո8
19.03.2012, 09:35
խորամանկ ձևով օգտագործվեց համեմատման օպերատոր ==, թեև ճիշտ է, այդ կոնկրետ դեպքը ես չէի նշել խնդրի պայմաններում-), ամեն դեպքում ինքնատիպ լուծում է, բայց իմ լուծումը դա չէ, իսկ 88 օր, որ ժամանակ լիներ մեծ աուդիտորիա այս խնդրին մասնակցեր: Այն ասեմ, որ իմ լուծումը ոչ մի համեմատման օպերատոր չի օգտագործում:

soultaker
19.03.2012, 17:25
Լավ էտ դեպքում մի հատ էլ մաթեմատիկական լուծում` առանց օպերատոր ==


for(int i = 0; i < 3; ++i)
{
a[j1 * ((i + 1) % 3 % 2) + j2 * ((i + 2) % 4 % 2) + j3 * ((i + 3) % 4 % 3)] = a[i1 * ((i + 1) % 3 % 2) + i2 * ((i + 2) % 4 % 2) + i3 * ((i + 3) % 4 % 3)];
}

Արտո8
19.03.2012, 21:19
այդպես ստացվեց, մենակ 4, 5 կամ ավել դեպքերի համար որոշ չափ կբարթանա: Դե որ մի լուծում տվիր, ես ել իմ լուծումը կտամ:
Վաղուց c++-ով չեմ զբաղվում, ու եթե ճիղտ եմ հիշում a / b որտեղ a, b int տիպի են, ստացվում է ամբողջ մասը, ասենք 1 / 2 = 0 կամ 3 / 2 = 1: Այդ դեպքւմ իմ լուծումը ասպես կլինի, ու օրինաչափությունը կարծում եմ պարզ կլինի.
a[j1 * (1 / (1 + i)) + j2 * (1 / (1 + (i - 1) (i - 1))) + j3 * (1 / (1 + (i -2) (i - 2))) + j4 * (1 / (1 + (i -3) (i - 3))) + j5 * (1 / (1 + (i - 4) (i - 4))) ...

Ruzanna Stepanyan
30.03.2012, 09:50
Խնդրում եմ օգնեք՝ այս խնդրի լուծման հետ կապված: Խնդրում եմ մանրամասն բացատրեք, եթե դժվար չի: Նախապես շնորհակալ եմ

Հաշվել և արտածել տրված n տարր պարունակող միաչափ զանգվածի զույգ ինդեքս ունեցող տարրերի գումարը:

#include <iostream>
using namespace std;
void main()
{
int s[n],i,x,n;
cin>>n;
for(i=1; i<=n; i++)
cin>>x[i];
s=0;
for(i=0; i<n; i++)

if(i%2==0)
{
s=s+x[i];
}
else
cout<<"s="<<s<<endl;
}

armen9494
30.03.2012, 18:22
Խնդրում եմ օգնեք՝ այս խնդրի լուծման հետ կապված: Խնդրում եմ մանրամասն բացատրեք, եթե դժվար չի: Նախապես շնորհակալ եմ

Հաշվել և արտածել տրված n տարր պարունակող միաչափ զանգվածի զույգ ինդեքս ունեցող տարրերի գումարը:

Խնդիրը շատ պարզ է, ահա լուծումը


#include <iostream.h>

void main()
{
double x[100],s=0;
int i,n;
do { cin>>n; } while(1>n || n>100);
for( i=0; i<n; i++)
{
cout<<"x["<<i<<"]=";
cin>>x[i];
}

for( i=2; i<n; i+=2)
s+=x[i];
cout<<"s="<<s<<endl;
}


Կարծում եմ առաջին 5 տողը մեկնաբանելու կարիք չկա:
Տող 6 - քանի որ զանգվածը հայտարարվել է 100 տարրանի (տող 4-ում կարող ենք փոխել այդ թիվը) ուրեմն n-ի վրա դնենք սահմանափակում: Այսինքն այս տողով n-ը կներմուծվի այնքան ժամանակ, քանի դեռ այն փոքր է 1-ից և մեծ 100-ից:
Տող 7 - բացում ենք ցիկլ, զանգվածի տարրերը ներմուծելու համար:
Տող 9 - զուտ գեղեցկության համար :)) որ ներմուծելուց պարզ լինի, թե այդ պահին որ տարրն ենք ներմուծում:
Տող 10 - ներմուծում ենք մատրիցի տարրերը:
Տող 12 - այ ստեղ արդեն սկսվեց խնդրի լուծումը: Ուրեմն, քանի որ 0-ն զույգ թիվ չէ, քանի որ զույգ են այն բնական թվերը, որոնք առանց մնացորդի բաժանվում են 2-ի, իսկ 0-ն բնական թիվ չէ: Դե 1-ը կենտ է: Ուրեմն սկսենք 2-ից: Մինչև էս i-ն միշտ մեծացնում էինք 1-ով (i++), այս անգամ i-ն մեծացնենք 2-ով (i+=2): Դե այսինքն ինքը կվերցնի միայն զույգ ինդեքսով տարրերը ու էլ պայման ստուգել պետք չի, ուղղակի s-ի մեջ գումարենք (տող 4-ում s-ը նախապես դարձրել ենք 0):
Տող 14 - արտածում ենք s-ը :)

Ruzanna Stepanyan
30.03.2012, 22:57
100 անգամ շնորհակալ եմ բացատրության համար :)

բայց մի բան ինձ անհասկանալի մնաց, քանի որ ինքս ակսնակ եմ , ինչի ենք x-ը double տիպի հայտարարում? և մի հարց էլ ` կարող եմ չէ 100 -ի փոխարեն n գրել?

Lusina
30.03.2012, 23:08
Եկեք մի բան էլ ես ասեմ քննարկենք,հեշտ բան ա, բայց օրինակ իմ մտքով չէր անցել մինչև չասեցին.
Ունենք int տիպի a մասիվ.Կարո՞ղ ենք այսպիսի բան գրել.
a[i] == i[a]

Valentina
30.03.2012, 23:57
Եկեք մի բան էլ ես ասեմ քննարկենք,հեշտ բան ա, բայց օրինակ իմ մտքով չէր անցել մինչև չասեցին.
Ունենք int տիպի a մասիվ.Կարո՞ղ ենք այսպիսի բան գրել.
a[i] == i[a]
Այո, էտ շուստրի հարցն առաջին կուրսի քննությանն եմ ստացել :)) Ասում էր 2[a]-ն որն ա?
Լեկցիայում սենց թռուցիկ կես բերան ասել էր դասախոսը:

armen9494
31.03.2012, 00:54
100 անգամ շնորհակալ եմ բացատրության համար :)

բայց մի բան ինձ անհասկանալի մնաց, քանի որ ինքս ակսնակ եմ , ինչի ենք x-ը double տիպի հայտարարում? և մի հարց էլ ` կարող եմ չէ 100 -ի փոխարեն n գրել?

Դե x-ը կարող եք հայտարարել ինչ տիպի որ կուզեք, էդ կապ չունի:
Այ 100-ի փոխարեն n գրել ինչքան գիտեմ չենք կարող սովորական եղանակով (դե ալտերնատիվ միջոց հաստատ կլինի, բայց դժվար թե էդ ձեր խնդիրներում հետաքրքրի): Չնայած հնարավոր է նաև մի հեշտ հասկանալի մեթոդ առաջարկեն: Ինքս դեռ չգիտեմ:

armen9494
31.03.2012, 01:04
Եկեք մի բան էլ ես ասեմ քննարկենք,հեշտ բան ա, բայց օրինակ իմ մտքով չէր անցել մինչև չասեցին.
Ունենք int տիպի a մասիվ.Կարո՞ղ ենք այսպիսի բան գրել.
a[i] == i[a]

Հաաա, մոտավորապես հասկացա ինչի մասին ա խոսքը, բայց ճշգրիտ պատասխան տալ չեմ կարող: Քանի որ զանգվածի անունը (էս դեպքում a-ն) հենց ինքը հասցե ա, դրա պատճառով սխալ չի տալիս...բայց թե ինչ ա բերում, էդքան էլ չեմ հասկանում: Սկզբում մտածում էի, որ հենց զանգվածի առաջին տարրը կբերի, բայց ոնց որ թե չէ: