Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Паскаль.doc
Скачиваний:
127
Добавлен:
30.04.2015
Размер:
661.5 Кб
Скачать

Примеры решаемых задач

Пример 1. Составить программу, которая сформирует случайным образом массив из 20 целых чисел и:

  1. выведет его в одну строку на экране;

  2. выведет элементы массива, стоящие на четных местах и вычислит их сумму;

  3. вычислит количество нечетных элементов;

  4. упорядочит элементы массива по убыванию.

Программа:

Program М1;

Uses Crt;

Type Numbers = Array [1..20 ] Of Integer; {}

Var A : Numbers;

I, J, S, K , P : Integer;

Begin

Clrscr;

Randomize; { инициализируем датчик случайных чисел }

For I := 1 To 20 Do { заполняем массив А случайными числами от 0 до 99}

A [ I ] := Random (100);

{ Задача (а) }

Writeln ( ‘Получили массив:’ ); { выводим полученный массив на экран }

For I := 1 To 20 Do

Write ( A [ I ] : 3 );

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

{ Задача (б) }

Writeln ( ‘Элементы на четных местах: ’ );

S := 0; { Обнулили сумму }

For I := 1 To 20 Do

If I mod 2 = 0 { Если у элемента четный НОМЕР }

Then Begin

Write ( A [ I ] : 3 ); { то выводим его }

S := S + A [ I ] { и накапливаем сумму }

End;

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

Writeln (‘ Их сумма ’, S ); { выводим значение суммы }

{ Задача (в) }

K := 0; { Обнулили счетчик нечетных элементов в массиве }

For I := 1 To 20 Do

If A [ I ] mod 2 <> 0 { Если ЭЛЕМЕНТ нечетный }

Then K := K + 1; { то увеличиваем значение счетчика }

Writeln (‘ Количество нечетных элементов ’, К );

{ выводим значение счетчика }

{ Задача (г) }

{ Сортируем массив А по убыванию }

For I := 1 To 19 Do

For J := I + 1 To 20 Do

If A[ J ] > A[ I ] Then

Begin

P := A[ I ]; {меняем местами i-ый и j-ый элементы массива А}

A[ I ] := A[ J ]; { для этого используем переменную p }

A[ J ] := P

End;

Writeln ( ‘Получили массив:’ ); {выводим упорядоченный массив на экран}

For I := 1 To 20 Do

Write ( A [ I ] : 3 );

Readln

End.

Пример 2. Составить программу, которая сформирует случайным образом двумерный массив N x N целых чисел и:

  1. выведет его на экран в виде матрицы;

  2. выведет элементы массива, стоящие над главной диагональю;

  3. вычислит суму элементов, стоящих на побочной диагонали;

  4. вычислит суммы столбцов.

Пояснение:

Если элемент M [i , j] двумерного массива M размера n x n расположен на главной диагонали, то i = j (номер строки равен номеру столбца).

Если элемент M [i , j] двумерного массива M размера n x n расположен на побочной диагонали, то i + j = n + 1 (сумма его индексов равна n + 1).

Программа:

Program М2;

Uses Crt;

Type Numbers = Array [1..20, 1..20 ] Of Integer;

{ Тип - двумерный массив 20 х 20 }

Var A : Numbers;

N, I, J, S : Integer;

Begin

Clrscr;

Write (‘Введите количество строк и столбцов ’);

Readln( N );

Randomize; { инициализируем датчик случайных чисел }

For I := 1 To N Do { Организуем цикл по строкам }

For J := 1 T N Do { Организуем цикл по столбцам }

A [ I,J] := Random (100); { заполняем массив А случайными числами }

{ Задача (а) }

Writeln ( ‘Получили массив:’ ); { выводим массив на экран }

For I := 1 To N Do

Begin

For J := 1 To N Do

Write ( A [I , J] : 3 ); {выводим все элементы i-ой строки в одну строку на экране}

Writeln { переводим на экране курсор на следующую строку}

End;

{ Задача (б) }

Writeln ( ‘Элементы над главной диагональю:’ );

For I := 1 To N Do

Begin

For J := 1 To N Do

If J >= I { Eсли элемент на главной диагонали или над ней, }

Then Write ( A [I , J] : 3 ) { то выводим его}

Else Write(‘ ‘:3); { иначе выводим три пробела }

Writeln { переводим на экране курсор на следующую строку}

End;

{ Задача (в) }

S := 0;

For I := 1 To N Do

For J := 1 To N Do

If J + I = N + 1 { Eсли элемент на побочной диагонали }

Then S := S + A [I , J]; { то накапливаем сумму }

Writeln ( ‘Сумма элементов побочной диагонали ’, S );

{ Задача (г) }

For J := 1 To N Do { организуем цикл по столбцам }

Begin

S := 0; { обнуляем сумму для каждого столбца }

For I := 1 To N Do { цикл по строкам }

S := S + A [I , J]; { накапливаем сумму элементов столбца }

Writeln (‘ Сумма элементов ’, J, ‘ столбца ’, S) { выводим на экран значение суммы }

End;

Readln

End.