Массивы. Задачи
Массивы Решения uses CRT; const N=5; A:array[1..N, 1..N]of integer=( (1, 1, 1, 1, 1), (1, 2, 3, 4, 5), (1, 2, 3, 4, 5), (2, 2, 2, 2, 2), (1, 3, 3, 7, 5)); var i,j,str,sum,max: integer; b: boolean; BEGIN ClrScr; max:= -1;{ нет максимальных } str:= -1;{ строка неизвестна } for i:= 1 to N do begin { цикл по строкам сверху вниз } sum:= 0; b:= false;{ нет нечётных элементов } for j:= 1 to N do begin { цикл по строке } sum:= sum + abs(A[i,j]); if not odd(A[i,j]) then b:= true;{ есть нечётный элемент } end; if (not b) and (sum>max) then begin max:= sum;{ запомнили сумму } str:= i; { и строчку } end; end; WriteLn('Строка [',str,'] с максимальной суммой модулей элементов'); WriteLn('< OK >');ReadKey; END. uses CRT; var f: Text; S: string; R: extended; i,j,k,m,N: integer; X,Y: array[1..1000] of extended; BEGIN ClrScr; { имя тест-файла "6" } WriteLn('Введите имя файла с данными [*.pas] или Enter, если вручную'); ReadLn(S); if S='' then begin { ручной ввод } WriteLn('Радиус окружности R:= '); ReadLn(R); WriteLn('Количество точек N:= '); ReadLn(N); for i:=1 to N do begin WriteLn(i,'-я точка (X Y):='); ReadLn(X[i]); ReadLn(Y[i]); end; end else begin { ввод из файла } Assign(f,S+'.pas'); Reset(f); ReadLn(f);{ Комментарий } ReadLn(f, R); i:= 0; while not eof(f) do begin inc(i); ReadLn(f, x[i],y[i]); end; N:= i; Close(f); end; WriteLn('N=', N ,' R=', R:0:0,' точки:'); m:=0; for i:= 1 to N-2 do for j:= i+1 to N-1 do for k:= j+1 to N do if (SQRT(sqr(X[i]) + sqr(Y[i])) <= R) and (SQRT(sqr(X[j]) + sqr(Y[j])) <= R) and (SQRT(sqr(X[k]) + sqr(Y[k])) <= R) then begin inc(m); WriteLn(m,' : [ (',X[i]:0:0,',',Y[i]:0:0,'), '+ '(',X[j]:0:0,',',Y[j]:0:0,'), '+ '(',X[k]:0:0,',',Y[k]:0:0,') ]'); end; WriteLn('< OK >');ReadKey; END. uses CRT; var f: Text; S: string; R: extended; i,j,a,b,N: integer; X,Y: array[1..30] of extended; BEGIN ClrScr; { имя тест-файла "9" } WriteLn('Введите имя файла [9] с данными [*.pas] или Enter, если вручную'); ReadLn(S); if S='' then begin { ручной ввод } WriteLn('Количество точек N:= '); ReadLn(N); if N>30 then begin WriteLn('N<=30 !'); exit end; for i:=1 to N do begin WriteLn(i,'-я точка (X Y):='); ReadLn(X[i]); ReadLn(Y[i]); end; end else begin { ввод из файла } Assign(f,S+'.pas'); Reset(f); ReadLn(f);{ Комментарий } i:= 0; while not eof(f) do begin inc(i); ReadLn(f, x[i],y[i]); end; N:= i; Close(f); end;
for i:= 1 to N-1 do for j:= i+1 to N do if (SQRT(sqr(X[i]-X[j]) + sqr(Y[i]-Y[j])) >= R) then begin R:= SQRT(sqr(X[i]-X[j]) + sqr(Y[i]-Y[j])); a:= i; b:=j; end; WriteLn('Расстояние между точками X[',a,'](', X[a]:0:0,',',X[b]:0:0,') и Y[',b,'](', Y[a]:0:0,',',Y[b]:0:0,') = ', R:0:0); WriteLn('< OK >');ReadKey; END. program Brak; const eps=0.5;{б=eps} var B:array[byte]of real; i,n,s:integer; a:real; p:boolean; begin p:=false; s:=0; write('Введите количество деталей в партии N='); readln(n); write('Введите стандартный размер А='); readln(a); for i:=1 to N do begin write('Введите размер ',i,'-й детали В[',i,']='); readln(B[i]); if (b[i]<(a-eps)) or (b[i]>(a+eps)) then begin p:=true; s:=s+1; end end; if p then writeln('Забраковано ',s) else writeln('Бракованных деталей нет') end. Program Determinant; const N1=10; type Matrice=array[1..N1,1..N1] of real; var A:matrice; I,J,N:integer; D:real; Function Det(A:Matrice;N:integer):real; var B:matrice; I:integer; T,Mn,S:real; Function Minor(var C:matrice;A:Matrice;N,I,J:integer):real; var Im,Jm,Ia,Ja,Nm:integer; begin Nm:=N-1; Im:=1; Ia:=1; while Im<=Nm do if Ia<>I then begin Jm:=1; Ja:=1; while Jm<=Nm do if Ja<>J then begin C[Im,Jm]:=A[Ia,Ja]; Ja:=Ja+1; Jm:=Jm+1; end else Ja:=Ja+1; Ia:=Ia+1; Im:=Im+1; end else Ia:=Ia+1; end; {*Minor*} begin if N=1 then Det:=A[N,N]; if N=2 then Det:=A[1,1]*A[2,2]-A[2,1]*A[1,2]; if N>2 then begin S:=0; for I:=1 to N do begin Mn:=Minor(B,A,N,I,1); if (I mod 2)=1 then begin T:=Det(B,N-1); S:=S+T*A[I,1]; end else begin T:=Det(B,N-1); S:=S-T*A[I,1]; end; end; Det:=S; end; end; {*Determ*} begin Write('Введите порядок матрицы N: '); readln(N); for I:=1 to N do begin writeln('Вводите элементы строки ',I:2); for J:=1 to N do readln(A[I,J]); end; D:=Det(A,N); Writeln('Определитель равен: ',D:7:4); readln; end. Program Eczotic_Sortirovka; Const NMax = 100; Type MasNat = Array[1..NMax] Of 1..High(Integer); Var A : MasNat; I, J, N, M, K, Vsp : Integer; Log : Boolean; F : Text; Procedure WriteMassiv; Var I : Integer; Begin For I := 1 To N Do Write(A[I] : 5); WriteLn; End; {WriteMassiv} Begin Assign(F, 'D:\workdir\shest\ttt.txt'); ReWrite(F); Write('Введите количество элементов: '); ReadLn(N); Randomize; For I := 1 To N Do A[I] := 1 + Random(1000); WriteMassiv; For I := 1 To N Do Write(F, A[I] : 5); WriteLn(F); Write('Введите число K'); ReadLn(K); M := 0; {Очередной остаток от деления} {Сортировка в порядке возрастания остатков от деления} I := 1; While I <= N - 1 Do Begin Log := True; J := I; While (J <= N) And Log Do Begin Log := A[J] Mod K <> M; J := J + 1 End; If Not Log Then Begin Vsp := A[J - 1]; A[J - 1] := A[I]; A[I] := Vsp; I := I + 1 End Else M := M + 1 End; WriteMassiv; For I := 1 To N Do Write(F, A[I] : 5); WriteLn(F); Flush(F); Close(F) End. program borlpasc; var a,b:array [1..100] of integer; n,m,i,j:integer; begin write('введите количество элементов массива n='); readln(n); for i:=1 to n do begin write('введите a[',i,']='); readln(a[i]); end;j:=0; for i:=1 to n do if a[i] mod 2 = 0 then begin j:=j+1; b[j]:=a[i]; end; if j=0 then writeln('В данном массиве четных чисел нет') else writeln('Вот ваш массив:'); for i:=1 to j do write(b[i],' '); end. program borlpasc; var a,b:array [1..100] of integer; n,m,i,j:integer; begin write('введите количество элементов массива n='); readln(n); for i:=1 to n do begin write('введите a[',i,']='); readln(a[i]); end;j:=0; for i:=1 to n do if a[i] mod 2 = 0 then begin j:=j+1; b[j]:=a[i]; end; if j=0 then writeln('В данном массиве четных чисел нет') else writeln('Вот ваш массив:'); for i:=1 to j do write(b[i],' '); end. program borlpasc; var n,i,j:integer; a:array [1..100,1..100] of integer; begin write('введите n:'); readln(n); for i:=1 to n do for j:=1 to n do begin a[i,j]:=j-i+1; if a[i,j]<=0 then a[i,j]:=abs(a[i,j]-2); end;
for i:=1 to n do begin for j:=1 to n do write(a[i,j]:3); writeln end end. program borlpasc; var n,i,j:integer; a:array [1..100,1..100] of integer; begin write('введите n:'); readln(n); for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']='); readln(a[i,j]); end; for i:=1 to n do for j:=1 to n do begin if a[i,j]<=0 then a[i,j]:=0 else a[i,j]:=1 end; for i:=1 to n do begin for j:=1 to n do write(a[i,j]:3); writeln end; writeln; writeln; for i:=1 to n do begin for j:=1 to i do write(a[i,j]:3); writeln end end. program borlpasc; var a:array [1..200] of real; i,j,k,l,n,mi,mj,mk:integer; d1,d2,d3,s,p,ms:real; begin write('введите кол точек n='); readln(n); for i:=1 to n do begin write('x[',i,']='); readln(a[2*i-1]); write('y[',i,']='); readln(a[2*i]) end; mi:=0;mj:=0;mk:=0;ms:=0; for i:=1 to n-2 do for j:=i+1 to n-1 do for k:=j+1 to n do begin d1:=sqrt(sqr(a[2*j-1]-a[2*i-1])+sqr(a[2*j]-a[2*i])); d2:=sqrt(sqr(a[2*k-1]-a[2*j-1])+sqr(a[2*k]-a[2*j])); d3:=sqrt(sqr(a[2*k-1]-a[2*i-1])+sqr(a[2*k]-a[2*i])); p:=(d1+d2+d3)/2;writeln('p=',p); s:=sqrt(p*(p-d1)*(p-d2)*(p-d3)); if s>ms then begin mi:=i; mj:=j; mk:=k; ms:=s end; end; writeln('Треугольник с максимальной площадью:'); writeln('точки:',i,':',j,':',k); writeln('S=',S:4:2) end. program borlpasc; var a:array[1..100] of integer; i,n:integer; begin write('введите размер массива:'); readln(n); for i:=1 to n do begin write('a[',i,']='); readln(a[i]) end; for i:=1 to n div 2 do writeln (a[i],' ', a[(n div 2)+i]) end. program pr16b; var a:array [1..100,1..100] of integer; i,j,n:integer; c:integer; begin write('введите размер матрицы n='); readln(n); for i:=1 to n do for j:=1 to n do begin write('a[',i,',',j,']='); readln(a[j,i]); end; { writeln('вы ввели такую матрицу:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:3); writeln; end; for i:=1 to n do for j:=1 to n do begin c:=a[i,j]; a[i,j]:=a[j,i]; a[i,j]:=c; end; } writeln('получилась матрица:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:3); writeln end; end. program pr3a; var a:array[1..30,1..30] of integer; i,j,n:integer; begin writeln('введите размер матрицы:'); write('количество строк=');readln(n); for i:=1 to n do for j:=1 to n do if i=j then a[i,j]:=n-j+1 else a[i,j]:=0; for i:=1 to n do begin for j:=1 to n do write(a[i,j]:3); writeln end end. program borlpasc; var a:array[1..30,1..30] of integer; i,j,n,k,m,max,at:integer; begin writeln('Введите размерность матрицы:'); readln(n); write('Введите номер строки m='); readln(m); for i:=1 to n do for j:=1 to n do begin write('a[',i,j,']='); readln(a[i,j]) end; writeln('Ваша матрица:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln end; max:=1; for i:=1 to n do if a[max,max]<a[i,i] then max:=i; for i:=1 to n do begin at:=a[m,i]; a[m,i]:=a[max,i]; a[max,i]:=at end; writeln('Полученная матрица:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln end end. program borlpasc; var a:array[1..200] of real; i,n:integer; d,r1,R2:real; begin write('введите кол точек n='); readln(n); for i:=1 to n do begin write('x[',i,']='); readln(a[2*i-1]); write('y[',i,']='); readln(a[2*i]) end; d:=sqrt(sqr(a[1])+sqr(a[2])); r1:=d;R2:=d; for i:=1 to n do begin d:=sqrt(sqr(a[2*i-1])+sqr(a[2*i])); if d<r1 then r1:=d; if d>R2 then R2:=d end; writeln('Все точки лежат в кольце с радиусами:'); writeln('r=',r1); writeln('R=',R2) end. program borlpasc; const n=5; var a: array [1..n] of real; i: integer; p:boolean; begin for i:=1 to n do begin write ('a[',i,']='); readln(a[i]); end; p:=true; for i:=1 to n-1 do if a[i] > a[i+1] then p:=false; if p then writeln('послед. возр.') else writeln('послед не возр') end. program mas; var a:array[1..100] of integer; i,n,k:integer; begin write('Введите размер массива'); readln(n); for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; i:=1; while i<n do begin k:=a[i]; a[i]:=a[i+1]; a[i+1]:=k; i:=i+2 end; for i:=1 to n do writeln('a[',i,']=',a[i]); end. program perebor; const n=10; var a:array[1..n] of integer; i,j,k:integer; begin writeln('Ввести массив из ',n,' целых чисел'); for i:=1 to n do read(a[i]); for i:=1 to n do for j:=i+1 to n do for k:=j+1 to n do if a[i]+a[j]+a[k]=15 then writeln(a[i],' ',a[j],' ',a[k]); end.
program sortmin; const n=10; var a:array[1..n] of integer; i,j,b:integer; begin writeln('Введите массив из ',n,' целых чисел'); for i:=1 to n do read(a[i]); for i:=1 to n-1 do for j:=1 to n-1 do if a[j]<a[j+1] then begin b:=a[j]; a[j]:=a[j+1]; a[j+1]:=b; end; write('Получившийся массив '); for i:=1 to n do write(' ',a[i]); end. program sortplus; const n=10; var a:array[1..n] of integer; i,j,b:integer; begin writeln('Введите массив из ',n,' целых чисел'); for i:=1 to n do read(a[i]); for i:=1 to n-1 do for j:=1 to n-1 do if a[j]>a[j+1] then begin b:=a[j]; a[j]:=a[j+1]; a[j+1]:=b; end; write('Получившийся массив '); for i:=1 to n do write(' ',a[i]); end.
program N_22; const n=10; var i:integer; a:array[1..n] of integer; begin for i:=1 to n do begin a[i]:=random(9)+1;write(a[i],' '); end; writeln; for i:=1 to n do begin if a[i] mod 2<>0 then a[i]:=a[i]*2; write(a[i],' '); end; readln; end. program N_23; var i,n,k:integer; a:array[1..100] of integer; begin write('Input n (n<=100) -> '); readln(n); k:=0; for i:=1 to n do begin write('-> '); readln(a[i]); if a[i]=n then k:=k+1; end; write(k); readln; end.
program N_24; const n=10; var i,min,S:integer; a:array[1..n] of integer; begin S:=0; for i:=1 to n do begin a[i]:=random(10)-5; write(a[i],' '); end; min:=32767; for i:=1 to n do begin if a[i]>0 then if a[i]<min then min:=a[i]; if a[i]<0 then S:=S+a[i]; end; writeln; writeln('Min pol -> ',min); writeln('Summ otriz -> ',S); readln; end. program N_25; uses crt; const n=10; var a:array[1..n] of integer; i,S,k:integer; begin ClrScr; S:=0; k:=0; for i:=1 to n do begin a[i]:=random(10)+1; write(' ',a[i]); S:=S+a[i]; end; for i:=1 to n-1 do if a[i]<>a[n] then k:=k+1; writeln; writeln('Sred arifmet: ',(S/n):0:2); writeln('Otl ot Poslednego: ',k); readln; end.
program N_26; const n=10; var i,k:integer; a:array[1..n] of real; begin k:=0; for i:=1 to n do begin write('-> '); readln(a[i]); end; for i:=1 to n do if a[i]=i then k:=k+1; write('Otvet: ',k); readln; end. program N_27; const n=10; var a:array[1..n] of real; i,k:integer; max:real; begin for i:=1 to n do begin a[i]:=random(9)+1; write(a[i]:3:1,' '); end; for i:=1 to n do if a[i]>max then begin max:=a[i];k:=i; end; for i:=1 to k-1 do if i mod 2=0 then a[i]:=a[i]*max; writeln; for i:=1 to n do write(a[i]:3:1,' '); readln; end.
program N_28; const n=10; var a:array[1..n] of real; i,k:integer; r:real; begin k:=0; write('Input r -> ');readln(r); for i:=1 to n do begin write('-> '); readln(a[i]); end; for i:=1 to n do if a[i]=r then begin k:=i;break; end; if k=0 then writeln('Net!') else writeln('N: ',k); readln; end. program N_29; const n=10; var a:array[1..n] of real; i,k:integer; r:real; begin k:=0; write('Input r -> ');readln(r); for i:=1 to n do begin write('-> '); readln(a[i]); end; for i:=n downto 1 do if a[i]=r then begin k:=i;break;end; if k=0 then writeln('Net!') else writeln('N: ',k); readln; end.
program N_30; const n=10; var a:array[1..n] of integer; b:array[1..n] of real; i,S,Sa:integer; begin S:=0; for i:=1 to n do begin a[i]:=random(9)+1; write(a[i],' '); S:=S+a[i]; end; writeln; for i:=1 to n do begin b[i]:=(S-a[i])/n-1; write(b[i]:1:1,' '); end; readln; end. program N_31; const n=10; var a:array[1..n] of integer; i,k:integer; begin for i:=1 to n do begin write('-> '); readln(a[i]); end; writeln; for i:=1 to n do if (a[i]<0) and (a[i] mod 5=2) then begin k:=i;break; end; write(k); readln; end.
program N_32; const n=40; var a:array[1..n] of integer; i,S:integer; begin S:=0; randomize; for i:=1 to n do begin a[i]:=random(100)-50; write(a[i],' '); if (a[i]>0) and (a[i]<10) then S:=S+a[i]; end; writeln; for i:=1 to n do if (a[i] mod 3=0) and (a[i] mod 5=0) then write(i,' '); writeln; write('Sred arifmet -> ',(S/n):1:1); readln; end. program N_33; const n=10; var c,a:array[1..n] of integer; i:integer; begin for i:=1 to n do begin c[i]:=random(9)+1; write(c[i],' '); end; writeln; for i:=1 to n do begin if i mod 2=0 then a[i]:=c[i] div 2 else a[i]:=2*c[i]; write(a[i],' '); end; readln; end.
program N_34; const n=10; var a,b:array[1..n] of integer; i:integer; begin writeln; for i:=1 to n do begin a[i]:=random(9)-4; write(a[i],' '); end; writeln; for i:=1 to n do begin b[i]:=random(9)-4; write(b[i],' '); end; writeln; for i:=n downto 1 do if a[i]>0 then begin a[i]:=b[2];break; end; for i:=1 to n do write(a[i],' '); readln; end. program N_35; const n=10; var a:array[1..n] of integer; x,i,k:integer; begin k:=0; for i:=1 to n do begin write('-> '); readln(a[i]); end; writeln; write('Input X -> ');readln(x); for i:=1 to n do if x<a[i] then k:=k+1; if k=n then write('DA') else write('NET'); readln; end.
program N_36; const n=10; var a:array[1..n] of integer; i:integer; begin randomize; for i:=1 to n do begin a[i]:=random(9)+1; write(a[i],' '); end; writeln; for i:=1 to n do begin if i mod 2=0 then a[i]:=a[i] div a[1]; write(a[i],' '); end; readln; end. program N_37; const n=10; var a:array[1..n] of integer; i:integer; begin for i:=1 to n do begin a[i]:=random(9)+1; write(a[i],' '); end; writeln; for i:=1 to n do begin if i mod 2<>0 then a[i]:=sqr(i); write(a[i],' '); end; readln; end.
program N_38; const n=10; var a:array[1..n] of integer; b:array[1..n] of real; i,S:integer; begin for i:=1 to n do begin a[i]:=random(9)+1; write(a[i],' '); S:=S+a[i]; end; writeln; for i:=1 to n do begin b[i]:=S/a[i]; write(b[i]:1:1,' '); end; readln; end. program N_39; const n=10; var a:array[1..n] of integer; min,max,i,k,j:integer; begin randomize; for i:=1 to n do begin a[i]:=random(9)+1; write(a[i],' '); end; writeln; min:=a[1];max:=a[1]; for i:=1 to n do begin if a[i]<min then begin min:=a[i];k:=i;end; if a[i]>max then begin max:=a[i];j:=i;end; end; if k<j then for i:=k+1 to j-1 do a[i]:=0 else for i:=j+1 to k-1 do a[i]:=0; for i:=1 to n do write(a[i],' '); readln; end.
program N_40; const n=10; var a:array[1..n] of integer; b,i,S:integer; begin write('Input b -> ');readln(b); for i:=1 to n do begin a[i]:=random(9)+1; write(a[i],' '); if a[i]>b then S:=S+a[i]; end; writeln; write('Sum: ',S); readln; end. program N_41; const n=10; var a,b:array[1..n] of integer; i,max,c,k:integer; begin for i:=1 to n do begin a[i]:=random(9)+1; write(a[i],' '); end; writeln; max:=a[1]; for i:=1 to n do if a[i]>max then begin max:=a[i];k:=i; end; c:=a[k];a[k]:=a[n];a[n]:=c; for i:=1 to n do begin b[i]:=a[i]; write(b[i],' '); end; readln; end. program N_42; const n=10; var a:array[1..n] of integer; i,S:integer; begin S:=0; for i:=1 to n do begin a[i]:=random(20); write(a[i],' '); if (a[i] mod 2=0) and (a[i]<>0) then S:=S+i; end; writeln; write('Summa: ',S); readln; end.
43. program N_43; const n=10; var a:array[1..n] of integer; i,S:integer; begin S:=0; for i:=1 to n do begin a[i]:=random(20); write(a[i],' '); if (a[i] mod 2=0) and (a[i]<>0) and (i mod 2=0) then S:=S+a[i]; end; writeln; write('Summa: ',S); |