p align="left"> for i:=2 to n2 do begin b[i]:=b[i-1]+Random(Step); write (b[i],' '); end; writeln; ia:=1; ib:=1; write ('C= '); for i:=1 to n1+n2 do begin if a[ia]<=b[ib] then begin c[i]:=a[ia]; if ia<n1 then Inc(ia) else begin a[n1]:=b[ib]; if ib<n2 then Inc (ib); end; end else begin c[i]:=b[ib]; if ib<n2 then Inc(ib) else begin b[n2]:=a[ia]; if ia<n1 then Inc(ia); end; end; write (c[i],' '); end; writeln; end. 3. Описание: Дан массив чисел. Найти наибольшее. Program msv; Uses crt; Var i,n,max:integer; a:array[1..100] of integer; begin clrscr; read(n); for i:=1 to n do read(a[i]); {ввод чисел в массив} max:=a[1]; for i:=2 to n do if a[i] > max then max:=a[i]; {сравнивается с уже найденным наибольшим,} write('maksimalnoe chislo = ',max); readln; end. 4. Описание: Найти сумму элементов числового массива Program msv; uses crt; Var i,n,s:integer; a:array[1..1000] of integer; begin clrscr; read(n); for i:=1 to n do read(a[i]); {ввод значений в массив} s:=0; for i:=1 to n do s:=s+a[i]; write('Summa = ',s); readln; readln; end. 5. Описание: Дан числовой массив. Вычислить сумму элементов,имеющих четное значение индекса. Вычислительную часть организовать в виде функции Program msv; Uses crt; type mas=array[1..100] of integer; Var a:mas; i,n:integer; function calc(b:mas;m:integer):integer; var i,s:integer; begin s:=0; for i:=1 to m do; if i mod 2=0 then s:=s+b[i]; calc:=s; end; begin clrscr; read(n); for i:=1 to n do read(a[i]); write('Сумма каждого второго элемента = ',calc(a,n)); readln; readln; end. 6. Описание: Дан массив символов. Вычислить, сколько в нем элементов 'a' Program msv; Uses crt; Var i,n,s:integer; a:array[1..100] of char; begin clrscr; readln(n); {Объявление а:array[1..1000] of char означает,} for i:=1 to n do readln(a[i]); s:=0; for i:=1 to n do readln(a[i]); s:=0; for i:=1 to n do if a[i]='a' then s:=s+1; write('Kolichestvo elementov ravnyh "a" = ',s); readln; end. 7. Описание: Дан двумерный массив целых чисел размерностью NxN. Найти сумму его элементов Program msv; Uses crt; Var s,i,j,n:integer; a:array[1..10,1..10] of integer; begin clrscr; read(n); for i:=1 to n do for j:=1 to n do read(a[i,j]); for i:=1 to n do for j:=1 to n do s:=s+a[i,j]; write('Сумма элементов = ',s); readln; readln; end. 8. Описание: По заданному массиву X[7] сформировать массив Y, элементы которого вычисляются по формуле Y[i]= |X[i]-B|, где B - максимальный элемент массива X program msv; const Size=7; { Размерность массива } var x:array [1..Size] of real; b:real; i:integer; begin writeln; writeln ('Жду ввода элементов массива размерностью ',Size,':'); for i:=1 to Size do begin write ('x[',i,']='); readln (x[i]); end; b:=x[1]; for i:=2 to Size do if x[i]>b then b:=x[i]; writeln ('Максимальный элемент=',b:10:3); writeln ('Исходный Новый'); writeln ('массив массив'); for i:=1 to Size do begin write (x[i]:10:4); x[i]:=abs(x[i]-b); writeln (x[i]:10:4); end; end. 9. Описание: Найти максимальный элемент в линейном массиве. Вывести результат на экран program msv; uses crt; const nn = 10; var max, i: integer; a: array[1..nn] of integer; begin clrscr; for i := 1 to nn do a[i] := random(500); max := a[1]; for i := 2 to nn do if a[i] > max then max := a[i]; for i := 1 to nn do write(a[i], ' '); writeln; writeln('Max = ', max); readkey; end. 10. Описание: Отсев. Удалить в заданном массиве x(n) лишние (кроме первого) элементы так, чтобы оставшиеся образовывали возрастающую последовательность(за один просмотр массива) program msv; uses crt; const n = 10; {dlina massiva} var a: array[1..n] of integer; i, max, j, k, mi: integer; begin clrscr; randomize; for i := 1 to n do begin a[i] := random(51); write(a[i], ' '); end; max := a[1]; k := 2; {t.k. uslovie zadachi "preobarzovat' za odin prosmotr massiva", to} {k ne mozhet bit' bol'she N, chem mi vospol'zuemsya v cikle} for i := 2 to n do begin if k > n then break; if a[i] <= max then {esli a[i] <= max to udalyaem etot element} begin for j := i to n - 1 do {etogo cikl mog bi ne viiti, no u nas est' K} a[j] := a[j + 1]; dec(i); end; if a[i] > max then begin max := a[i]; mi := i; {MI - poziciya maksimuma v massive} end; inc(k); {uvelichivaem K, k = [2..n]} End; Write (#10#13, a[1], ' '); For i: = 2 to mi do Write (a[i], ' '); readkey; end. 11. Описание: В массиве X из n элементов каждый из элементов равен 0, 1 или 2. Переставить элементы массива так, чтобы сначала располагались нули, затем единицы и двойки. Дополнительный массив не использовать. Программа расширена для возможности переставлять элементы массива, являющимися любыми числами (не только 0, 1, 2) Program msv; Const n = 10; {кол-вл элементов массива} var a, b, t : integer; X: array[1..n] of integer; {сам массив из n элементов} BEGIN For a := 1 to n do {ввод массива X} Begin Write ('Введите X [', a, ']: '); Readln(X[a]); End; for a := 1 to n do begin t := X[a]; b := a - 1; While (b>=0) and (t<X[b]) do Begin X [b+1]:= X[b]; B: = b - 1; End; X [b+1]:= t; end; for a := 1 to n do {вывод результата} Write(X[a]:2); END. {конец программы} 12. Описание: Операции с массивом, сортировка суммирование.В одномерном массиве, состоящем из N вещественных элементов, вычислить:1) количество элементов массива, равных 0;2) сумму элементов массива, расположенных после минимального элемента. Упорядочить элементы массива по возрастанию модулей элементов. Program msv; Uses CRT; Const N = 10; {сколько всего элементов} Var a: Array[1..N] of Real; i, j: Byte; Zero: Byte; Min: Real; Summ: Real; Procedure Print; Begin For i := 1 to N do Write(a[i]:0:1,' '); Writeln;End; Procedure CreateMassive; BeginWriteln('Исходная последовательность'); For i := 1 to N do Begin a[i] := Random(4); a[i] := a[i] - 2; {Этот и предыдущий операторы можно объединить} End; Print; Writeln;End; Begin ClrScr;Randomize; CreateMassive; Min := a[1]; For i := 2 to N do Begin Summ := Summ + a[i]; If (a[i] < Min) then Begin Min := a[i]; Summ := 0; End; End; Writeln('Минимальный элемент ',Min:0:1,'. Сумма элементов после: ',Summ:0:1); For i := 1 to N do Begin For j := i + 1 to N do If (abs(a[j]) < abs(a[i])) then Begin a[i] := a[i] + a[j]; a[j] := a[i] - a[j]; a[i] := a[i] - a[j]; End; End; Writeln(#13#10,'Отсортировання последовательность'); Print; For i := 1 to N do If a[i] = 0 then Inc(Zero); Write(#13#10,'Нулевых элементов: ',Zero);ReadKey; End. 13. Описание: Вычислить угол между двумя заданными векторами размерности 8, используя функцию скалярного произведения a = arccos((x,y)/((x,x)*(y,y))) program msv; uses crt; type TVector = array[1..8] of Real; function scal(var Vec1, Vec2 : TVector):real; var p : Real; i : integer; begin p:=0; for i:=1 to 8 do p:=p+(Vec1[i]*Vec2[i]); scal := p;end; var Vec1, Vec2 : TVector; i : integer; sc, a, angle : Real; BEGIN writeln('Условие:'); writeln(' вычислить угол между двумя заданными векторами размерности 8,'); writeln(' используя функцию скалярного произведения'); writeln; Writeln('Ввод первого вектора'); for i := 1 to 8 do begin Write('Vec1[', i, '] : '); Readln(Vec1[i]); end; Writeln('Ввод второго вектора'); for i := 1 to 8 do begin Write('Vec2[', i, '] : '); Readln(Vec2[i]); end; sc := scal(Vec1, Vec2); a:= sc/sqrt(scal(Vec1,Vec1)*scal(Vec2,Vec2)); {Вычисляется косинус} if a=0 then angle:=90 else angle:=arctan(sqrt(1-a*a)/a)*180/pi; if a=-1 then angle:=180; if angle<0 then angle:=180+angle; writeln('Угол между векторами: ',angle:7:3,' градусов'); END. 14. Описание: Вычислить сумму двух векторов, первый из которых вводится, а элементы второго вычисляются по формуле b[i]:=sin(i*x), где 0<=x<=3.14 program msv; const Nm = 10; {размерность вектора} var Vec1, Vec2, ResVec : array[1..Nm] of Real; i : integer; x : Real; N : integer; BEGIN writeln('Условие :'); writeln(' вычислить сумму двух векторов, первый из которых вводится, а элементы'); writeln(' второго вычисляются по формуле b[i]:=sin(i*x), где 0<=x<=3.14'); writeln; Write('введите размерность вектора (N<', Nm, '): '); Readln(N); if n <= Nm then begin Writeln('Ввод вектора'); for i := 1 to N do begin Write('Vec1[', i, '] : '); Readln(Vec1[i]); end; Write('Введите X (от 0 до 3.14) : '); Readln(x); if (X <= 3.14) and (X >= 0) then begin for i := 1 to N do begin Vec2[i] := sin(Vec1[i]*X); ResVec[i] := Vec1[i]*Vec2[i]; {сразу же вычисляем произведние} end; Write('Результирующий вектор : '); {выводим на экран результат} for i := 1 to N do Write(ResVec[i]:6:2); end else Writeln('Введено неверное X'); end else Writeln('неверная размерность'); END. 15. Описание: Создается случайный массив из 5 элементов. Заменить все четные значения на 1, нечетные - на 0. Program msv;
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
|