Как найти сумму соседних элементов массива паскаль

александр1984

1

Найти максимальную сумму двух соседних элементов в массиве

10.03.2009, 23:51. Показов 5981. Ответов 1


Студворк — интернет-сервис помощи студентам

помогите пожалуйста решить задачу:в одномерном массиве найти максимальную сумму двух соседних элементов

Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

10.03.2009, 23:51

Ответы с готовыми решениями:

В массиве из 20 элементов найти 5 соседних элементов сумма которых максимальна
В массиве из 20 элементов, найти 5 соседних элементов, сумма которых максимальна. Заранее Спасибо.

Найти произведение двух соседних элементов массива, наиболее удаленное по модулю от К
Паскаль…. ненавижу его=((((

Найти произведение двух соседних элементов массива, наиболее…

Найти максимальную сумму элементов на диагоналях матрицы, параллельных главной
1. Задача на одномерный массив
Дан массив (A1, A2, …, An). Его элементы — это коэффициенты…

Программа, которая находит и выводит наибольшую сумму двух соседних элементов, которая не кратна 3
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значения от -10 000 до…

1

Puporev

Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

11.03.2009, 07:04

2

Лучший ответ Сообщение было отмечено как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
uses crt;
var a:array[1..100] of integer;
    n,i,sum,max,i1,i2:integer;
begin
clrscr;
randomize;
write('n=');readln(n);
Writeln('Massiv:');
for i:=1 to n do
  begin
    a[i]:=random(20);
    write(a[i],' ');
  end;
writeln;
max:=a[1]+a[2];i1:=1;i2:=2;
for i:=2 to n do
  begin
   sum:=a[i]+a[i-1];
   if sum>max then
      begin
       max:=sum;
       i1:=i-1;
       i2:=i;
      end;
  end;
writeln('Maximalnaya summa=',max,'  elementy ',a[i1],'+',a[i2]);
readln
end.



2



uses crt;
var a:array[1..100] of integer;
    n,i,sum,max,i1,i2:integer;
begin
clrscr;
randomize;
write('n=');readln(n);
Writeln('Massiv:');
for i:=1 to n do
  begin
    a[i]:=random(20);
    write(a[i],' ');
  end;
writeln;
max:=a[1]+a[2];i1:=1;i2:=2;
for i:=2 to n do
  begin
   sum:=a[i]+a[i-1];
   if sum>max then
      begin
       max:=sum;
       i1:=i-1;
       i2:=i;
      end;
  end;
writeln('Maximalnaya summa=',max,'  elementy ',a[i1],'+',a[i2]);
readln
end.

На занятии будет рассмотрен двумерный массив в Pascal и примеры работы с ним. Кроме того, предстоит знакомство с понятиями побочная диагональ матрицы в Паскаль и главная диагональ

Содержание:

  • Двумерный массив в Pascal
  • Описание, ввод и вывод элементов двумерного массива
  • Главная и побочная диагональ при работе с двумерными матрицами в Pascal

Матрица или двумерный массив – это прямоугольная таблица чисел (или других элементов одного типа). Каждый элемент матрицы имеет два индекса (номер строки и номер столбца).

матрица

Исходные данные для решения многих задач можно представить в табличной форме:
двумерный массив Pascal
Таблица результатов производственной деятельности нескольких филиалов фирмы может быть представлена так:

zavod1: array [1..4] of integer;
zavod2: array [1..4] of integer; 
zavod3: array [1..4] of integer;

Или в виде двумерного массива так:

Объявление двумерного массива:

var A: array[1..3,1..4] of integer;
begin
{...}
begin
  var  a := new integer[3,4];
  {...}
end.

Описание, ввод и вывод элементов двумерного массива

Варианты описания двумерного массива (традиционный pascal)

  1. Описание массива в разделе переменных:
  2. const N = 3;
          M = 4;
    var A: array[1..N,1..M] of integer;
  3. Описание массива через раздел type:
  4. const
      M=10;
      N=5;
    type
      matrix=array [1..M, 1..N] of integer;
    var A: matrix;

Ввод двумерного массива m x n с клавиатуры:

ввод двумерного массива

for i:=1 to N do
  for j:=1 to M do begin
    write('A[',i,',',j,']=');
    read ( A[i,j] );
  end;

for var i:=0 to a.RowCount-1 do
  for var j:=0 to a.ColCount-1 do
     a[i,j]:=readinteger;

Заполнение случайными числами:

заполнение случайными числами


var a := MatrRandomInteger(3,4,0,10); // целые числа в диапазоне от 0 до 10
var a1 := MatrRandomReal(3,4,1,9) // веществ. числа в диапазоне от 1 до 9

«Красивый» вывод элементов двумерного массива m x n:

Следующий фрагмент программы выводит на экран значения элементов массива по строкам:
вывод двумерного массива

1
2
3
4
5
for i:=1 to N do begin
  for j:=1 to M do
     write ( A[i,j]:5 );
  writeln;
end;

1
2
3
4
5
6
begin
  var a := MatrRandomInteger(3,4,0,10);
  var a1 := MatrRandomReal(3,4,1,9);
  a.Println;
  a1.Println(6,1) // 6 позиций всего на вывод, 1 знак после десят. запятой
end.

Результат:

   8   2   1   3
   5   8   0   8
   6   3   9   3
   3.3   4.7   3.7   5.4
   2.9   1.7   2.3   4.0
   8.3   3.7   8.4   1.4

Рассмотрим следующую задачу: Получены значения температуры воздуха за 4 дня с трех метеостанций, расположенных в разных регионах страны:

Номер станции 1-й день 2-й день 3-й день 4-й день
1 -8 -14 -19 -18
2 25 28 26 20
3 11 18 20 25

Т.е. запись показаний в двумерном массиве выглядела бы так:

t[1,1]:=-8; t[1,2]:=-14; t[1,3]:=-19; t[1,4]:=-18;
t[2,1]:=25; t[2,2]:=28; t[2,3]:=26; t[2,4]:=20;
t[3,1]:=11; t[3,2]:=18; t[3,3]:=20; t[3,4]:=25;

Или в pascalabc.NET:

var t := Matr(3,4,-8,-14,-19,-18,25,28,26,20,11,18,20,25);  
t.Println;

Объявление двумерного массива:

var t: array [1..3, 1..4] of integer;

Задание array 1: Необходимо:

  1. Распечатать температуру на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день.
  2. Распечатать показания термометров всех метеостанций за 2-й день.
  3. Определить среднюю температуру на 3-й метеостанции.
  4. Распечатать, в какие дни и на каких метеостанциях температура была в диапазоне 24-26 градусов тепла.

Дополните код:

Показать решение:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var t: array [1..3, 1..4] of integer;
s,i,j:integer;
begin
t[1,1]:=-8; 	t[1,2]:=-14; 	t[1,3]:=-19; 	t[1,4]:=-18;
t[2,1]:=25; 	t[2,2]:=28; 	t[2,3]:=26; 	t[2,4]:=20;
t[3,1]:=11; 	t[3,2]:=18; 	t[3,3]:=20; 	t[3,4]:=25;
{1. Распечатать показания термометров на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день}
writeln('1-е задание: ',t[2,4] , ' и ',t[...,...]);
 
{2. Показания термометров всех метеостанций за 2-й день}
for i:=1 to ... do 
   writeln ('2-е задание: ',t[...,...]);
 
{3. Определим среднее значение температуры на 3-й метеостанции:}
i:=3;
s:=0;
for j:=1 to 4 do 
   s:=...; {сумматор}
writeln('3-е задание: ', s/4);
{распечатаем всю таблицу}
for i:=1 to 3 do
    for j:=1 to 4 do
        writeln(t[i,j]);
{4. Распечатаем станции и дни с температурой 24-26 гр}
writeln('4-е задание: ');
for i:=1 to 3 do
    for ... ... do
        if (...) and (...) then
           writeln('станция ', i, ' день ', j)
end.

Самостоятельно подумайте, как находится сумма элементов массива pascal.

Задание array 2. Найти сумму элементов массива (прямоугольной таблицы) размером [m x n]

Задание array 4.
Найти сумму всех элементов массива (переменная sum) 5 x 4, а также сумму элементов, составляющих столбцы таблицы (двумерного массива). Для хранения сумм столбцов чисел использовать одномерный массив (s). Дополните код.
двумерный массив в pascal

Показать решение:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const  m = 5;
       n = 4;
var
    a: array[1..m,1..n] of byte;
    s: array[1..n] of byte;
    i,j, sum: byte;
begin
    randomize;
    for i := 1 to m do begin
        for j := 1 to n do begin
            ... {инициализация элементов массива случайными числами}
            ... {вывод элементов массива}
        end;
        writeln
    end;
    writeln ('------------'); {для оформления}
    {обнуление значений массива суммы s[]:}
    ...
    {поиск сумм элементов по столбцам:}
    for i := 1 to n do begin
         for j := 1 to m do begin
           s[i]:=...;
        end;
     write(...)  ; 
    end;
    {поиск общей суммы:}
    sum:=0;
    ...
    {вычисление суммы элементов массива значений сумм по столбцам:}
    for ...
        ...
    write (' | sum = ', sum);
readln
end.

Задание array 4_1.
Найти сумму элементов двумерного массива [m x n] по строкам:

2 8 1 9  : sum = 20
3 1 7 2  : sum = 13
4 5 6 2  : sum = 17

Методы матриц для работы со строками и столбцами:

begin
  var a := MatrRandomInteger(3,4);  
  a.Println;
 
  a.Row(0).Sum.Println();
  a.Row(1).Average.Println;
  a.Row(2).Product.Println;
 
  a.Col(0).Min.Println;
  a.Col(1).Max.Println;
end.

Результат:

  86  62  80  33
  51   4  36  65
  78  30   5  16
261 
39 
187200 
51 
62 

Главная и побочная диагональ при работе с двумерными матрицами в Pascal

Главная диагональ квадратной матрицы n x n (т.е. той, у которой количество строк равно количеству столбцов) проходит с верхнего левого угла матрицы (элемент 1,1) до правого нижнего угла матрицы (элемент n,n).

Побочная диагональ квадратной матрицы n x n проходит с нижнего левого угла матрицы (элемент n,1) до правого верхнего угла матрицы (элемент 1,n).

Формулу поиска элементов диагоналей проще всего искать, нарисовав элементы матрицы:
Если индексы начинаются с единицы (традиционный Паскаль):

1,1 1,2 1,3 1,4
2,1 2,2 2,3 2,4
3,1 3,2 3,3 3,4
4,1 4,2 4,3 4,4

Если индексы начинаются с нуля (pascalAbc.NET):

0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1 2,2 2,3
3,0 3,1 3,2 3,3

 
Учитывая, что первая цифра в программе будет соответствовать счетчику i, а вторая — счетчику j, то из таблицы можно вывести формулы:

Главная диагональ матрицы в Паскаль имеет формулу:
i=j
Побочная диагональ матрицы в Паскале традиционном имеет формулу:
n=i+j-1 (или j=n-i+1)

где n — размерность квадратной матрицы

Побочная диагональ матрицы в pascalAbc.Net имеет формулу:
n=i+j+1

где n — размерность квадратной матрицы

Пример: Вывести на экран сначала главную диагональ квадратной матрицы из N строк и N столбцов, а затем ее побочную диагональ.

Решение:
Вывод элементов главной диагонали
Вывод элементов побочной диагонали

Пример: Заменить элементы главной и побочной диагонали квадратной матрицы нулями

Показать решение:

Паскаль:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var i,j,n:integer;
a: array[1..100,1..100]of integer;
begin
   randomize;
   writeln ('введите размерность матрицы:');
   readln(n);
   for i:=1 to n do begin
        for j:=1 to n do  begin
            a[i,j]:=random(10);
            write(a[i,j]:3);
        end;
        writeln;
   end;
   writeln;
   for i:=1 to n do begin
        for j:=1 to n do  begin
            if (i=j) or (n=i+j-1) then a[i,j]:=0;
            write(a[i,j]:3)
        end;
        writeln;
   end;
end.

PascalAbc.Net

1
2
3
4
5
6
7
8
9
10
11
12
begin
  var n := readinteger('введите размерность матрицы:');
  var a := matrRandomInteger(n, n, -10, 10);
  a.Println(6);
  for var i := 0 to n - 1 do
  begin
    a[i, i] := 0;
    a[i, n - i - 1] := 0;
  end;
  writeln();
  a.Println(6);
end.

Задание array 5:
Найти отдельно сумму элементов главной и побочной диагонали квадратной матрицы

1 7 3 7
2 1 8 3
5 7 6 4
8 2 3 1
-------
sum1 = 9
sum2 = 30

Пример:
Дана матрица 5х5. Найти сумму элементов, стоящих на двух соседних диагоналях с главной и параллельных ей.
побочная диагональ матрицы паскаль и главная
Для решения задачи воспользуйтесь таблицей

Показать решение:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var
A:array[1..5,1..5] of integer;
i,j:integer;
sum,sum1,sum2:integer;
begin
randomize;
for i:=1 to 5 do
for j:=1 to 5 do
    A[i,j]:=random(10);
write ('Исходный массив A: ');
for i:=1 to 5 do begin
    writeln;
    for j:=1 to 5 do
        write (A[i,j]:2,' ');
    end;
sum1:=0;
for i:=1 to 5 do
    for j:=1 to 5 do
        if (i-j=1) then
            sum1:=sum1+A[i,j];
sum2:=0;
for i:=1 to 5 do
    for j:=1 to 5 do
        if (j-i=1) then
           sum2:=sum2+A[i,j];
sum:=sum1+sum2;
writeln;
writeln('Сумма = ',sum);
end.

Задание array 6: Сформировать матрицу размерностью n. Вывести ее на экран. Затем преобразовать ее, заменив необходимые элементы на 0:
главная и побочная диагональ матрицы паскаль

Задание array 7: Сформировать матрицу размерностью n. Вывести ее на экран. Затем преобразовать ее, заменив необходимые элементы на 0:
главная и побочная диагональ матрицы паскальдиагонали матрицы Паскаль

Задание array 8: Сформировать матрицу размерностью n. Вывести ее на экран. Затем преобразовать ее, заменив необходимые элементы на 0:
диагонали матрицы Паскаль
главная и побочная диагональ матрицы паскаль

Задание array 9: Составить программу, позволяющую с помощью датчика случайных чисел сформировать матрицу размерностью N. Определить:

  • минимальный элемент, лежащий ниже побочной диагонали;
  • произведение ненулевых элементов последней строки.
  • Рассмотрим еще один пример работы с двумерным массивом.

    Пример: В двумерном массиве размером N х M определить среднее значение элементов. Найти индекс элемента массива, наиболее близкого к среднему значению.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    var index1,index2,i,j,N,M:integer;
    s,min,f:real;
    a:array[1..300,1..300] of real;
    begin
    N:=10;
    M:=5;
    for i:=1 to N do begin
      for j:=1 to M do begin
        a[i,j]:=random(20);
        s:=s+a[i,j];
        write(a[i,j]:3);
       end;
       writeln;
    end;
     
    f:=s/(N*M);
    writeln('srednee znachenie ',f);
    min:=abs(a[1,1]-f);
    for i:=1 to N do begin
      for j:=1 to M do begin
        if abs(a[i,j]-f)<min then begin
          min:=abs(a[i,j]-f);
          index1:=i;
          index2:=j;
        end;
      end;
    end;
    writeln('naibolee blizkiy ',index1,' ',index2);
    end.

    Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

    проверь себя

    Дан массив, содержащий 70 неотрицательных целых чисел. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести наименьшую чётную сумму двух соседних элементов массива. Гарантируется, что в массиве есть соседние элементы с чётной суммой. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

    Паскаль Бейсик

    const N=70;

    var

    a: array [1..N] of integer;

    i, j, x, у: integer;

    begin

    for i: 1 to N do

    readln(a[i]);

    end.

    N=70

    DIM A(N) AS INTEGER

    DIM I, J, X, Y AS INTEGER

    FOR I=1 TO N

    INPUT A(I)

    NEXT I

    END

    Си++ Алгоритмический язык

    #include <iostream>

    using namespace std;

    #define N 70

    int main(){

    int a[N];

    int i, j , x, y;

    for (i = 0; i < N; i++)

    cin >> a[i];

    }

    алг

    нач

    цел N=70

    целтаб а[1:N]

    цел i, j, х, у

    нц для i от 1 до N

    ввод а[i]

    кц

    кон

    Python

    # допускается также

    # использовать три

    # целочисленные переменные j, x, y

    a = []

    n = 70

    for i in range(0, n):

    a.append(int(input()))

    В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.4) или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.

    Алгоритмы работы с массивами

    1) Сумма элементов массива.

    Program symma;

    var a: array [1..10] of integer;

    i, s : integer;

    begin

    s:=0;

    for i:=1 to 10 do

    begin

    readln(a[i]);

    s:=s+a[i];

    end;

    writeln (‘Сумма= ’,s);

    еnd.

    2) Сумма положительных чисел.

    Program symma2;

    var a: array [1..10] of integer;

    i, s : integer;

    begin

    s:=0;

    for i:=1 to 10 do

    begin

    readln(a[i]);

    if a[i]>0 then s:=s+a[i];

    end;

    writeln (‘Сумма положительных чисел = ’,s);

    еnd.

    3) Сумма и количество положительных чисел.

    Program symma-kol;

    var a: array [1..10] of integer;

    i, s,k : integer;

    begin

    s:=0; k:=0;

    for i:=1 to 10 do

    if a[i]>0 then begin k:=k+1; s:=s+a[i]; end;

    writeln (‘Сумма ’,s, ‘ количество’, k);

    еnd.

    4) Поиск заданного элемента в массиве.

    Найти элементы массива большие числа 5.

    Program elem;

    var a: array [1..10] of integer;

    i : integer;

    begin

    for i:=1 to 10 do

    if a[i]>5 then writeln(a[i]);

    еnd.

    5) Поиск наибольшего (наименьшего) элемента в массиве.

    Program mm;

    var a: array [1..10] of integer;

    i, max, min : integer;

    begin

    for i:=1 to 10 do readln(a[i]);

    max:=a[1]; min:=a[1];

    for i:=1 to 10 do

    begin

    if a[i]>max Then max:=a[i];

    if a[i]

    end;

    writeln (‘ max=’,max,’ min=’, min);

    еnd.

    6) Упорядочение массива

    Упорядочение (сортировка) — это расположение значений элементов массива в порядке возрастания или убывания их значений.

    Некоторые типичные действия с массивами:


    • вывод массива;

    • ввод массива;

    • поиск в массиве заданного элемента;

    • поиск в массиве минимального или максимального элемента;

    • сортировка массива.

    Вывод массива.

    Под выводом массива понимается вывод на экран значений элементов массива. если в программе необходимо вывести значения всех элементов массива, то для этого удобно использовать оператор цикла for, переменная – счетчик которой может быть использована как индекс элемента массива.

    var

    a: array [1..20] of integer;

    i, n: integer;

    begin

    clrscr;

    for i:=1 to n do

    writeln (a[i]); {вывод в столбик}

    либо write (a[i],’ ‘); {вывод в строчку}

    либо writeln (‘a[‘,i,’]=’,a[i]); {вывод с пояснениями}

    readln;

    end

    Задание:


    1. В массиве хранятся значения роста двадцати человек. С помощью датчика случайных чисел заполнить массив целыми значениями, лежащими в диапазоне от 50 до 100 включительно.

    2. Заполнить массив из двенадцати элементов следующим образом:


      1

      2



      12

    3. Заполнить массив из двадцати элементов следующим образом:

    20

    19



    1

    Ввод массива.

    Под вводом массива понимается ввод значений элементов массива. Как и вывод массива, ввод удобно реализовать с помощью оператора цикла for. Чтобы пользователь программы знал, ввода какого элемента массива ожидает программа, следует организовать вывод подсказок перед вводом очередного элемента массива. В подсказке обычно указывают индекс элемента массива.

    var

    a: array [1..20] of integer;

    i, n: integer;

    begin

    clrscr;

    writeln (’Введите количество элементов массива’); readln (n);

    for i:=1 to n do begin

    write (‘a[‘,i,’]=’);

    readln (a[i]);

    end;

    Пример: Найти сумму элементов массива.

    var

    a: array [1..20] of integer;

    i, n, s: integer;

    begin

    clrscr;

    s:=0;

    writeln (’Введите количество элементов массива’); readln (n);

    for i:=1 to n do begin

    write (‘a[‘,i,’]=’);

    readln (a[i]);

    s:=s+a[i];

    end;

    writeln (‘Сумма элементов массива=’,s);

    readln;

    end.

    Задание:


    1. Заполнить массив:

    а) десятью первыми членами арифметической прогрессии с известным первым членом прогрессии a и ее разностью p;

    б) двадцатью первыми членами геометрической прогрессии с известным первым членом прогрессии a и ее знаменателем z.


    1. Дан массив. Все его элементы:

    а) уменьшить на 20;

    б) умножить на последний элемент;

    в) увеличить на число b.


    1. Определить:

    а) сумму всех элементов массива;

    б) произведение всех элементов массива;

    в) сумму квадратов всех элементов массива;

    г) сумму шести первых элементов массива;

    д) сумму элементов массива с k1-го по k2-й (значения k1 и k2 вводятся с клавиатуры; k2>k1);

    е) среднее арифметическое всех элементов массива;

    ж) среднее арифметическое элементов массива с s1-го по s2-й (значения s1 и s2 вводятся с клавиатуры; s2>s1).


    1. Дан массив. Напечатать:

    а) все неотрицательные элементы;

    б) все элементы, не превышающие числа 100.


    1. Дан массив целых чисел. Напечатать:

    а) все четные элементы;

    б) все элементы, оканчивающиеся нулем.


    1. Дан массив натуральных чисел. Напечатать:

    а) все элементы массива, являющиеся двузначными числами;

    б) все элементы массива, являющиеся трехзначными числами.


    1. Дан массив. Напечатать:

    а) второй, четвертый и т.д. элементы;

    б) третий, шестой и т.д. элементы.

    Поиск в массиве.

    При решении многих задач возникает необходимость установить, содержит ли массив определенную информацию или нет. Например, определить есть ли в массиве нулевые элементы. Задачи такого типа называются поиском в массиве.

    Для организации поиска в массиве могут быть использованы различные алгоритмы. Наиболее простой – это алгоритм простого перебора. Поиск осуществляется последовательным сравнением элементов массива с образцом.

    Например:


    • Определить сколько раз в массиве встречается число а.

    var

    b: array [1..20] of integer;

    i, n, k, a: integer;

    begin

    clrscr;

    k:=0;

    writeln (‘Введите искомое число’); readln (a);

    writeln (’Введите количество элементов массива’); readln (n);

    for i:=1 to n do begin

    write (‘b[‘,i,’]=’);

    readln (b[i]);

    if b[i]=a then inc(k);

    end;

    writeln (‘Количество элементов равных ’,a,’ в массиве ’,k);

    readln;

    end.

    Задачи:


    1. Выяснить, верно ли, что сумма элементов массива есть неотрицательное число.

    2. Дан массив целых чисел. Выяснить:

    а) верно ли, что сумма элементов массива есть четное число;

    б) верно ли, что сумма квадратов элементов массива есть пятизначное число.


    1. Определить количество положительных и количество отрицательных элементов массива.

    2. Дан массив. Найти:

    а) сумму элементов массива, значение которых не превышает 20;

    б) сумму элементов массива, больших числа a.


    1. Дан массив целых чисел. Найти:

    а) сумму нечетных элементов;

    б) сумму элементов, кратных заданному числу;

    в) сумму элементов массива, кратных a или b.


    1. Определить сумму второго, четвертого, шестого и т.д. элементов массива.

    2. Определить частное от деления суммы положительных элементов массива на модуль суммы отрицательных элементов.

    3. Дан массив целых чисел. Определить количество четных элементов и количество элементов, оканчивающихся на цифру 5.

    4. Определить количество элементов массива, принадлежащих промежутку от a до b (значения a и b вводятся с клавиатуры; b>a).

    5. Найти число пар »соседних» элементов массива, являющихся четными числами.

    6. Найти число пар »соседних» элементов массива, оканчивающихся нулем.

    7. Найти число элементов массива, которые больше своих »соседей», т.е. предшествующего и последующего.

    8. Найти среднее арифметическое элементов массива, больших числа 10.

    9. Найти средние арифметические положительных и отрицательных элементов массива.

    10. Дан массив вещественных чисел.

    а) Каждый отрицательный элемент заменить на его абсолютную величину.

    б) Все элементы с нечетными номерами заменить на их квадратный корень.

    в) Из всех положительных элементов вычесть элемент с номером k1, из остальных — элемент с номером k2.

    г) Все элементы с нечетными номерами увеличить на 1, с четными — уменьшить на 1.

    д) Из всех положительных элементов вычесть элемент с номером k1, из всех отрицательных — число n. Нулевые элементы оставить без изменения.

    е) Ко всем нулевым элементам прибавить n, из всех положительных элементов вычесть a, ко всем отрицательным прибавить b.


    1. Дан массив вещественных чисел.

    а) Каждый элемент, больший 10, заменить на его квадратный корень.

    б) Все элементы массива с четными номерами заменить на их абсолютную величину.

    в) Ко всем отрицательным элементам прибавить элемент с номером m1, к остальным — элемент с номером m2.

    г) Все элементы с четными номерами удвоить, с нечетными — уменьшить на 1.

    д) Ко всем отрицательным элементам прибавить элемент с номером a1, из всех нулевых вычесть число b. Положительные элементы оставить без изменения.

    е) Из всех положительных элементов вычесть a, из всех отрицательных вычесть b. Ко всем нулевым элементам прибавить c.


    1. Дан массив целых чисел.

    а) Все элементы, оканчивающиеся цифрой 4, уменьшить вдвое.

    б) Все четные элементы заменить на их квадраты, а нечетные удвоить.

    в) Четные элементы увеличить на a, а из элементов с четными номерами вычесть b.


    1. Дан массив целых чисел.

    а) Все элементы, кратные числу 10, заменить нулем.

    б) Все нечетные элементы удвоить, а четные уменьшить вдвое.

    в) Нечетные элементы уменьшить на m, а элементы с нечетными номерами увеличить на n.

    Самостоятельная работа на ввод и вывод массива.

    Поиск в массиве минимального или максимального элемента.

    Алгоритм поиска минимального (максимального) элемента массива довольно очевиден: делается предположение, что первый элемент массива является минимальным (максимальным), затем остальные элементы массива сравниваются с этим элементом. Если обнаруживается, что проверяемый элемент меньше (больше) принятого за минимальный (максимальный), то этот элемент принимается за минимальный (максимальный) и продолжается проверка остальных элементов.

    Найти минимальный элемент массива и его индекс.

    var

    a: array [1..20] of integer;

    i, n, k, min, nmin: integer;

    begin

    clrscr;

    writeln (’Введите количество элементов массива’); readln (n);

    for i:=1 to n do begin

    write (‘a[‘,i,’]=’);

    readln (a[i]);

    end;

    min:=a[1]; nmin:=1;

    for i:=2 to n do

    if min>b[i] then begin

    min:=b[i];

    nmin:=i;

    end;

    writeln (‘Минимальный элемент массива ’, min, ‘ его индекс ’, nmin);

    readln;

    end.

    Задачи:


    1. Дан массив. Определить:

    а) максимальный элемент;

    б) минимальный элемент;

    в) на сколько максимальный элемент больше минимального;

    г) индекс максимального элемента;

    д) индекс минимального и индекс максимального элементов.


    1. Дан массив. Определить:

    а) количество максимальных элементов в массиве;

    б) количество минимальных элементов в массиве.


    1. Изменить знак у максимального по модулю элемента массива. Минимальный элемент массива при этом не определять.

    2. Дан массив. Найти количество элементов, значение которых больше среднего арифметического минимального и максимального элементов массива, и напечатать их номера.

    3. Найти элемент, наиболее близкий к среднему значению всех элементов массива.

    4. Дан массив. Скопировать все его элементы в другой массив такого же размера:

    а) в том же порядке расположения элементов;

    б) в обратном порядке расположения элементов.


    1. Дан массив. Переписать его второй, четвертый и т.д. элементы в другой массив такого же размера:

    а) расположив элементы на тех же местах, что и в исходном массиве;

    б) расположив элементы подряд с начала массива.


    1. Из элементов массива A сформировать массив B того же размера по правилу: если номер i элемента массива A четный, то Bi = Ai2, в противном случае Bi = 2·Ai.

    2. Из элементов массива A, заполненного целыми числами, сформировать массив B того же размера по правилу: четные элементы массива A удвоить, нечетные оставить без изменения.

    3. Даны два массива одного размера. Получить третий массив, каждый элемент которого равен:

    а) сумме элементов с одинаковыми номерами в заданных массивах;

    б) произведению элементов с одинаковыми номерами в заданных массивах;

    в) максимальному из элементов с одинаковыми номерами в заданных массивах.


    1. Даны два массива одного размера, в которых нет нулевых элементов. Получить третий массив, каждый элемент которого равен 1, если элементы заданных массивов с тем же номером имеют одинаковый знак, и равен нулю в противном случае.

    2. Дан массив целых чисел.

    а) Напечатать все элементы, предшествующие первому элементу с заданным значением n. Если элементов, равных n, в массиве нет, то должны быть напечатаны все элементы.

    б) Напечатать все элементы, следующие за последним элементом, оканчивающимся цифрой «7». Если элементов, оканчивающихся цифрой «7», в массиве нет, то ни один элемент не должен быть напечатан.


    1. Найти количество различных элементов в массиве.

    2. Дано натуральное число n. Определить количество различных цифр в нем. Например, в числе 1234 количество различных цифр равно 4, в числе 22424 — 2, в числе 333 — 1.

    3. Дан массив целых чисел. Найти:

    а) номер первого нечетного элемента. Если нечетных элементов в массиве нет, то должно быть напечатано соответствующее сообщение;

    б) номер первого элемента, кратного числу 13. Если нечетных элементов в массиве нет, то должно быть напечатано соответствующее сообщение;


    1. Дан массив вещественных чисел. Определить, есть ли в нем отрицательные числа. В случае положительного ответа:

    а) определить номер первого из них и напечатать все следующие за ним элементы;

    б) определить номер последнего из них напечатать все элементы, расположенные слева от него.

    Самостоятельная работа на поиск в массиве.

    Обмены и перестановки. Для перестановки элементов вводят вспомогательную переменную, которой присваивают значение первого элемента, после чего первому элементу присваивают значение второго элемента, а второму – значение вспомогательной переменной.

    Задачи:


    1. Дан массив. Поменять местами:

    а) второй и пятый элементы;

    б) m-й и n-й элементы;

    в) третий и максимальный элементы. Если элементов с максимальным значением несколько, то в обмене должен участвовать первый из них;

    г) первый и минимальный элементы. Если элементов с минимальным значением несколько, то в обмене должен участвовать последний из них.


    1. Дан массив из четного числа элементов. Поменять местами:

    а) его половины;

    б) первый элемент со вторым, третий — с четвертым и т.д.;

    в) его половины следующим способом: первый элемент поменять с последним, второй — с предпоследним и т.д.


    1. Дан одномерный массив из 20 элементов. Переставить первые три и последние три элемента, сохранить порядок их следования.

    2. Поменять местами первый отрицательный и последний положительный элементы массива. Учесть возможность того, что отрицательных или положительных элементов в массиве может не быть.

    В задачах под удалением элемента массива следует понимать:

    1) исключение этого элемента из массива путем смещения всех следующих за ним элементов влево на 1 позицию;

    2) присваивание последнему элементу массива значения 0.


    1. Удалить из массива:

    а) третий элемент; б) k-й элемент.


    1. Удалить из массива, в котором все элементы различны:

    а) максимальный элемент; б) минимальный элемент.


    1. Удалить из массива:

    а) первый отрицательный элемент (если отрицательные элементы в массиве есть);

    б) удалить последний четный элемент (если четные элементы в массиве есть).


    1. Удалить из массива:

    а) все отрицательные элементы;

    б) все элементы, большие данного числа n;

    в) все элементы, начиная с n1-го по n2-й (n1n2).


    1. Дан массив целых чисел. Удалить из него:

    а) все четные элементы, стоящие на нечетных местах;

    б) все элементы, кратные 3 и 5.


    1. Удалить из массива все повторяющиеся элементы, оставив их первые вхождения, то есть в массиве должны остаться только различные элементы.

    В задачах под вставкой числа n в массив после k-го элемента следует понимать:

    1) увеличение размера массива на 1;

    2) смещение всех элементов, начиная с (k+1)-го, вправо на 1 позицию;

    3) присваивание (k+1)-му элементу массива значения n.


    1. Вставить в массив:

    а) число 10 после второго элемента; б) число 100 после m-го элемента.


    1. Вставить заданное число в массив целых чисел:

    а) после первого отрицательного элемента;

    б) перед последним четным элементом.


    1. Вставить заданное число в массив целых чисел:

    а) перед всеми элементами, кратными числу a;

    б) после всех отрицательных элементов.

    Контрольная работа на массивы.

    8 класс.

    Сортировка массива.

    Под сортировкой массива подразумевается процесс перестановки элементов с целью упорядочивания их в соответствии с каким-либо критерием. Например, если имеется массив а — целых чисел, то после сортировки по возрастанию должно выполняться условие: a[1]a[2] …a[n], где n – верхняя граница индекса массива.

    Существует много методов сортировки массивов. Но наиболее часто используемые это:


    • метод прямого выбора (метод главного элемента);

    • метод прямого обмена(метод пузырька).

    Метод главного элемента.

    Алгоритм сортировки массива по возрастанию методом прямого выбора или методом главного элемента может быть представлен так:


    1. Просматривая массив от первого элемента, найти минимальный и поместить на место первого элемента, а первый на место минимального.

    2. просматривая массив от второго элемента, найти минимальный и поместить его на место второго элемента, а второй на место минимального.

    3. И так далее до предпоследнего элемента.

    Ниже представлена программа сортировки массива целых чисел по возрастанию.

    program vosr;

    uses crt;

    var a: array [1..15] of integer;

    i, j, k, n, m, c: integer;

    begin

    clrscr;

    writeln (‘’); readln (n);

    for i:=1 to n do begin

    write (i,’:’); readln (a[i]);

    end;

    for i:=1 to n-1 do begin

    k:=i;

    for j:=i+1 to n do

    if a[j]

    c:=a[i];

    a[i]:=a[k];

    a[k]:=c;

    end;

    for i:=1 to n do

    writeln (a[i]);

    readln;

    end.

    Метод прямого обмена (метод пузырька).

    В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого сравнивается со следующим и если он больше следующего, то элементы меняются местами. Таким образом, элементы с наименьшим значением продвигаются к началу массива (всплывают), а элементы с большим значением – к концу массива (тонут), поэтому его и называют методом пузырька. Этот процесс повторяется на единицу меньше раз чем элементов в массиве, либо возможно другой способ реализации этого метода, повторяется до тех пор пока находятся соседние элементы, такие что элемент стоящий правее оказывается меньше элемента стоящего левее.

    program vosr;

    uses crt;

    var a: array [1..15] of integer;

    i, j, k, n, m, c, f: integer;

    begin

    clrscr;

    writeln (‘’); readln (n);

    for i:=1 to n do begin

    write (i,’:’); readln (a[i]);

    end;

    for i:=1 to n-1 do begin

    for j:=1 to n-1 do

    if a[j]>a[j+1] then begin

    c:=a[j];

    a[j]:=a[j+1];

    a[j+1]:=c;

    end;

    end;

    for i:=1 to n do

    writeln (a[i]);

    readln;

    end.

    program vosr;

    uses crt;

    var a: array [1..15] of integer;

    i, j, k, n, m, c, f: integer;

    begin

    clrscr;

    writeln (‘’); readln (n);

    for i:=1 to n do begin

    write (i,’:’); readln (a[i]);

    end;

    k:=n-1;

    repeat

    f:=0;

    for i:=1 to k do

    if a[i]>a[i+1] then begin

    f:=1;

    c:=a[i];

    a[i]:=a[i+1];

    a[i+1]:=c;

    end;

    dec(k);

    until f=0;

    for i:=1 to n do

    writeln (a[i]);

    readln;

    end.

    6) Упорядочение массива

    Упорядочение (сортировка) — это расположение значений элементов массива в порядке возрастания или убывания их значений.

    Сортировка простым выбором.

    Рассмотрим идею этого метода на примере. Пусть исходный массив А состоит из 10 элементов : 5 13 7 9 1 8 16 4 10 2.

    После сортировки массив : 1 2 4 5 7 8 9 10 13 16

    Максимальный элемент текущей части массива заключен в кружок, а элемент, с которым происходит обмен, в квадратик. Скобкой помечена рассматриваемая часть массива.

    5 13 7 9 1 8 16 4 10 2



    5 13 7 9 1 8 2 4 10 16

    1 шаг Рассмотрим весь массив и найдем в нем максимальный элемент — 16. Поменяем его местами с последним элементом — с числом 2.

    2 шаг. Рассмотрим часть массива, исключая последний элемент. Максимальный элемент этой части — 13, он стоит на втором месте. Поменяем его местами с последним элементом этой части — с числом 10.

    И т.д.

    Фрагмент программы :

    for i:=n downto 2 do

    begin {цикл по длине рассматриваемой части массива}

    maxi:=i;

    for j:=1 to i-1 do if a[j]>a[maxi] then maxi:=j;

    if maxi<>i then begin {перестановка элементов}

    k:=a[i]; a[i]:=a[maxi]; a[maxi]:=k

    end;

    end;

    «Пузырьковый метод»

    Массив просматривают слева направо. Каждый предыдущий элемент сравнивается с последующим. Если предыдущий элемент больше последующего, то предыдущий и последующий элементы меняются местами.

    Program sort1;

    const n=10;

    label metka;

    var a: array [1..n] of integer;

    i, c, k : integer;

    begin

    for i:=1 to n do readln(a[i]);

    metka: k=0; {счетчик перестанокок}

    for i:=1 to n-1 do

    if a[i]>a[i+1] then begin c:=a[i];

    a[i]:=a[i+1];

    a[i+1]:=c;

    k:=1;

    end;

    if k=1 then goto metka

    else writeln(‘упорядочен‘);

    for i:=1 to n do writeln(a[i]);

    еnd.

    Тоже самое, но с использованием вложенных циклов

    Program sort2;

    const n=10;

    var a: array [1..n] of integer;

    i, k, c : integer;

    begin

    for i:=1 to n do readln(a[i]);

    for i:=1 to n-1 do

    for k:=1 to n-i do

    if a[k]>a[k+1] then begin c:=a[k];

    a[k]:=a[k+1];

    a[k+1]:=c;

    end;

    for i:=1 to n do writeln(a[i]);

    еnd.

    Двухмерные массивы.

    Описание двумерного массива определяет имя, размер массива (количество строк и столбцов) и базо­вый тип. Формат описания в разделе переменных:

    Var <имя маcсива > : array [<тип индекса1> , <тип индекса2>] of <базовый тип>;

    Двумерный массив — массив, у которого положение каждого элемента характеризуется двумя числами, первое из них определяет номер строки, второе – номер столбца, на пересечении которых находится элемент. Он так же, как и одномерный массив, состоит из значений одного типа. В двумерных массивах хра­нятся значения прямоугольных таблиц. Примеры описания двумерных массивов:

    Var С : array [1. .5, 1. .10] of real;

    R1, R2: array [0. .10, 1. .365] of char;

    Sim : array [1. .20, 1. .10] of string[20];

    Const M=10; N=20;

    Var X, S : array [1. .M, 1. .N] of byte;

    1. Организация данных в виде массивов помогает нам решать многие задачи. Вот еще одна: разработать программу, обслуживающую шахматный турнир.

    В одиночных соревнованиях каждый участник имеет один результат, поэтому данные о результатах соревнований удобно хранить в знакомых нам массивах. Игровой турнир предполагает встречи участников друг с другом, при этом каждый участник имеет столько результатов, со сколькими соперниками он встречался.

    Обычно результаты турниров заносятся в турнирные таблицы. Средством обработки таких таблиц в языках программирования служат двумерные массивы.

    2. Описание двумерного массива в языке паскаль записывается так:

    <Имя_массива> : array[

    ..,..] of [<тип>]

    где строки таблицы имеют номера с n1 по n2, а столбцы — с k1 по k2. Запись <Имя_массива>[n,k] указывает на элемент, стоящий на пересечении n-й строки и k-го столбца. Например, описание

    Tab : array[1..10,1..15] of Integer

    задает таблицу из 10 строк и 15 столбцов (всего 10 х 15 = 150 элементов), состоящую из целых чисел. Tab[3,5] указывает на 5-й элемент в 3-й строке.

    Турнирную таблицу для N участников удобно хранить в двумерном массиве N x N типа Real, т.к. результатом шахматной партии для каждого участника может быть победа (1 очко),

    поражение (0 очков) или ничья (0.5 очка). Вот описание таблицы:

    Tab : array[1..N,1..N] of Real .

    3. Для простоты не будем пока рассматривать фамилии участников, а будем различать их по номерам. Вводить результаты встреч будем в таком виде: номер первого участника, номер второго участника, результат первого участника (количество очков). Понятно, что одна встреча приводит к заполнению сразу двух элементов таблицы. Так будет выглядеть фрагмент программы, предназначенный для ввода результата одной встречи:

    writeln(‘Введите номера участников встречи’);

    readln(n1,n2);

    writeln(‘Сколько очков у участника ‘,n1,’ ?’);

    readln(Tab[n1,n2]);

    Tab[n2,n1] := 1-Tab[n1,n2];

    4. Эти действия нужно повторять столько раз, сколько встреч состоится в турнире. Если все запланированные встречи состоятся, то их количество можно сосчитать по формуле n(n-1) — подумайте, почему. Однако, может случиться, что по каким-то причинам часть встреч не состоится, а какие-то будут сыграны дважды. Поэтому удобнее как-то обозначить окончание ввода данных в программе, например, после каждой встречи выяснять, будут ли еще вводиться данные. Вот фрагмент программы, предназначенный для ввода результатов всех встреч турнира:

    kon := ‘Д’;

    while kon <> ‘Н’ do

    begin

    writeln(‘Введите номера участников встречи’);

    readln(n1,n2);

    writeln(‘Сколько очков у участника ‘,n1,’ ?’);

    readln(Tab[n1,n2]);

    Tab[n2,n1] := 1-Tab[n1,n2];

    writeln(‘Будут ли еще встречи ? (Д/Н)’);

    readln(kon);

    end;

    5. По окончании турнира нужно вывести турнирную таблицу на экран:

    for i := 1 to N do

    begin

    for k := 1 to N do

    write(Tab[i,k]:3:1);

    writeln;

    end;

    1. Бывают задачи, в которых данные удобно хранить в виде трехмерного (и даже четырех- и более -мерного) массива. Например, результат встречи в футбольном турнире представляет собой не одно, а три числа — количество забитых и пропущенных мячей и количество очков (2 — победа, 0 — поражение, 1 — ничья). Такую таблицу удобно заносить в массив

    Football : array[1..N,1..N,1..3] of Integer;

    Элемент Football[3,5,2] содержит информацию о количестве мячей, пропущенных 3-й командой в матче с 5-й командой.

    Поразмышляйте самостоятельно над процедурой ввода результатов футбольного турнира.

    Работа с элементами

    В математике часто используют многомерные массивы (двумерные, трехмерные и т.д.). Мы рассмотрим двумерные массивы, иначе называемые матрицами.

    Например : 5 4 3 6

    2 8 1 7

    4 3 9 5

    Данная матрица имеет размер 3 на 4, т.е. она состоит из трех строк и четырех столбцов. Если всю матрицу обозначить одним именем, например А, то каждый элемент матрицы будет иметь два индекса — А[i,j]

    Здесь первый индекс i обозначает номер строки (i=1,2,3), второй индекс j — номер столбца (j=1,2,3,4).

    Такую матрицу можно описать следующим образом :

    1 способ :С использованием типа

    Type T=array [1..3,1..4] of integer;

    Var A: T;

    2 способ :

    Var A: array [1..3,1..4] of integer;

    При решении задач с использованием двумерных массивов во всех случаях (кроме некоторых частных) организуются вложенный циклы.

    Перемещение по строке :

    for i:=1 to m do {внешний цикл, изменяется номер строки}

    …….

    for j:=1 to n do {внутренний цикл, изменяется номер столбца}

    ……….

    Перемещение по столбцу

    :

    for j:=1 to n do {внешний цикл, изменяется номер столбца}

    …….

    for i:=1 to m do {внутренний цикл, изменяется номер строки}

    Перечислим базовые алгоритмы и рассмотрим каждый из них.

    1. Заполнение двумерного массива :

    а) по строке; б) по столбцу

    2. Печать в виде таблицы.

    3. Вычисление суммы элементов каждой строки и каждого столбца.

    4. Поиск максимального (минимального) элементов каждой строки (столбца) и их индексов.

    5. Сумма элементов массива.

    6. Максимальный (минимальный) элемент массива.

    Ввод (заполнение) элементов двумерного массива (матрицы)

    For i:=1 to n do

    For j:=1 to m do

    Readln(A[i,j]);

    1. Заполнение двумерного массива по строке.

    Массив содержит 3 строки и 4 столбца, т.е. 3х4=12 элементов


    а11

    а12

    а13

    а14

    а21

    .

    .

    .

    .

    .

    .

    .

    F or i:=1 to 3 do

    For j:=1 to 4 do

    a[i,j]:=random(100);

    2. Заполнение двумерного массива по столбцу :


    а11

    а12

    .

    .

    а21

    .

    .

    .

    а31

    .

    .

    .

    F or j:=1 to 4 do

    For i:=1 to 3 do

    a[i,j]:=random(100);

    3. Печать содержимого на экран :

    For i:=1 to n do

    begin

    For j:=1 to m do

    Write (A[i,j]); {Вывод элементов одной

    строки матрицы}

    Writeln; { переход на следующую строку экрана}

    end;

    где

    А — имя массива;

    i — индекс строки;

    j — индекс столбца;

    n — количество элементов в строке;

    m — количество элементов в столбце.

    4. Вычисление суммы элементов каждой строки, столбца.

    Дана квадратная матрица NxN, содержащая вещественные числа. Найти сумму элементов первого столбца.

    Program pr2;

    CONST N=3;

    TYPE MAS=array [1..N,1..N] of real;

    Var a: MAS;

    i: 1..3;

    j : 1..3;

    s:real;

    BEGIN

    Writeln(‘Введите элементы массива’);

    For i:=1 to n do

    For j:=1 to n do

    Readln(a[i,j]);

    {Вывод значений массива}

    For i:=1 to n do

    begin

    For j:=1 to n do

    Write (a[i,j]:5:1);

    Writeln;

    end;

    s:=0; j=1;

    For i:=1 to n do

    s:=s+a[i,j];

    Writeln(‘Сумма элементов первого столбца = ’,s:5:2);

    end.

    5.Вычисление суммы элементов всего двумерного массива.

    ……

    S:=0;

    for i:=1 to m do

    for j:=0 to n do

    S:=S+a[i,j];

    ………….

    6. Задача поиска максимального (минимального) элемента и его индексов.

    Ищем максимальный элемент каждой строки :

    For i:=0 to m do

    begin

    max:=a[i,1];

    ind_L:=i; {сохраняем номер строки}

    ind_C:=1; {заносим номер 1 — первый столбец}

    for j:=1 to n do

    if a[i,j]>max then begin

    max:=a[i,j];

    ind_C:=j {сохраняем номер j-ого столбца}

    end;

    writeln(‘max строки ’,i,’=’,max)

    end;

    Ищем минимальный элемент каждого столбца :

    For j:=0 to n do { перемещаемся по столбцу}

    begin

    min:=a[1,j];

    ind_L:=1; {сохраняем номер строки}

    ind_C:=j; {сохраняем номер столбца}

    for i:=1 to m do

    if a[i,j]

    min:=a[i,j];

    ind_L:=i {сохраняем номер j-ой строки}

    end;

    writeln(‘min ‘,j,’ столбца’,min)

    end;

    7. Алгоритм поиска минимального элемента и его индексов для всего массива.

    Min:=a[1,1];

    ind_L:=1;

    ind_C:=1;

    for i:=1 to m do

    for j:=1 to n do

    if a[i,j]

    min:=a[i,j]; ind_L:=i; ind_C:=j;

    end;

    8. Квадратные матрицы.

    Type mas4x4=array[1..4,1..4] of integer;

    var a: mas4x4;


    a11

    a12

    a13

    a14

    a21

    a22

    a23

    a24

    a31

    a32

    a33

    a34

    a41

    a42

    a43

    a44

    Главная диагональ —

    элементы a11, a22, a33, a44 (индексы элементов, расположенных на главной диагонали (i=j)

    Побочная диагональ

    — элементы a41, a32, a23, a14 (сумма индексов элементов на 1 больше размерности строки (или столбца), т.е. i+j=4=1 или i+j=n+1. На рисунке главная диагональ закрашена сплошным серым цветом, побочная — черным.



    a12

    a13

    a14

    a23

    a24

    a34

    Элементы, расположенные над главной диагональю, Для индексов элементов, расположенных над главной диагональю выполняется отношение i<j;



    a21

    a31

    a32

    a41

    a42

    a43

    Элементы, расположенные под главной диагональю, Для индексов элементов, расположенных под главной диагональю выполняется отношение i>j;

    Примеры :

    1) Найти сумму элементов главной диагонали:

    S:=0;

    for i:=1 to n do

    S:=S+a[i,i];

    2) Найти минимальный элемент побочной диагонали:

    min:=a[1,n];

    for i:=1 to n do

    if a[i,n+1-i]

    Примеры решения задач

    Задача 1. Дан массив действительных чисел, состоящий из 3 строк и 5 столбцов. Вычислить произведение всех элементов массива.

    Program pr1;

    CONST N=3; M=5;

    TYPE MAS=array [1..N,1..M] of real;

    Var b: MAS;

    i: 1..N;

    j : 1..M;

    p:real;

    BEGIN

    Writeln(‘Введите элементы массива’);

    For i:=1 to n do

    For j:=1 to m do

    Readln(b[i,j]);

    {Вывод значений массива}

    For i:=1 to n do

    begin

    For j:=1 to m do

    Write (b[i,j]); {Вывод элементов одной строки матрицы}

    Writeln; { переход на следующую строку экрана}

    end;

    p:=1;

    For i:=1 to n do

    For j:=1 to m do

    p:=p*b[i,j];

    Writeln(‘Произведение = ’,p:7:2);

    end.

    Задача 2. Дан двумерный массив A[N,M]

    Сформировать массив B[N,M], где

    SQR(A[I.J]), если I- НЕЧЕТНОЕ;

    B[I,J] =

    SQRТ(A[I.J]), если I- ЧЕТНОЕ;

    Program pr3;

    CONST N=3; M=5;

    TYPE MAS=array [1..N,1..M] of real;

    Var a,b : MAS;

    i: 1..N;

    j : 1..M;

    BEGIN

    Writeln(‘Введите элементы массива’);

    For i:=1 to N do

    For j:=1 to M do

    Readln(a[i,j]);

    {Вывод значений массива}

    For i:=1 to N do

    begin

    For j:=1 to M do

    Write (a[i,j]:5:1);

    Writeln;

    end;

    For i:=1 to N do

    if i/2= int(i/2) Then For j:=1 to M do

    b[i,j]:=sqrt (a[i,j])

    Else For j:=1 to M do

    b[i,j]:=sqr (a[i,j])

    For i:=1 to N do

    begin

    For j:=1 to M do

    Write (b[i,j]:7:2);

    Writeln;

    end;

    end.

    1. Дан двухмерный массив целых чисел. Составить программу :

    а) вывода на экран элемента, расположенного в правом верхнем углу массива;

    б) вывода на экран элемента, расположенного в левом нижнем углу массива;

    в) вывода на экран любого элемента второй строки массива;

    г) вывода на экран любого элемента третьего столбца массива;

    д) вывода на экран любого элемента массива.


    1. Дан двухмерный вещественный массив. Поменять местами :

    а) элементы, расположенные в верхнем правом и нижнем левом углах;

    б) элементы, расположенные в нижнем правом и верхнем левом углах;


    1. Известен номер строки, на которой расположен элемент главной диагонали двумерного массива целых чисел. Вывести на экран значение этого элемента.

    2. Вывести на экран (в одну строку) :

    а) все элементы главной диагонали целочисленного массива, начиная с элемента, расположенного в левом верхнем углу;

    б) все элементы главной диагонали вещественного массива, начиная с элемента, расположенного в правом нижнем углу.


    1. Заменить значения всех элементов главной диагонали целочисленного массива на нулевые.

    2. Заменить значения всех элементов побочной диагонали целочисленного массива на значения, равные 100.

    3. Определить :

    а) сумму элементов главной диагонали вещественного массива;

    б) сумму элементов побочной диагонали целочисленного массива;

    в) среднее арифметическое элементов главной диагонали массива целых чисел;

    г) среднее арифметическое элементов побочной диагонали вещественного массива;

    д) минимальный (максимальный) элемент главной диагонали целого массива;

    е) максимальный (минимальный) элемент побочной диагонали вещественного массива;

    ж) координаты первого максимального элемента главной диагонали вещественного массива;

    з) координаты первого минимального элемента главной диагонали целочисленного массива.


    1. Верно ли, что сумма элементов главной диагонали целочисленного массива не превышает 100?

    2. Дан двухмерный массив вещественных чисел .

    а) вывести на экран все элементы пятой строки массива;

    б) вывести на экран все элементы третьей строки массива, начиная с по следнего элемента этой строки;

    в) вывести на экран все элементы s-го столбца массива;

    г) заменить значения всех элементов второй строки массива на число 5;

    д) заменить значения всех элементов пятого столбца на число 10.

    е) определить максимальный (минимальный) элемент третьего столбца;


    1. Дан двухмерный целых чисел массив. Составить программу :

    а) расчета произведения двух любых элементов любой строки массива

    б) сумму всех элементов любой строки массива;


    1. Дан двумерный массив целых чисел. Определить :

    а) в каком столбце массива сумма элементов меньше, в первом или в последнем;

    б) в какой строке произведение элементов больше, во второй или в третьей.


    1. Заполнить двумерный массив размером 7х7 следующим образом :

    а)

    1

    0

    0

    0

    0

    0

    1

    б)

    1

    0

    0

    1

    0

    0

    1

    0

    1

    0

    0

    0

    1

    0

    0

    1

    0

    1

    0

    1

    0

    0

    0

    1

    0

    1

    0

    0

    0

    0

    1

    1

    1

    0

    0

    0

    0

    0

    1

    0

    0

    0

    1

    1

    1

    1

    1

    1

    1

    0

    0

    1

    0

    1

    0

    0

    0

    0

    1

    1

    1

    0

    0

    0

    1

    0

    0

    0

    1

    0

    0

    1

    0

    1

    0

    1

    0

    1

    0

    0

    0

    0

    0

    1

    1

    0

    0

    1

    0

    0

    1

    1. * Заполнить массив 5х5 следующим образом :

    а)

    1

    1

    1

    1

    1

    б)

    1

    2

    3

    4

    5

    1

    2

    3

    4

    5

    16

    17

    18

    19

    6

    1

    3

    6

    10

    15

    15

    24

    25

    20

    7

    1

    4

    10

    20

    35

    14

    23

    22

    21

    8

    1

    5

    15

    35

    70

    13

    12

    11

    10

    9

    1. *Заполнить двумерный массив размером nxn числами 1, 2, … n2, расположенным в нем по спирали : (см 9.13б)

    2. Дан двухмерный целочисленный массив размером 10 х 10. Вывести на экран часть массива :

    а) расположенную выше главной диагонали;

    б) расположенную ниже главной диагонали;

    в) расположенную выше побочной диагонали;

    г) расположенную ниже побочной диагонали;


    1. Дан двумерный массив целых чисел :

    а) в каждом его столбце найти максимальный (минимальный) элемент;

    б) координаты максимального (минимального) элемента;

    в) сумму нечетных элементов в каждом столбце (строке);

    г) количество элементов кратных А или В.

    д)* найти строку с максимальной суммой элементов;

    е)* найти столбец с минимальной суммой элементов.


    1. Даны два двумерных вещественных массива одинаковых размеров.

    а) создать третий массив такого же размера, каждый элемент которого равен сумме соответствующих элементов двух первых массивов.

    б) создать третий массив такого же размера, каждый элемент которого равен 100, если соответствующие элементы двух первых массивов имеют одинаковый знак, и равен нулю в противном случае.


    1. * Дан двухмерный массив размером nxn , заполненный целыми числами.

    а) все его элементы, кратные трем, записать в одномерный массив.

    б) все его положительные элементы записать в один одномерный массив, а остальные — в другой.


    1. Дан двухмерный массив целых чисел.

    а) сформировать одномерный массив, каждый элемент которого равен сумме четных положительных элементов соответствующего столбца двумерного массива.

    б) сформировать одномерный массив, каждый элемент которого равен количеству нечетных отрицательных элементов соответствующего столбца двумерного массива.

    в) сформировать одномерный массив, каждый элемент которого равен количеству отрицательных элементов соответствующей строке двухмерного массива, кратных 3 или 7.

    г) сформировать одномерный массив, каждый элемент которого равен количеству положительных элементов соответствующего столбца двухмерного массива, кратных 4 или 5.


    1. * Дан двумерный массив из четного числа столбцов. Поменять местами первый со вторым, третий — с четвертым и т.д.

    2. Дан двухмерный массив. а) удалить из него k-ую строку, s-ый столбец.

    Достарыңызбен бөлісу:

    Понравилась статья? Поделить с друзьями:
  • Как найти компанию по фамилии
  • Как найти деформацию в фотошопе
  • Как по фото найти где это место
  • Много перца в фарше как исправить
  • Как правильно составить предложение по немецки