Способ 2. С барьерным элементом
⇐ ПредыдущаяСтр 3 из 3 const aN = 10; // Количество элементов в массиве a bN = 6; // Количество элементов в массиве b cN = aN + bN; // Количество элементов в массиве c var a: array [1..aN+1] of integer:= (1,5,12,15,47,89,98,112,171,180,0); // последний элемент - барьерный b: array [1..bN+1] of integer:= (13,44,58,71,73,111,0); c: array [1..cN] of integer; ai,bi,ci: integer; begin writeln('Элементы массива a: '); for var i:=1 to aN do write(a[i],' '); writeln; writeln('Элементы массива b: '); for var i:=1 to bN do write(b[i],' '); writeln; a[aN+1]:= integer. MaxValue; // барьерный элемент - самый большой b[bN+1]:= integer. MaxValue; ci:= 1; ai:= 1; bi:= 1; for ci:=1 to cN do if a[ai]<b[bi] then begin c[ci]:= a[ai]; ai += 1; end else begin c[ci]:= b[bi]; bi += 1; end; writeln('Результат слияния: '); for var i:=1 to cN do write(c[i],' '); end. Сдвиг элементов влево const N = 10; var a: array [1..N] of integer; begin for var i:=1 to N do a[i]:= Random(100); writeln('Элементы массива a: '); for var i:=1 to N do write(a[i],' '); writeln; for var i:=1 to N-1 do a[i]:= a[i+1]; a[N]:= 0; writeln('После сдвига влево: '); for var i:=1 to N do write(a[i],' '); writeln; end.Сдвиг элементов вправо const N = 10; var a: array [1..N] of integer; begin for var i:=1 to N do a[i]:= Random(100); writeln('Элементы массива a: '); for var i:=1 to N do write(a[i],' '); writeln; for var i:=N downto 2 do a[i]:= a[i-1]; a[1]:= 0; writeln('После сдвига влево: '); for var i:=1 to N do write(a[i],' '); writeln; end.Удаление элемента const N = 10; var a: array [1..N] of integer; K: integer; begin for var i:=1 to N do a[i]:= Random(100); writeln('Элементы массива a: '); for var i:=1 to N do write(a[i],' '); writeln; K:= Random(1,N); for var i:=K to N-1 do a[i]:= a[i+1]; writeln('После удаления элемента с индексом ',K,':'); for var i:=1 to N-1 do write(a[i],' '); writeln; end.Вставка элемента const N = 10; Elem = 666; var a: array [1..N+1] of integer; K: integer; begin for var i:=1 to N do a[i]:= Random(100); writeln('Элементы массива a: '); for var i:=1 to N do write(a[i],' '); writeln; K:= Random(1,N); for var i:=N downto K do a[i+1]:= a[i]; a[K]:= 666; writeln('После вставки элемента ',Elem,' в позицию ',K,':'); for var i:=1 to N+1 do write(a[i],' '); writeln; end.Подсчет количества элементов, удовлетворяющих условию const N = 20; var a: array [1..N] of integer; K,Count: integer; begin for var i:=1 to N do a[i]:= Random(10); writeln('Элементы массива a: '); for var i:=1 to N do write(a[i],' '); writeln; K:= Random(10); Count:= 0; for var i:=1 to N do if a[i] = K then Count += 1; writeln('Количество элементов, равных ',K,': ',Count); end.Есть ли элемент, удовлетворяющий условию
Сортировка пузырьком const N = 10; var a: array [1..N] of integer; begin for var i:=1 to N do a[i]:= Random(100); writeln('Элементы массива a: '); for var i:=1 to N do write(a[i],' '); writeln; for var i:=n downto 2 do for var j:=1 to i-1 do if a[j+1]<a[j] then Swap(a[j+1],a[j]); writeln('После сортировки пузырьком: '); for var i:=1 to N do write(a[i],' '); writeln; end.Сортировка выбором const N = 10; var a: array [1..N] of integer; K: integer; IsFound: boolean; begin for var i:=1 to N do a[i]:= Random(100); writeln('Элементы массива a: '); for var i:=1 to N do write(a[i],' '); writeln; for var i:=1 to N-1 do begin var min:= a[i]; var ind:= i; for var j:=i+1 to N do if a[j]<min then begin min:= a[j]; ind:= j; end; a[ind]:= a[i]; a[i]:= min; end; writeln('После сортировки выбором: '); for var i:=1 to N do write(a[i],' '); writeln; end.Массивы. Возможные ошибки Попытка вывести массив не поэлементно, а целиком const Sz = 100; var a: array [1..Sz] of integer; i: integer; begin read(a); // неверно: массив необходимо вводить поэлементно end.Использование записи a[i] вне цикла const Sz = 10; var a: array [1..Sz] of integer; i: integer; begin var N:= Sz; for i:=1 to N do a[i]:= Random(100); a[i]:= 666; // Ошибка: переменной i нельзя пользоваться вне цикла for end.Выход за границы диапазона изменения индекса const Sz = 10; var a: array [1..Sz] of integer; begin var N:= Sz; for var i:=1 to N+1 do a[i]:= Random(100); // При i=N+1 происходит ошибка: индекс вне границ массива end.Затирание элементов при сдвиге const Sz = 100; var a: array [1..Sz] of integer; begin var N:= 10; for var i:=1 to N do a[i]:= Random(100); for var i:=1 to N do write(a[i],' '); writeln; for var i:=1 to N-1 do // ошибка: алгоритм сдвига вправо надо начинать с конца a[i+1]:= a[i]; for var i:=1 to N do write(a[i],' '); end.
Матрицы. Тексты программ Общая часть Во всех задачах будем считать, что матрица описана следующим образом: Const SzM = 10; SzN = 10;
type Matrix = array [1..SzM,1..SzN] of integer;
Кроме того, во всех задачах будем использовать следующие процедуры для заполнения и вывода: procedure FillMatrixByRandom(var a: Matrix; m,n: integer); // Заполнение случайными Begin for var i:=1 to M do for var j:=1 to N do a[i,j]:= Random(10); end;
procedure PrintMatrix(const a: Matrix; m,n: integer); // Вывод матрицы Begin for var i:=1 to M do Begin for var j:=1 to N do write(a[i,j]:4); writeln; end; end; Данные участки кода следует писать в начале каждой программы, приводимой в этом пункте. Заполнение матрицы случайными числами и вывод var a: Matrix;
Begin var m:= 4; var n:= 5; FillMatrixByRandom(a,m,n);
writeln('Элементы матрицы: '); PrintMatrix(a,m,n); end. Перемена местами двух строк var a: Matrix;
Begin var m:= 5; var n:= 9; FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: '); PrintMatrix(a,m,n);
var k1:= 2; // поменять местами строки с номерами k1 и k2 var k2:= 4; for var j:=1 to n do Swap(a[k1,j],a[k2,j]);
writeln('Преобразованная матрица: '); PrintMatrix(a,m,n); end. Поиск минимумов в строках Var a: Matrix; mins: array [1..SzN] of integer;
Begin var m:= 5; var n:= 9; FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: '); PrintMatrix(a,m,n);
for var i:=1 to m do Begin var min:= a[i,1]; for var j:=2 to n do if a[i,j]<min then min:= a[i,j]; mins[i]:= min; end;
writeln('Минимумы в строках: '); for var i:=1 to m do write(mins[i]:4); end. Поиск максимумов в столбцах Var a: Matrix; maxs: array [1..SzN] of integer;
Begin var m:= 5; var n:= 9; FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: '); PrintMatrix(a,m,n);
for var j:=1 to n do Begin var max:= a[1,j]; for var i:=2 to m do if a[i,j]>max then max:= a[i,j]; maxs[j]:= max; end;
writeln('Максимумы в столбцах: '); for var j:=1 to n do write(maxs[j]:4); end. Поиск сумм в строках Var a: Matrix; sums: array [1..SzM] of integer;
Begin var m:= 4; var n:= 5; FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: '); PrintMatrix(a,m,n);
for var i:=1 to m do Begin var sum:= 0; for var j:=1 to n do sum += a[i,j]; sums[i]:= sum; end;
writeln('Суммы в строках: '); for var i:=1 to m do write(sums[i]:4); end. Поиск произведений в столбцах Var a: Matrix; products: array [1..SzN] of integer;
Begin var m:= 3; var n:= 4; FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: '); PrintMatrix(a,m,n);
for var j:=1 to n do Begin var p:= 1; for var i:=1 to m do p *= a[i,j]; products[j]:= p; end;
writeln('Произведения в столбцах: '); for var j:=1 to n do writeln(products[j]:4); end. Наличие нуля в матрице Var a: Matrix; HasZero: boolean;
label 1;
Begin var m:= 3; var n:= 4; FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: '); PrintMatrix(a,m,n);
HasZero:= False; for var i:=1 to m do for var j:=1 to n do if a[i,j]=0 then Begin HasZero:= True; goto 1; end; 1: if HasZero then writeln('В матрице есть нули') else writeln('В матрице нулей нет') end. Сумма чисел на главной диагонали Var a: Matrix; sum: integer;
Begin var m:= 5; var n:= m; FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: '); PrintMatrix(a,m,n);
sum:= 0; for var i:=1 to m do sum += a[i,i]; writeln('Сумма элементов главной диагонали: ',sum); end. Сумма чисел на побочной диагонали Var a: Matrix; sum: integer;
Begin var m:= 5; var n:= m; FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: '); PrintMatrix(a,m,n);
sum:= 0; for var i:=1 to m do sum += a[i,m-i+1]; writeln('Сумма элементов побочной диагонали: ',sum); end. Заполнение нулями ниже главной диагонали Var a: Matrix; sum: integer;
Begin var m:= 5; var n:= m; FillMatrixByRandom(a,m,n);
writeln('Исходная матрица: '); PrintMatrix(a,m,n);
for var i:=2 to m do for var j:=m-i+2 to m do a[i,j]:= 0;
writeln('Преобразованная матрица: '); PrintMatrix(a,m,n); end.
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|