Тема урока: Одномерные массивы. Работа с элементами План урока: 1. Регулярные типы данных. Одномерные массивы. Работа с элементами. 2. Решение задач. 3. Домашнее задание. В математике, экономике, информатике часто используются упорядоченные наборы данных, например последовательности чисел, таблицы, списки фамилий. Для обработки наборов данных одного типа вводится понятие массива.
Массив - совокупность конечного числа данных одного типа. Массив обозначается одним именем. Всю совокупность действительных чисел 1.6, 14.9, - 5.0, 8.5, 0.46 можно считать массивом и обозначить одним именем, например А. Каждый элемент массива обозначается именем массива с индексом. Элементы массива упорядочены по значениям индекса. В математике, как правило, индекс либо заключается в круглые скобки, либо указывается несколько ниже имени массива, например: А(1), А(2), А(3), А(4), А(5) или А1, А2, А3, А4, A5, или в общем виде {Ai}, где i =1, 2, 3,..., n
В Turbo Pascal в квадратные. Для рассмотренного примера элементами массива А являются: На Turbo Pascal А[1]:=1.6, А[2]:=14.9, А[3]:= -5.0, А[4]:=8.5, А[5]:=0.46. Таким образом - индекс определяет положение элемента массива данных относительно его начала. Если в программе используется массив, то он должен быть описан.
Форма описания имеет вид Var имя массива: ARRAY [n1.. n2 ] OF ; Var a:array[ ] of integer; Здесь n1, n2 номер первого и последнего элементов массива соответственно. В качестве типа элементов может использоваться любой тип данных, кроме файлового. Если несколько массивов имеют одинаковый тип индексов и одинаковый базовый тип, то допускается в описании объединять массивы в список, например Var А, В, С: ARRAY [1..50] OF REAL; Здесь объявлено списком три массива А, В, С действительных чисел, каждый из которых содержит по 50 элементов ( от 1 до 50):
Присвоение значений элементам массива может происходить с помощью: оператора Read (Readln); uses crt; Var i,n:integer; a:array[ ] of integer; Begin clrscr; (Определяем число элементов в массиве) write('Введ. Размер. массива '); readln(n);
Ввод элементов массива for i:=1 to n do begin write('a[',i,'] '); readln(a[i]); end; Выводим на экран полученный массив for i:=1 to n do begin write(a[i],' '); end; end.
Присвоение значений элементам массива может происходить с помощью: (описания элементов массива описания констант.) uses crt; Const n=5; a:array[1..5] of integer= (4,5,7,7,0); Var i:integer; Begin clrscr; ( Считываем и печатаем полученный массив ) for i:=1 to n do begin write(a[i],' '); end; end.
Функция Random [(x)] в TPascal Формирует случайное число от 0 до Х целого или вещественного типа (перед обращением к функции ее целесообразно инициализировать, использовав процедуру Rаndomize). X – параметр, указывающий диапазон значений случайного числа. Оно изменяется в пределах 0 до Х. Результат в этом случае имеет тип Word (диапазон значений - 0…65535). Если параметр Х не задан, результат будет типа Real в пределах 0.0
Сформировать одномерный массив из N элементов, где элементы массива - целые случайные числа в пределах от 1 до 45. Напечатать элементы массива в прямом и обратном порядке Program Prim1; uses crt; Var i,n:integer; a:array[ ] of integer; Begin clrscr; randomize; write(' размер = ');readln(n); for i:=1 to n do begin
Получаем случайные числа в пределах от 1 до 45. a[i]:=random(46))+1; на экран. write(a[i],' '); end; обратном порядке for i:=n downto 1 do begin write(a[i],' '); end; end. QBTP
В предыдущей задаче переставить элементы, стоящие на нечетных местах, с соответствующими элементами на четных местах. После создания массива вставим строки: В полученном массиве меняем соседние элементы. i:=1; while i
Найти максимальный (минимальный) элемента массива, а также его порядковый номер. После создания массива вставим строки: За начальный максимум (минимум) берем первый элемент массива. min:=a[1]; max:=a[1]; for i:=1 to n do begin Если найдется элемент меньший MIN, то MIN будет равен этому элементу. Одновременно запоминаем индекс промежуточного минимума. If a[i]
Одновременно запоминаем индекс промежуточного максимума. if a[i]>= max then begin max:=a[i]; imax:=i; end; end; (Печатаем минимальный элемент и его индекс) writeln(min,' номер ',imin); (Печатаем максимальный элемент и его индекс.) writeln(max,' номер ',imax); end. Найти максимальный (минимальный) элемента массива, а также его порядковый номер.
Домашнее задание В предыдущей задаче найдите минимальный элемент среди отрицательных чисел и максимальный элемент среди неотрицательных.
Тема урока: Одномерные массивы. Работа с элементами План урока: Проверка домашнего задания. Решение задач. Домашнее задание. Ход урока. 1. В предыдущей задаче найдите минимальный элемент среди отрицательных чисел и максимальный элемент среди неотрицательных. (В условии на нахождение промежуточного минимума добавим условие) if (a[i]=0) then begin max:=a[i]; imax:=i; end;
В предыдущей задаче найдите максимальный элемент среди отрицательных чисел и минимальный элемент среди неотрицательных. Достаточно ли изменить условие в строках? if (a[i] =0) then begin min:=a[i]; imin:=i; end; if (a[i]>= max) and (a[i]
Подсчитать количество четных элементов массива, заданного датчиком случайных чисел. program Prim19; Uses crt; Var i, k, n, r: integer; a:array[ ] of integer; Begin clrscr; randomize; write(' число элемен.n='); readln(n); for i:=1 to n do begin a[i]:=random(45)-22; write(a[i],' '); (Проверяем на четность и считаем количество четных элементов.) If a[i] mod 2=0 then inc(k,1); End; Write('к= ',k); end. QBTP
program prim2; uses crt; var a:array [ ] of integer; i, k, n, l:integer; begin randomize; clrscr; write('число элементов n='); readln(n); for i:=1 to n do begin a[i]:=random(45)-22; write(a[i],' '); Подсчитать количество отрицательных и н6еотрицательных элементов массива, заданного датчиком случайных чисел
Сравниваем с нулем и считаем неотрицательные и отрицательные элементы if a[i]>=0 then k:=K+1 else L:=l+1; end; writeln; writeln('неотриц.= ',k,' отриц. =',l); readln; end. TP
Произвести удаление элемента из одномерного массива, заданного датчиком случайных чисел. После заполнения массива вводим номер удаляемого элемента. write(' номер удал. элем. readln(k); for i:=1 to n-1 do begin (Смещаем элементы массива к началу, начиная с К-го.) if>=k then a[i]:=a[i+1]; end; (Обнуляем последний элемент) a[n]:=0; (Выводим на экран измененный массив) for i:=1 to n -1 do begin write(a[i],' '); end; readln; end. QB TP
Произвести вставку элемента в одномерный массив, заданный датчиком случайных чисел. После заполнения массива вводим индекс и значение вставляемого элемента. write(' индекс
if i>k then a[i]:=a[i-1]; end; (На какое место ставим введенный элемент?) a[k]:=r; (Выводим на экран измененный массив.) for i:=1 to n +1 do begin write(a[i],' '); end; readln; end. Домашнее задание Что необходимо изменить в программе подсчета количества элементов, чтобы в К находилась сумма неотрицательных элементов, а в L произведение отрицательных элементов.
Тема урока: Двумерные массивы. Работа с элементами План урока: Проверка домашнего задания. Двумерные массивы. Решение задач. Домашнее задание. Что необходимо изменить в программе подсчета количества элементов, чтобы в К находилась сумма неотрицательных элементов, а в L произведение отрицательных элементов? Для этого изменим строку, предварительно задав начальные значения К=0 и L=1. if a[i]>=0 then k:= k + a[i] else L:=l+ a[i];
Двумерные массивы Массивы, положение элементов в которых описывается двумя индексами, называются двумерными. Их можно представить в виде прямоугольной таблицы или матрицы. Рассмотрим матрицу А размером 2*3, то есть в ней будет две строки, а в каждой строке по три элемента: A= a11 a12 a13 a21 a22 a23 a11a12a13 a21a22a23
Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца. Например, a12 это элемент, стоящий в первой строке и во втором столбце.
Способы объявления двумерного массива Еще более краткое описание массива А можно получить, указывая имя массива и диапазоны изменения индексов для каждой размерности массива: Const n=2; m=3; Type massiv = Array[1..n,1..mJ Of ; Var a: massiv. Если указанный тип используется для определения одного массива в программе, то удобно объявление массива в разделе описания переменных: Var a: Array[1..n,1..m] Of.
Найти сумму всех элементов двумерного массива и сумму элементов каждой строки. program prim1; uses crt; Var a:array [1..100,1..100] of integer; i, j, n, s, s1:integer; begin clrscr; randomize; write('n=');readln(n); for i:=1 to n do begin for j:=1 to n do begin
(Получаем случайные значения элементов матрицы.) a[i,j]:=random(45)-22; write(a[i,j]:4); Находим сумму элементов. s:=s+a[i,j]; s1:=s1+a[i,j]; end; (Печатаем сумму всех элементов каждой строки и обнуляем значение суммы.) writeln(сумма элементов строки =,s); s:=0; writeln; end; writeln(сумма всех элем. s1=,s1); readln; end. QBTP
Решение. Так как элементы могут повторяться, то договоримся, что будем запоминать только индексы первого максимального элемента. program prim2; uses crt; Var a:array [1..100,1..100] of integer; i, j, n: integer; max, min, i1, j1, i2, j2:integer; begin clrscr; randomize; write('n=');readln(n); for i:=1 to n do begin Найти максимальный элемент каждой строки массива и его индексы (всего массива и его индексы)
Продолжение программы Так как тип массива integer, то за начальные значения возьмем: max := ; for j:=1 to n do begin (Получаем случайные значения элементов матрицы.) a[i,j]:=random(45)-22; (Выводим элементы матрицы на экран.) write(a[i,j]:4); (Находим максимальный элемент в каждой cтроке и его индексы.) if a[i,j]>max then begin max:=a[i,j];i1:=i;j1:=j; end;
Печатаем максимальный элемент в каждой строке и его индекс. write(' max=',max, ' столбец =;J1строка=',i1, столбец =', j1); Переходим на следующую строку. writeln; end; readln; end. (Что необходимо изменить в программе, чтобы находить максимальный элемент во всем массиве.) Для нахождения максимального элемента всего массива необходимо: - перенести начальный максимум на одну строку выше - перенести печать максимального элемента на две строки вниз. TP
Найти количество элементов, больших некоторого заданного числа Х в каждой строке массива (во всем массиве). program prim25; uses crt; var a: =array[1..100,1..100] of integer; i,j,n:integer; k,l,x:integer; begin clrscr; randomize; write('n=');readln(n); Задаем значение Х. x:=0; for i:=1 to n do begin k:=0;l:=0; for j:=1 to n do begin a[i,j]:=random(45)-22; write(a[i,j]:4);
Продолжение программы Считаем число элементов, удовлетворяющих условию задачи. if a[i,j]>x then k:=k+1 else l:=l+1; end; (Если находим для всего массива, то следующую строку надо убрать, а начальные значения) (K=0:L=0 перенести выше на одну строку.) write(' k=',k, ' l=',l); k:=0;l:=0; writeln; end; (Печатаем число элементов, удовлетворяющих условию задачи во всем массиве.) write(' k=',k, ' l=',l); readln; end. Домашнее задание. Измените программу примера так, чтобы находился последний максимальный элемент и его индексы во всем массиве. TP
Тема урока: Двумерные массивы. Работа с элементами План урока: Проверка домашнего задания. Решение задач. Домашнее задание. Проверка домашнего задания. Измените программу предыдущего примера, чтобы находился последний максимальный элемент и его индексы во всем массиве. Для решения этой задачи необходимо изменить знак > на => в следующей строке. if a[i, j]>= max then begin max: = a [i, j]; i1:=i;j1:=j;end; Продолжим изучение двумерных массивов на конкретных примерах.
Определить, является ли данный квадратный массив симметричным относительно своей главной диагонали. Если массив является симметричным, то для него выполняется равенство a[i,j]=a[j,i] для всех i=l,..., n и j=1,..., n при условии, что i>j. Но если встретится хотя бы одна такая пара, что соответствующие элементы не будут равны, то массив будет несимметричным. program prim1; uses crt; var a:array[1..100,1..100] of integer; i, j, n:integer; begin clrscr; randomize;
Продолжение программы write('n=');readln(n); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(45)-22; write(a[i,j]:4); end; writeln; end; readln;
for i:=1 to n do for j:=1 to n do (if i>j) and (a[i,j]a[j,i]) then begin writeln('no'); end; writeln('yes'); readln; end. (Можно ли сократить перебор? Да, так как I>J, то заменим следующие строки:) for j:=1 to i-1 do (if i>j) and (a[i,j]a[j,i]) then TP
Вставить строку из нулей на место строки с номером k. Для решения этой задачи необходимо: Первые k-1 строк оставить без изменения. Все строки после k-й сдвинуть на одну назад, это лучше начать с последней строки и идти до k-й. Элементам строки k присвоить заданное значение. Кроме того, необходимо изменить размер массива. Так как мы вставляем строку, то число строк будет на одну больше:
program prim2; uses crt; mas=array[1..100,1..100] of integer; var a:mas; i,j,k,n:integer; begin clrscr; randomize; write('n=');readln(n); (Создаем и распечатываем двумерный массив. ) for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(45)-22;
write(a[i,j]:4); end; writeln; end; (Вводим номер вставляемой строки. ) write('k=');readln(k); (Сдвигаем строки назад до К-ой строки, начиная с последней.) for i:=n downto k do for j:=1 to n do a[i+1,j]:=a[i,j]; end.
(Обнуляем элементы К-ой строки.) for j:=1 to n do a[k,j]:=0; (Распечатываем новый массив, который на одну строку больше исходного.) for i:=1 to n+1 do begin for j:=1 to n do begin write(a[i,j]:4); end; writeln; end; readln; QBTP
Удалить строку с номером k. Для того, чтобы удалить строку с номером k, необходимо: - Сдвинуть все строки, начиная с данной, на одну вверх. - Последнюю строку "обнулить", то есть всем элементам последней строки присвоить нулевое значение. Будем выводить на экран сначала все строки, а второй раз, после удаления, на одну меньше.
program prim3; uses crt; Var a:array [1..100,1..100] of integer; i, j, k, n: integer; begin clrscr; randomize; write('n=');readln(n); (Создаем и распечатываем двумерный массив. ) for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(45)-22;
write(a[i,j]:4); end; writeln; end; (Вводим номер удаляемой строки) write('k=');readln(k); (Сдвигаем строки на одну вверх, начиная с данной) for i:=K to n-1 do for j:=1 to n do a[i,j]:=a[i+1,j];
(Обнуляем последнюю строку) for j:=1 to n do a[n,j]:=0; (Печатаем новый массив, в котором на одну строку меньше) for i:=1 to n-1 do begin for j:=1 to n do begin write(a[i,j]:4); end; writeln; end; readln; end. QB TP
Поменять местами строки с номерами К1 и К2. program prim4; uses crt; Var a:array [1..100,1..100] of integer; i, j, n, k1, k2, r:integer; begin clrscr; randomize; write('n='); readln(n);
(Создаем и распечатываем двумерный массив) for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(45)-22; write(a[i,j]:4); end; writeln; end;
Продолжение программы (Вводим номера строк, которые будем менять местами) write('stroki k1=k2='); readln(k1,k2); ( Меняем значения К1 и К2 строк между собой.) for j:=1 to n do begin r:= a[k1,j];a[k1,j]:=a[k2,j]; a[k2,j]:=r; end; QB TP
Распечатаем измененный массив for i:=1 to n do begin for j:=1 to n do begin write(a[i,j]:4); end; writeln; end; readln; end. Домашнее задание. В массиве размером n*n к элементам четных столбцов прибавить элемент первого столбца соответствующей строки.
Тема урока: Двумерные массивы. Работа с элементами План урока: Проверка домашнего задания. Решение задач. Домашнее задание.
В массиве размером n* n к элементам четных столбцов прибавить элемент первого столбца соответствующей строки. Пропустим начальные строки программы. В данной задаче необходимо проверять четность столбцов. Основная часть программы будет выглядеть так. for i:=1 to n do begin for j:=1 to n do Проверяем номер столбца на четность. В случае четности прибавляем к значениям проверяемого столбца соответствующие значения первого столбца. if j mod 2=0 then a[i,j]:=a[i,j]+a[i,1]; end; Далее распечатываем измененный массив
Иногда массив необходимо заполнять не случайными числами, а по некоторому закону. Пример 1 Заполнить массив А размером n*m следующим образом, например, n=5 и m=5: То есть заполняется в виде "змейки". Решение. Для того, чтобы заполнить, надо вывести правило заполнения, а оно в данном случае будет таким: если ряд нечетный (то есть номер строки нечетное число), то A[i,j]=(i-l)*m+j, иначе (то есть когда строка четная) A[i,j]==i*m-j+l. По этому правилу и составляем процедуру заполнения. Тем более, что проверку на четность мы производили (только со столбцами) в домашней работе.
program prim1; uses crt; Var a:array [1..100,1..100] of integer; i, j, n, m: integer; begin clrscr; write('n=m='); readln(n,m); for i:=1 to n do begin for j:=1 to m do begin
Заполняем массив по выведенному правилу заполнения и выводим его на экран. if i mod 2 =1 then a[i,j]:=(i-1)*m+j else a[i,j]:=i*m-j+1; write(a[i,j]:4); end; writeln; end; readln; end. TPQB
Составить программу, запрашивающую координаты ферзя на шахматной доске и показывающую поля доски, находящиеся под боем. Решение. Шахматную доску представим в виде двумерного массива размером 8*8. Координаты ферзя мы будем вводить двумя числами (номер строки и номер столбца), хотя в шахматах принято вводить букву и число. (Буква отвечает за номер строки, а число за номер столбца). Это мы делаем для сокращения программы. При желании вы можете не отступать от традиций и вводить координаты именно таким образом. В программе необходимо будет перевести букву в соответствующее ей число ('а' - 1, V - 2, 'с' - 3,'d' - 4, 'е' - 5,'f'6, 'g' 7,'h' 8), тогда будет удобнее работать.
Для решения надо еще знать следующие свойства шахматной доски. Все диагонали делятся на восходящие и нисходящие: На каждой диагонали выполняется свойство: - для любой восходящей диагонали сумма номера строки и номера столбца постоянна и для разных диагоналей разная, то есть i + j = constl; - для нисходящих разность номера строки и номера столбца тоже постоянна и для разных диагоналей разная, то есть i - j = const2. Это необходимо для того, чтобы определить номера диагоналей, на которых поставлен ферзь. Вся программа будет такой:
program prim2; uses crt; Var a:array [1..100,1..100] of integer; i,j,n,k,l:integer; begin clrscr; write('n='); readln(n); (Вводим координаты ферзя K
TP Для нисходящих и восходящих диагоналей, проходящих через точку (k,l), присваиваем значения единицы, а других нуль. if ( i=k) or (j=l) or (i+j=k+L) or (i-j=k-L) then a[i,j]:=1 else a[i,j]:=0; (Клетке, где стоит ферзь, присваиваем значение два.) a[k,l]:=2; (Распечатываем массив) write(a[i,j]:4); end; writeln; end; readln; end.
Задача аналогична предыдущей, только в ней дополнительно придется проверять, не стоит ли конь под ударом ферзя. program prim3; uses crt; Var a:array [1..100,1..100] of integer; i, j, n, k, l, k1, l1: integer; begin clrscr; write('n=');readln(n); Ввести координаты ферзя и коня и определить: бьёт ли ферзь коня, если первый ход ферзя.
(Вводим координаты ферзя) write('k=l=');readln(k,l); for i:=1 to n do begin for j:=1 to n do begin (Заполняем поля, которые бьет ферзь единицами, а где стоит ферзь двойкой) if ( i=k) or (j=l) or (i+j=k+L) or (i-j=k-L) then a[i,j]:=1 else a[i,j]:=0; a[k,l]:=2;
(Распечатываем массив. ) write(a[i,j]:4); end; writeln; end; (Вводим координаты коня) write('koordin konya k1=l1='); readln(k1,l1); (Проверяем, бьется ли данное поле ферзем) if a[k1,l1]=1 then writeln ('бьет') else writeln('нет'); readln; end. Домашнее задание. Подготовиться к контрольной работе. TP
Контрольная работа 3 Вариант 1 1. Дан массив целых чисел, состоящий из 20 элементов. Заполнить его с клавиатуры. Найти: - сумму элементов, имеющих нечетное значение; - вывести индексы тех элементов, значения которых больше заданного числа А. 2. Определить, есть ли в данном массиве положительные элементы, кратные k (k вводить с клавиатуры). Вариант 2 1. Дан массив целых чисел, состоящий из 25 элементов. Заполнить его с клавиатуры. Найти: - сумму элементов, имеющих нечетные индексы; - подсчитать количество элементов массива, значения которых больше заданного числа А и кратны Найти номер первого отрицательного элемента, делящегося на 5 с остатком 2.
Вариант 3 1. Дан массив целых чисел, состоящий из 15 элементов. Заполнить его с клавиатуры. Найти: - сумму положительных элементов, значения которых меньше 10; - вывести индексы тех элементов, значения которых кратны 3 и Определить, есть ли пара соседних элементов с суммой, равной заданному числу. Вариант 4 1. Дан массив целых чисел, состоящий из 10 элементов. Заполнить его с клавиатуры. Найти: - удвоенную сумму положительных элементов; - вывести индексы тех элементов, значения которых больше значения предыдущего элемента (начиная со второго). 2. Определить, есть ли 2 пары соседних элементов с одинаковыми знаками.
Вариант 5 1. Дан массив целых чисел, состоящий из 30 элементов. Заполнить его с клавиатуры. Найти: - сумму отрицательных элементов; - найти количество тех элементов, значения которых положительны и не превосходят заданного числа А. 2. Найти номер последней пары соседних элементов с разными знаками. Вариант 6 1. Заменить максимальный по модулю отрицательный элемент нулем. 2. Заменить первые k элементов на противоположные по знаку. 3. Из элементов массива С сформировать массив А того же размера по правилу: если номер четный, то Ai=C \2, если нечетный, то Ai=2*Ci.
Вариант 7 1. Заменить минимальный по модулю положительный элемент нулем. 2. Заменить элементы с k1-гo пo k2-й на обратные. 3. Из элементов массива А сформировать массив D того же размера по правилу: первые 10 элементов Di=Ai+i, остальные Di=Aii. Вариант 8 1. Заменить первый отрицательный элемент нулем. 2. Умножить все элементы, кратные 3, на третий элемент массива. 3. Из элементов массива Р сформировать массив М того же размера по правилу: если номер четный, то Pi=i*Mi, если нечетный, то Pi=-Mi.
Вариант 9 1. Заменить максимальный элемент на противоположный по знаку. 2. Заменить нулями элементы между минимальным и максимальным, кроме них самих. 3. Из элементов массива С сформировать массив А того же размера по правилу: элементы с 3-го по 12-й Ai= Ci2, все остальные Ai=Ci-l. Вариант Заменить первый элемент, кратный 5, нулем. 2. Заменить элементы с нечетными номерами на квадрат их номера. 3. Из элементов массива D сформировать массив А того же размера по правилу: если номер четный, то Ai=Di2, если нечетный, то Ai=Di/i.
Вариант Заменить последний положительный элемент на второй элемент массива. 2. Разделить все элементы с четными номерами на первый элемент. 3. Из элементов массива С сформировать массив А того же размера по правилу: если номер четный, то Ai=C\2, если нечетный, то Ai=2Ci. Вариант Дан массив целых чисел (n=15), заполненный случайным образом числами из промежутка [20,50]. - удалить из него все элементы, в которых есть цифра 5. - вставить число k после всех элементов, кратных своему номеру (k - с клавиатуры). - поменять местами первый положительный и последний отрицательный элементы.
Вариант Дан массив целых чисел (n=10), заполненный случайным образом числами из промежутка [40,30]. - удалить из него все элементы, которые состоят из одинаковых цифр (включая однозначные числа). - вставить число k перед всеми элементами, в которых есть цифра 1 (k вводить с клавиатуры). - переставить первые три и последние три элемента местами, сохраняя их следование.
Вариант Дан массив целых чисел (n=12), заполненный случайным образом числами из промежутка [10,60]. - удалить из него все элементы, в которых последняя цифра четная, а само число делится на нее. - вставить число k перед и после всех элементов, заканчивающихся на данную цифру (k вводить с клавиатуры). - переставить элементы следующим образом: а[1], а[12], а[2], а[11],..., а[5], а[8], а[6], а[7].
Контрольная работа 3 Вариант Дан массив целых чисел (n=25), заполненный случайным образом числами из промежутка [35,75]. - удалить из него все элементы, первая цифра которых четная. - вставить число k1 после всех элементов, больших заданного числа, а число k2 перед всеми элементами, кратными 3 (k1 и k2 вводить с клавиатуры). - перенести первые k элементов в конец, то есть: a[k+l], a[k+2],...,a[n], a[l], a[2],.... a[k].
Вариант Дан массив целых чисел (n=20), заполненный случайным образом числами из промежутка [-45,95]. - удалить из него все элементы, кратные 7 и принадлежащие промежутку [а, n] (а и b вводить с клавиатуры). - вставить число k между всеми соседними элементами, которые образуют пару элементов с одинаковыми знаками (k вводить с клавиатуры). - переставить в обратном порядке часть массива между элементами с номерами k1 и k2, включая их. Сделать проверку корректности ввода k1 и k2, если ввод неправильный, то ничего не делать.
Двумерные массивы. Контрольная работа 4 Вариант 1 1. Дан двумерный массив размером 5*6, заполненный целыми числами с клавиатуры. Сформировать одномерный массив, каждый элемент которого равен произведению четных положительных элементов соответствующего столбца. 2. Дан двумерный массив размером п*m, заполненный случайным образом. Определить, есть ли в данном массиве строка, в которой ровно два отрицательных элемента. 3. Заполнить массив размером 7*7 по правилу:
Вариант 2 1. Дан двумерный массив размером 4*6, заполненный целыми числами с клавиатуры. Сформировать одномерный массив, каждый элемент которого равен количеству элементов соответствующей строки, больших данного числа. 2. Дан двумерный массив размером п*m, заполненный случайными числами. Определить, есть ли в данном массиве столбец, в котором имеются одинаковые элементы. 3. Заполнить массив размером 7*7 по правилу:
Вариант 3 1. Дан двумерный массив размером 5*6, заполненный целыми числами с клавиатуры. Сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу соответствующего столбца. 2. Дан двумерный массив размером п*т, заполненный случайными числами. Определить, есть ли в данном массиве строка, в которой имеется два максимальных элемента всего массива. 3. Заполнить массив размером 6*6 по правилу:
Вариант 4 1. Дан двумерный массив размером 4*5, заполненный целыми числами с клавиатуры. Сформировать одномерный массив, каждый элемент которого равен количеству отрицательных элементов, кратных 3 или 5, соответствующей строки. 2. Дан двумерный массив размером п*т, заполненный случайными числами. Определить, есть ли в данном массиве столбец, в котором равное количество положительных и отрицательных элементов. 3. Заполнить массив размером 6*6 по правилу:
Вариант 5 1. Дан двумерный массив размером 6*5, заполненный целыми числами с клавиатуры. Сформировать одномерный массив, каждый элемент которого равен первому четному элементу соответствующего столбца, если такого нет, то равен нулю. 2. Дан двумерный массив размером п*т, заполненный случайными числами. Определить, есть ли в данном массиве строка, содержащая больше положительных элементов, чем отрицательных. 3. Заполнить массив размером 7*7 по правилу:
Вариант 6 1. Дан двумерный массив размером 5*6, заполненный случайным образом. а) заменить максимальный элемент каждой строки на противоположный. б) вставить после столбцов с максимальными элементами столбец из нулей. в) удалить среднюю строку. г) поменять местами средние столбцы.
Вариант 7 1. Дан двумерный массив размером 8*7, заполненный случайным образом. а) заменить все элементы первых трех столбцов на их квадраты. б) вставить между средними строками первую строку. в) удалить все столбцы, в которых первый элемент больше последнего. г) поменять местами средние строки с первой и последней.
Вариант 8 1. Дан двумерный массив размером 5*8, заполненный случайным образом. а) заменить все симметричные элементы на нули. б) вставить перед всеми строками, первый элемент которых делится на 3, строку из нулей. в) удалить столбец, в котором находится первый четный отрицательный элемент. г) поменять местами средние столбцы со вторым и предпоследним.