PDA

Դիտել ողջ տարբերակը : օգնեք խնդրում եմ C++-ի գիտակներ



Anahit**
01.05.2015, 12:51
C++ լավ իմացողներ ջան անհատականիս թեման է գրել խնդիր որ էկրանին արտապատկերի շախմատային տախտակի պատկերը: խնդիրը գտել եմ բայց մի բան կա չեմ հասկանում: Հուսով եմ կբացատրեք:
#include <iostream>
using namespace std;
const char black=219;
const char white=32;
const int size=8;
const int block=3;
int main()
{ for(int i=0; i<size; i++){
for(int u=0; u<block; u++){
for(int j=0; j<size; j++){
int c=(i+j) &1;
for (int k=0; k<block; K++){
if (c==1){
cout<<black;}
else{
cout<<white;
}}}
cout<<endl;}}
return 0; }
11-րդ տողում, որ գրված է &1, ինչ ֆունկցիա է կատարում դա: ես գիտեմ, որ & նշանը նախատեսված է ցուցիչների համար, բայց այս խնդրում ցուցիչ չի օգտագործվում:

Արամ
01.05.2015, 15:12
& - Բիտային և

գրելավոճը․ արտահայտություն & արտահայտություն

նկարագրություն․ Բիտային և օպերատորը առաջին արտահայտության ամեն հերթական բիտ-ը համեմատում է երկրորդ արտահայատության համապատասխան բիտ-ի հետ։ Եթե երկուսն էլ 1 են ապա արդյունքի համապատասխան բիտ-ը կլինի 1, հակառակ դեպքում 0։

օրինակ․


unsigned short a = 0xFFFF; // 2-ականով 1111 ...
unsigned short b = 0xAAAA; // 2-ականով 1010 ...

cout << ( a & b ) << endl; // տպում է "0xAAAA", երկուականով 1010 ...

կոնկրետ դեպքում․


int c = (i + j) & 1;Այս տողը ստուգում է, եթե i+j` հերթական շախմատի վանդակը, զույգ թիվ է թե կենտ, ավելի կոնկրետ ստուգում է i+j -ի վերջին բիտը 1-ի հետ, այսինքն եթե i+j վերջին բիտը դրված է` 1 է, նշանակում է, որ թիվը կենտ է, եթե դրված չէ ուրեմն թիվը զույգ է։
Այսինքն, եթե c==1, ուրեմն թիվը կենտ է, հակառակ դեպքում զույգ։
Այս ստուգումը անում է սպիտակ/սև վանդակ նկարելուց՝


if (c == 1){
cout << black;
}
else{
cout << white;
}

Anahit**
01.05.2015, 17:53
շատ շնորհակալ եմ, ամեն ինչ շատ պարզ էր բացատրված:)

Anahit**
01.05.2015, 18:05
մի հատ էլ հարց տամ և վերջ: 219 C++-ում համապատասխանում է սևին, իսկ 32-ը սպիտակին? ուղղակի այդ 2 թվերի փոխարեն ուրիշ թվեր եմ փորձել ու ինչ-որ նշաններ են պատկերվել վանդակների փոխարեն: եթե սևի ու սպիտակի փոխարեն ուզենամ կարմիր և, ենթադրենք, կանաչ լիներ, այդ դեպքում ինչ պիտի անեմ?

Արամ
01.05.2015, 19:34
char tmpChar = 'a';
C++ -ում ենթադրվում է, որ char տիպի փոփոխականները պետք է ստանան char տիպի արժեքներ, օրինակ ՝ 'a','b','%','$', բայց ոչ ասենք "abc", "abc"-ն արդեն 3 տարրանոց char-երի զանգված է։
Կոնկրետ Ձեր օրինակում`

const char black=219;

Քանի որ char-ին թիվ է վերագրած, դա նշանակում է, որ ASCII-ի աղուսյակում այդ թվին համապատասխանող char կա։

ASCII—ի աղուսյակին կարող ես ծանոթանալ ասյտեղ՝ http://www.asciitable.com/։

Որ աղուսյակում նայեք կտեսնեք, 219-ը քառկուսի է, իսկ 32 հասարակ space:

Console Application-ում գույներով գրելու համար կարող եք կարդալ այս հոդվածը՝ http://www.cplusplus.com/forum/beginner/5830/։

Օրինակ int main() -ի սկզբում կարող եք գրել՝

system("Color F6");

Ուշադրություն դարձրեք, որ սրանով դուք որոշում եք foregroud/background—ի գույները, ոչ թե կոնկրետ char—ի։

Anahit**
01.05.2015, 20:01
շատ-շատ շնորհակալ եմ

Anahit**
01.05.2015, 22:23
ես նույն խնդիրը փորձեցի ուրիշ եղանակով, բայց չստացվեց: կասեք որն է սխալը?
#include <iostream>
using namespace std;
const char black=219;
const char white=32;
const int size=8;
const int block=3;
int main()
{
for (int i=0; i<size; i++){
for (int u=0; u<block; u++){
for(int j=0; j<size; j++){
for(int k=0; k<block; k++){
if(i+j%2=0){
cout<<black;
}
else{
cout << white;
}
}
}
cout << endl;
}
}
return 0;
}

Chuk
02.05.2015, 00:20
if(i+j%2=0)


if ( (i+j)%2 == 0 )

Anahit**
02.05.2015, 12:02
մերսի շատ-շատ :)

Anahit**
05.05.2015, 20:37
ժողովուրդ ջաան ևս 1 խնդրանք: եթե դժվար չի ձեր համար խնդրում եմ էլի օգնել: պետքա ծրագիր գրեմ որ էկրանին աշխատող ժամ երևա, ընդ որում սլաքներով: մեկ էլ պետքա ծրագիր գրեմ որ էկրանին շարժվող շրջանագիծ երևա: օգնեք հա խնդրում եմ, ինտերնետից ոչ մի բան չկարողացա գտնեմ

Արամ
05.05.2015, 20:45
ժողովուրդ ջաան ևս 1 խնդրանք: եթե դժվար չի ձեր համար խնդրում եմ էլի օգնել: պետքա ծրագիր գրեմ որ էկրանին աշխատող ժամ երևա, ընդ որում սլաքներով: մեկ էլ պետքա ծրագիր գրեմ որ էկրանին շարժվող շրջանագիծ երևա: օգնեք հա խնդրում եմ, ինտերնետից ոչ մի բան չկարողացա գտնեմ

Անահիտ ջան սա արդեն հարց չի, սա արդեն ձեր տեղը աշխատել/սովորել ա։

Ժամացույց ՝ http://www.dreamincode.net/forums/topic/62217-clock-in-c-console/

Շարժվող շրջանագիզը ո՞րն ա։

Anahit**
05.05.2015, 20:47
լավ, էլ պետք չի ետ, շնորհակալություն

Anahit**
05.05.2015, 20:52
ինտերնետից ես ձեր ուղղարկածը գտել էի, բայց դա պարզապես ժամն էր ցույց տալիս, իսկ ինձ պետք էր որ էկրանին ժամացույց երևար սլաքներով աշխատող

Արամ
05.05.2015, 21:05
ինտերնետից ես ձեր ուղղարկածը գտել էի, բայց դա պարզապես ժամն էր ցույց տալիս, իսկ ինձ պետք էր որ էկրանին ժամացույց երևար սլաքներով աշխատող

Ո՞վ ա էդ խնդիրը ձեզ տվել: Որտե՞ղ են տվել։ Ու ի՞նչ օգտագործելով պետք ա նկարել ժամացույցը։

Anahit**
05.05.2015, 21:08
Հայաստանի պետական տնտեսագիտական համալսարանում C++ առարկայից անհատական աշխատանքի համար: կապ չունի թե ինչ կօգտագործվի, կարևորը վերջում ստանանք ժամացույց

Արամ
05.05.2015, 21:10
Հայաստանի պետական տնտեսագիտական համալսարանում C++ առարկայից անհատական աշխատանքի համար: կապ չունի թե ինչ կօգտագործվի, կարևորը վերջում ստանանք ժամացույց

Ո՞նց կապ չունի, հիմա եթե ես OpenGL-ով ժամացույց նկարեմ էդ կլինի՞։

Anahit**
05.05.2015, 21:45
այո

Արամ
05.05.2015, 22:02
այո
http://bobo.vyrobce.cz/index.php?id=34&n=opengl-hodiny

Chuk
05.05.2015, 23:27
http://bobo.vyrobce.cz/index.php?id=34&n=opengl-hodiny

Բա էս մարդը հետո ո՞նց ա պատասխանելու դասախոսի հարցերին :))

Արամ
06.05.2015, 00:04
Բա էս մարդը հետո ո՞նց ա պատասխանելու դասախոսի հարցերին :))
Դրա համար էլ հարցրեցի՝
Ո՞նց կապ չունի, հիմա եթե ես OpenGL-ով ժամացույց նկարեմ էդ կլինի՞։

Դե ընդհանրապես ես զարմանում եմ, էս ի՞նչ խնդիր ա որ տվել են․․․բայց դե․․․
Համենայն դեպս, եթե կարիք լինի, կոնկրետ կտորներ կբացատրեմ: :)

Anahit**
06.05.2015, 07:34
մերսի: բայց չաշխատեց :8

Anahit**
06.05.2015, 07:36
լավ է, ոչինչ էլ գլուխ մի ցավացրեք, իմը շախմատն էր արդեն գրել եմ, էս ուրիշին էր պետք էն էլ թող ինքը մտածի

Anahit**
08.05.2015, 19:18
ժողովուրդ ջան ես էլի հարց ունեմ: սենց մի ծրագիր կա՝ # include <iostrime>............using namespace std......int main().........{ int n;............cout <<"mutqagrel zangvaci 4ap@"<<endl;........cin>>n;.........char*b=new char[ n];.....cout<<mutqagrel zangvaci tarer@"<<endl;...........for (int i=0,i<n,++i).......cin>>b[i]...... for(int i=0,I<n,++i)......{.....B[i]=char([i]+1) ........b[i] ..........cout<b[i]<<'' ";......}....................... for (int i=0,i<n,i++)....{...b[i]=char(b[i]-1)....................cout <<b[i]<<" ";.......} delet b ; return 0; } ....ես ծրագրում ինչա նշանակում char*b=new char[ n] տողը? ու մեկ էլ ես ծրագրի միջոցով տառերն են 1-ով ավելանում թե թվերը? ուղղակի char ա գրված դրա համար եմ հարցնում:

Արամ
09.05.2015, 11:44
Դինամիկ և Ստատիկ զանգվածներ

Ստատիկ Զանգված։

Syntax․ char foo[10];
Նկարագրություն․ Ստատիկ զանգվածները ստեղծվում են stack-ում և ունեն automatic storage duration(չգիտեմ հայերեն ոնց ասեմ), այսինքն ծրագրավորողը ասյ զանգվածի համար, ո՛չ հիշողություն է allocate անում, ոչ էլ ազատում։ Այս զանգվածների զբաղեցված տարածքը ավտոմատ մաքրվում է ֆունկցիա-ի ավարտից հետո։ Այս զանգվածների չափերը պետք է հստակ նշված լինեն կոմպիլացիայի ժամանակ։

Դինամիկ Զանգված։

Syntax․ char* foo = new foo[n]; delete[] foo;
Նկարագրություն․ Դինամիկ զանգվածները ստեղծվում են heap-ում, սա նշանակում է, որ ծրագրավորողը պարտավոր է հիշողություն վերցնել այս զանգվածի համար, այնուհետև ազատել։ Ի տարբերություն ստատիկ զանգվածների այս զանգվածըների չափերը կարող են որոշվել runtime, այսինքն ծրագրի աշխատանքի ժամանակ։


Հիմա, եթե ծրագրի կոմպիլացիայի ժամանակ մենք գիտենք, թե զանգվածը ինչքան տեղ է զբաղեցնելու, այսինքն քանակը const է, այս դեպքում պետք է օգտագործել ստատիկ զանգված, հակառակ դեպքում, եթե օրինակ զանգվածի չափսը որոշվելու է user-ի արած input-ից ապա պետք է օգտագործել դինամիկ զանգված։

Հավելում․ դինամիկ զանգվածների փոխարեն կարելի է օգտագործել vector, vector-ի հիմնական տարբերությունը դինամիկ զանգվածից այն է, որ vector-ը հայտարարելուց հետո, ծրագրի ընթացքում մենք կարող ենք փոփոխել vector-ի չափսերը:

Anahit**
09.05.2015, 12:05
մերսի շատ: Եվ վերջին հարցը. նախավերջին տողում ինչի ա գրված delete b: ուղղակի առանց դրա էլ փորձեցի աշխատեց էլի նույն ձևի: ինչ ֆունկցիա ա կատարում ետ տողը?

Lusina
09.05.2015, 16:19
...
[/U]Syntax․ char* foo = new foo[n]; delete[] foo;
Նկարագրություն․ Դինամիկ զանգվածները ստեղծվում են heap-ում, սա նշանակում է, որ ծրագրավորողը պարտավոր է հիշողություն վերցնել այս զանգվածի համար, այնուհետև ազատել։ Ի տարբերություն ստատիկ զանգվածների այս զանգվածըների չափերը կարող են որոշվել runtime, այսինքն ծրագրի աշխատանքի ժամանակ։
...


մերսի շատ: Եվ վերջին հարցը. նախավերջին տողում ինչի ա գրված delete b: ուղղակի առանց դրա էլ փորձեցի աշխատեց էլի նույն ձևի: ինչ ֆունկցիա ա կատարում ետ տողը?

Ազատում ա հիշողությունը.

Anahit**
10.05.2015, 19:37
մերսի շատ:)

Nely
17.04.2016, 12:06
Ժողովուրդ ջան խնդրում եմ օգնեք դինամիկ զանգվածների մասին նյութ գտնեմ:

Աթեիստ
17.04.2016, 12:19
Ժողովուրդ ջան խնդրում եմ օգնեք դինամիկ զանգվածների մասին նյութ գտնեմ:

https://code-live.ru/post/cpp-dynamic-arrays/
http://cppstudio.com/post/432/
http://kvodo.ru/urok-8-2-dinamicheskie-massivyi.html

Samael
29.05.2016, 12:21
Շատ եմ խնթրում օքնեք """""""Կազմել ծրագիր, որը կհաշվի և կարտածի տրված զույգ արժեք ունեցող տարերի
արտադրյալը"""""""

Աթեիստ
29.05.2016, 13:42
Շատ եմ խնթրում օքնեք """""""Կազմել ծրագիր, որը կհաշվի և կարտածի տրված զույգ արժեք ունեցող տարերի
արտադրյալը"""""""

1. Բարով ես եկել ակումբ
2. Սա ՖԲ չի, պետք չի նույն բանը մի քանի տեղ գրել։
3. Դժվար թե քո փոխարեն որևէ մեկը խնդիրը լուծի։ Դու գրի ինչքան կարող ես, մեր մասնագետներն էլ կփորձեմ օգնել, ցույց տալ սխալներդ։