Դե ուրեմն հստակ և կոռեկտ ձևակերպիր խնդիրը` գրառումիդ մեջ անհասկանալի է խնդրի ձևակերպումը:
1. "տողերի և սյուների հատման կետում" արտահայտությունը անիմաստ է, որովհետև մատրիցի ցանկացած տարր գտնվում է որևէ տողի և սյան հատման կետում:
2. "հեռացնել տողը և սյունը" - այդպես կարող է մատրիցից բան չմնալ: Իսկ հեռացնելով պիտի ստանանք նոր մատրից, թե հենց նույն մատրիցի մեջ պիտի հեռացնենք?
Լոխ մունք ենք, մնացածը` լոխ են...
Էս քեզ ծրագիրը
Էս էլ բլոկ-սխեման ու pas ֆայլըHTML կոդ:PROGRAM P1; USES CRT; TYPE Matrix = array [1..10, 1..10] of REAL; Vector = array [1..10] of INTEGER; Var X:Matrix; Rows, Columns : Vector; i, j, M, N : INTEGER; PROCEDURE CANGEROWCOLUMN(RowColumnIndex, MaxRowColumn : INTEGER; ChangeRow : BOOLEAN; VAR X : Matrix); Var i, j : INTEGER; BEGIN IF ChangeRow = True THEN FOR i:=1 to MaxRowColumn Do X[RowColumnIndex,i]:=0 ELSE FOR i:=1 to MaxRowColumn Do X[i, RowColumnIndex]:=0; END; BEGIN TEXTBACKGROUND(Blue); CLRSCR; WRITE('INPUT M='); READLN(M); WRITE('INPUT N='); READLN(N); FOR i:=1 to M Do For j:=1 to N Do BEGIN GOTOXY(1+6*(j-1), 4+i); READ(X[i,j]); END; FOR i:=1 to M Do Rows[i]:=0; FOR i:=1 to N Do Columns[i]:=0; FOR i:=1 to M Do FOR j:=1 to N Do IF X[i,j] < 0 THEN BEGIN Rows[i]:=1; Columns[j]:=1; END; FOR i:=1 to M Do IF Rows[i] = 1 THEN CANGEROWCOLUMN(i, M, True, X); FOR i:=1 to N Do IF Columns[i] = 1 THEN CANGEROWCOLUMN(i, N, False, X); FOR i:=1 to M Do For j:=1 to N Do BEGIN GOTOXY(1+6*(j-1), 4+M+1+i); WRITE(X[i,j]:4:1); END; WRITELN; READKEY; END.
ProgramMrKaren.zip
Բարով հանձնես![]()
Լոխ մունք ենք, մնացածը` լոխ են...
MrKaren (24.12.2011)
Սենց բան հանդիպել է՞HTML կոդ:Իրականացնել տրված ռեկուրենտ առնչությունները , կառուցել ստացված մեծությունների գրաֆիկները : ԱԼԳՈՐԻԹՄ-1 1. α2=d1/c1 , α3=(d2-β2*b2)/Δ2 , αi+1=(di+βi*φi)/Δ i i=3, n-2 2. β2=e1/c1 , βi-1=ei/ Δ i i=2, n-3 3. γ2=f1/c1 , γ 3=(f2+ γ2*b2)/ Δ 2 , γi+1=(fi-γi-1*ai-γi*φi)/Δi i=3, n-1 4. Δ2=c2-α2*b2 , Δi=ci-βi-1*ai+αi*φi i=3 ,n-1 5. φi=αi-1*ai-bi i=3, n-1 6. yn-1=γn 7. yn-2=αn-1*yn-1+γn-1 8. yi=αi+1*yi+1-βi+1*yi+2+γi+1 i=n-3, 1 3 c1=29+12h/r12 , ci=30 i =2,n-2, cn-1=29+h/rn-1 Q=0.24 ai=1-h/ri i=3,n-1, bi=8(2-h/ri) i=2,n-1 a=0.513 di=8(2+h/ri) i=1,n-2, ei=1+h/ri i=1,n-3 c=0.00025 fi=48Qh2/πa2c2, i=1,n-1 , ri=a+ih , i=1,n-1 , h=c/n
Իրականացնել տրված ռեկուրենտ առնչությունները , կառուցել ստացված մեծությունների գրաֆիկները :
1. α2=d1/c1 , α3=(d2-β2*b2)/Δ2 , αi+1=(di+βi*φi)/Δ i i=3, n-2
2. β2=e1/c1 , βi-1=ei/ Δ i i=2, n-3
3. γ2=f1/c1 , γ 3=(f2+ γ2*b2)/ Δ 2 , γi+1=(fi-γi-1*ai-γi*φi)/Δi i=3, n-1
4. Δ2=c2-α2*b2 , Δi=ci-βi-1*ai+αi*φi i=3 ,n-1
5. φi=αi-1*ai-bi i=3, n-1
6. yn-1=γn
7. yn-2=αn-1*yn-1+γn-1
8. yi=αi+1*yi+1-βi+1*yi+2+γi+1 i=n-3, 1
3
c1=29+12h/r12 , ci=30 i =2,n-2, cn-1=29+h/rn-1 Q=0.24
ai=1-h/ri i=3,n-1, bi=8(2-h/ri) i=2,n-1 a=0.513
di=8(2+h/ri) i=1,n-2, ei=1+h/ri i=1,n-3 c=0.00025
fi=48Qh2/πa2c2, i=1,n-1 , ri=a+ih , i=1,n-1 , h=c/n
Տրված է n բնական թիվը և n տարր պարունակող միաչափ զանգվածը: Հաշվել զանգվածի առաջին պարզ տարրին նախորդող և վերջին պարզ տարրին հաջորդող տարրերի գումարը: Ենթադրվում է տրված վեկտորի առաջին և վերջին տարրերը պարզ չեն:
170.jpg
Program a170;
var x:array[1..10] of integer;
i,n,j,l,k,s,t:integer;
begin read(n);
for i:=1 to n do read (x[i]);
s:=0;
for i:=1 to n do t:=0;
for j:=2 to x[i]-1 do if x[i] mod j = 0 then begin t:=1; if t=0 then l:=x[i];
write(l=x[i]);
end;
ՈՒզում եմ իմանամ ալգորիթմը եթե ճիշտ է...ծրագիրը ոնց կազմեմ
end.
Վերջին խմբագրող՝ Rudik_100: 25.12.2011, 17:06:
դե նախ եթե ասում է, որ "ենթադրվում է տրված վեկտորի առաջին և վերջին տարրերը պարզ չեն", ապա նրանց կարելի է ցիկլի մեջ չվերցնել: (ցիկլը առաջին տեղը սարքի 2,n-1 , իսկ երկրորդ տեղը n-1,2)
Ընդեղ երկու անգամն էլ որ գտնում ես պարզ թիվը ցիկլից միանգամից դուրս արի (break արա): Կարմիրով էդ մասը ուղղել եմ: Ալգորիթմը ոնց որ թե վերջացրած չէր, էդքան մասը ուղղել եմ, իմ կարծիքով ճիշտ եմ արել: Մեկ էլ հիշի ոչ թե x[i]-ն այլ հենց [i]-ն, որովհետև դու x[i]-ի հետ ոչ մի բան չես անելու, ինքը քեզ պետք չի գալու, քեզ իրա դիրքն ա պետք:
Էն կանաչ գույնով արածներս պարտադիր չեն, բայց ցանկալի են, քանի որ հենց ինքը մի անգամ T=1 գործողությունը արեց, նշանակում ա հասկացավ, որ թիվը պարզ չի, էլ ի՞նչ իմաստ ունի ստուգել մնացածի համար, դրա համար ըտեղից էլ break արա:
հիմա դու L-ի մեջ ունես առաջին պարզ թվի դիրքը, իսկ K-ի մեջ վերջին: Փորձի շարունակես, հիմա երկու ցիկլ էլի պիտի անես, որոնց մեջ հաշվես գումարը:
Կարամ նաև մի ավելի օպտիմալ տարբերակ առաջարկեմ.
ներմուծելուց հետո մի s փոփոխական վերցրու (s=x[1] ): Նորից 2,n-1 ցիկլ արա, որի մեջ նորից ստուգի պարզ թիվ լինելը: Եթե թիվը պարզ չի, ապա թող s=s+x[i] անի, հակառակ դեպքում (եթե պարզ ա) դուրս գա ցիկլից:
Ցիկլից դուրս գալուց հետո դու կունենաս s-ի մեջ մինչև առաջին պարզ թիվը եղած տարրերի գումարը:
Հետո s=s+x[n] արա: Ու նորից ցիկլ բացի (n-1, 2) ու նույն բանը արա, ինչ նախորդ ցիկլում:
Ի դեպ՝ էն s=s+x[n] կարող ես չանել, բայց սկզբում s=x[1]-ի փոխարեն պիտի գրես s=x[1]+x[n] , ուղղակի սկզբում ըտենց գրեցի, որ պարզ լինի, սաղ չխառնվի իրար:
Իսկ ծրագիրը?
Արմեն ջան...ես կուզենայի 1 ալգորիթմով կազմել ծրագիրը...բայց մինչև ստեղ եմ կարացել գրել...
Program a170;
var x:array[1..10] of integer;
i,n,j,l,k,s,t:integer;
begin read(n);
for i:=1 to n do read (x[i]);
s:=0;
for i:=2 to n do t:=0;
for j:=2 to x[i]-1 do if x[i] mod j = 0 then begin t:=1; if t=0 then l:=յ;
end;
end.
Beginneri պահը չեմ կարողանում հասկանալ...((
Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)
Էջանիշներ