Կուրսային հանձնելու ժամանակն ա իսկ ես Պասկալից տեղյակ չեմ:Խնդում եմ օգնեք:
Տրված է n բնական թիվը և n տարր պարունակող x վեկտորը:Կազմել այնպիսի նոր y վեկտորի ստացման և տպման բլոկ-սխեման ու ծրագիրը,որի տարրերը ստացվում են վեկտորի ամեն 3-ի աստիճան հանդիսացող տարրից հետո ավելացնելով մեկ հատ 2 արժեք ունեցող տարր:
Մարդու հետ Մարդ,Դևի հետ Դև:
Պասկալ հլա որ չեմ մոռացել
Անհասկանալի բան լինի ասա բացատրեմ
Կոդ:Program REn005; const n=20; var i,y_size,j,cur:integer; x:array[1..n] of integer; y:array[1..2*n] of integer; function baj(m:integer; p:integer):boolean; {stugum e ardyoq m tiv@ bajanvum e p tvi vra aranc mnacordi} begin if m=p*trunc(m/p) then baj:=true else baj:=false; end; function ast(m:integer; p:integer):boolean; {stugum e ardyoq m tiv@ p tvi astichan e te voch ev veradarznum} begin if m=1 then ast:=true else if not baj(m,p) then ast:=false else ast:=ast(trunc(m/p),p); end; begin y_size:=0; for i:=1 to n do begin readln(x[i]); inc(y_size); y[y_size]:=x[i]; if ast(x[i],3) then begin inc(y_size); y[y_size]:=2; end; end; writeln; for i:=1 to y_size do writeln(y[i]); readln; end.
Վերջին խմբագրող՝ Ներսես_AM: 17.11.2008, 18:36:
Որ մի երկու խոսկով բացատրես շատ գոհ կլինեմ
Մարդու հետ Մարդ,Դևի հետ Դև:
օու քեյ
Նախ հայտարարման մասին
վերցրել եմ 2*n չափի վեկտոր, որովհետև մաքսիմալ դեպքում /այսինքն երբ x-ի ամեն մի տարր 3-ի աստիճան է/ y-ի երկարությունը 2*n կլինիy:array[1..2*n]
baj ֆունկցիայի իրականացումը
Ֆունկցիան պետք է պարզի, թե արդյոք m թիվն առանց մնացորդի բաժանվում է p-ի վրա:
սրանով մենք ստուգում ենք պահանջվող պայմանը: trunc-ը, գիտես, ամբողջ մաս վերցնելու ֆունկցիան ա: Որ մի քանի անգամ ստուգես, կտեսնես, որ ճիշտ էm=p*trunc(m/p)
ast ֆունկցիայի իրականացումը
Ֆունկցիան պետք է պարզի՝ արդյո՞ք m թիվը p թվի աստիճան է /տվյալ խնդրի համար p=3/
Իրականացումը կատարվում է ռեկուրսիայի եղանակով: Եթե ծրագրավորում չգիտես ընդհանրապես, ռեկուրսիան կարող է դժվար թվալ: Բայց որ մի քանի անգամ ուշադիր կարդաս ֆունկցիան, կհասկանաս:
Հիմնական ծրագիրը
Դե էս մեկը ծրագրի թերևս ամենահեշտ մասն է
Նախօրոք պահում ենք y_size=0 արժեքով փոփոխական, որը ցույց է տալիս y-ի տվյալ դիրքաթիվը /այսինքն վերջին լրացված դիրքը/ :
Այնուհետև կատարում ենք n հատ թվերի մուտքագրում: Յուրաքանչյուր մուտք արված թիվ "գցում ենք" y-ի մեջ inc(y_size); y[y_size]:=x[i]; տողերի օգնությամբ
Այս մասը ստուգում է եթե թիվը 3-ի աստիճան է ապա y-ում ավելացնում ենք 2 վերջին լրացված դիրքին հաջորդող /առաջին չլրացված/ դիրքում:if ast(x[i],3) then
begin
inc(y_size);
y[y_size]:=2;
end;
Դրան հաջորդող տողերը կատարում են y վեկտորի արտածում
Վերջ, մի քիչ երկար ստացվեց, բայց դե,
Դե հիմա ինձ ասա
1. քո մոտ աշխատե՞ց
2. հասկացա՞ր լրիվ ասածս
Տրված ե n բնական թիվ և n տարր պարունակող միաչափ զանգված: Զագգվածից հեռացնել այն տարրերը որոնք երկուսից ավել անգամ են կրկնվում:
Ով կլուծի?
Մոտս պասկալ չկա որ աշխատեցնեմ
Փորձի
Կոդ:program BOBO; const n=20; var a,b:array[1..n] of real; i,ind:integer; function krkn(k:integer):integer; var p,j:integer; begin p:=0; for j:=1 to k - 1 do if(a[j]=a[k]) then inc(p); for j:=k+1 to n do if(a[j]=a[k]) then inc(p); krkn:=p; end; begin ind:=0; for i:=1 to n do readln(a[i]); for i:=1 to n do if(krkn(i)<=2) then begin inc(ind); b[ind]:=a[i]; end; for i:=1 to ind do writeln('b[ ',i,' ] = ', b[i]); readln; end
Մերսի, աշխատում ա: Բայց էս inc-ը ինչ ա? Առանց դրա չի ըլնում?
Մեկել առանց ենթածրագրերի, եթե դժվար չի դրանցից տենց էլ բան չհասկացա
inc(p)-ն փոխարինել եմ p:=p+1-ով, նույն բանն ա
Առանց ենթածրագրի խնդրի կոդը կունենա հետևյալ տեսքը՝
Կրկնում եմ, մոտս պասկալ չկա, աշխատեցրուԿոդ:program BOBO; const n=20; var a,b:array[1..n] of real; i,ind,p,j:integer; begin ind:=0; for i:=1 to n do readln(a[i]); for i:=1 to n do begin p:=0; for j:=1 to i - 1 do if(a[j]=a[i]) then p:=p+1; for j:=i+1 to n do if(a[j]=a[i]) then p:=p+1; if p<=2 then begin inc(ind); b[ind]:=a[i]; end; end; for i:=1 to ind do writeln('b[ ',i,' ] = ', b[i]); readln; end
Տրված է n բնական տիվը և n տարրեր պարունակող x վեկտորը : Կազմել այնպիսի
նոր y վեկտօրի ստացման և տպման բլոկ սխեման ու ծրագիրը, որի տարրերը
ստացվում են վեկտորից, նրա մեջ փոքրագույն տարրի արժեքը ավելացնելով
վեկտորի միակ բաղադրիալ տվի արժեքի չափով:
Ծրագրում փոգրագույնի արժեքը որոշել Ֆունկցիայում,
Նոր զանգվածի ստացւմը կազմակերպել Պրոցեդուրայում:
Նախապես Անչափ Շնորհակալուտյուն...
Տենանք ոնցա ստացվում
Մի նրբություն եթե մինիմում տարրերը մի քանիսն են, ապա բոլորին վերագրել եմ միակ բաղադրյալ թվի արժեքը
Կոդ:program Cragir; const maxsize=10; var x,y:array[1..maxsize] of integer; n,i,t,bax,m:integer; brk:boolean; function poqraguyn:integer; var min:integer; begin min:=x[1]; for i:=2 to n do if x[i]<min then min:=x[i]; poqraguyn:=min; end; procedure stacum; begin brk:=false; for i:=1 to n do begin for t:=2 to trunc(sqrt(x[i]))+1 do begin if x[i] mod t=0 then begin bax:=i; brk:=true; break; end; end; if brk then break; end; m:=poqraguyn; for i:=1 to n do begin if x[i]=m then y[i]:=x[bax]+x[i] else y[i]:=x[i]; end; end; begin write('Mutqagreq n - '); readln(n); for i:=1 to n do begin write('Mutqagreq x[',i,'] - '); readln(x[i]); end; stacum; for i:=1 to n do writeln('y[',i,'] = ',y[i]); end.
Վերջին խմբագրող՝ Ռեդ: 23.12.2008, 23:25:
Ժողովու՜րդ, եթե հնարավոր է ծրագիրը գրեք էլի՜
Տրված է A=[aij]nn մատրիցան, հաշվել A մատրիցի որոշիչը (դետերմինանտը) Գաուսի մեթոդով:
Չէ, կաթիլը ծով չի դառնում...
Կաթիլ, եթե ասես Գաուսի մեթոդը որնա կարողա օգնենք
Կաթիլ (19.04.2009)
Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)
Էջանիշներ