Нахождение элементов массива, удовлетворяющих определенному условию



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

Для решения поставленной задачи может быть использована следующая программа:

program Sessia;

type PR=array [1..5,1..2]of integer;

   Fam=array[1..5]of string[10];

var r:pr;

st:fam;

i,j:integer;

begin

for i:=1 to 5 do

begin

writeln('Введите фамилию ',i,'-го студента ');

readln(st[i]);

writeln('Введите оценку данного студента по химии (от 2 до 5)');

readln(r[i,1]);

writeln('Введите оценку данного студента по информатике (от 2 до 5)');

readln(r[i,2]);

end;

for i:=1 to 5 do

if (r[i,1]=5) and (r[i,2]=5) then writeln('Студент-отличник - ',st[i]);

end.

 

В данной программе для хранения фамилий студентов используется одномерный строковый массив st типа Fam, для хранения оценок студентов – двумерный целочисленный массив r типа PR, причем первый столбец матрицы r используется для хранения результатов экзамена по химии, второй столбец – экзамена по информатике. Если у некоторого студента оценки за оба экзамена составили 5 баллов, то его фамилия будет выведена на экран с сообщением «Студент-отличник».

 

Нахождение сумм элементов строк матрицы

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

Пусть задана таблица результатов игр 5 команд футбольного чемпионата размера 5х5. На диагонали таблицы стоят значения 0, другие элементы таблицы равны 0, 1 или 2, где 0 баллов соответствует проигрышу команды в игре, 1 балл – ничьей, 2 балла – выигрышу. Определить сумму баллов каждой команды по результатам чемпионата.

Легко заметить, что для построения матрицы R результатов игр достаточно ввести лишь стоящую выше (или ниже) главной диагонали половину матрицы, т.к. результаты остальных игр могут быть рассчитаны из известного соотношения: если, например, первая команда обыграла вторую, то элемент R[1,2]=2, а элемент R[2,1]=2-R[1,2]=0; аналогично, если вторая команда сыграла в ничью с третьей, то R[2,3]=1, R[3,2]=2-R[2,3]=1. Таким образом, нетрудно получить вид взаимосвязи элементов матрицы: R[i,j]+R[j,i]=2, где i и j меняются от 1 до 5 (кроме элементов главной диагонали). На главной диагонали матрицы R по условию задачи всегда стоят числа 0.

Перейдем к написанию программы решения поставленной задачи.

Program foot;

Type tab=array[1..5,1..5] of integer;

Var r:tab;

  i,j,s:integer;

begin

{ввод стоящих выше диагонали элементов матрицы}

for i:=1 to 4 do

for j:=i+1 to 5 do

begin

writeln (‘Введите результат игры ‘,i,’–й команды с ’,j,’ –й: 0, 1 или 2 балла’);

readln(r[i,j]);

end;

{заполнение стоящих на диагонали элементов нулями}

for i:=1 to 5 do r[i,i]:=0;

{вычисление стоящих ниже диагонали элементов матрицы}

for i:=2 to 5 do

for j:=1 to i-1 do r[i,j]:=2-r[j,i];

{вывод на экран матрицы результатов игр}

writeln(‘Таблица чемпионата’);

for i:=1 to 5 do

begin

for j:=1 to 5 do write(r[i,j]:4);

writeln;

end;

{вычисление сумм элементов строк матрицы}

for i:=1 to 5 do

begin

s:=0;

for j:=1 to 5 do s:=s+r[i,j];

writeln(i,‘-ая команда набрала ’,s:3,’ очков’);

end;

end.

Методические рекомендации к выполнению работы

6.1 При выполнении задания воспользоваться алгоритмами решения стандартных задач по теме «Одномерные массивы», изложенными в п.5.3.1-5.3.4.

6.2 Провести численные расчеты для вектора (4, 7, -9, 5, 1, -5, 10, 7). Проанализировать правильность полученных результатов.

6.3 При решении задачи воспользоваться примерами программ в п.5.5.1-5.5.3 и алгоритмами п.5.3.1-5.3.4.

Пример вывода на экран двумерного массива в виде матрицы размерности 3х4 приводится в следующем фрагменте программы:

….

for i:=1 to 3 do

begin

for j:=1 to 4 do write(а[i,j]:5);

writeln;

end;

6.4 Провести вычисления для матрицы

 1 2 3

А=  -5 8 –10

       -5 6 -3

.

Проанализировать полученные результаты.

Контрольные вопросы

7.1 Что понимают под массивом данных?

7.2 Что называют размерностью массива?

7.3 Что понимают под индексом элемента массива?

7.4 Какой массив называется одномерным?

7.5 Приведите примеры одномерных массивов.

7.6 Как описываются одномерные массивы на языке PASCAL?

7.7 Как задается диапазон изменения индексов массива?

7.8 Как обозначаются индексы массивов на языке PASCAL?

7.9 Какие стандартные алгоритмы по работе с одномерными массивами Вы знаете?

7.10 Поясните понятия двумерного массива, матрицы.

7.11 Что обозначают индексы матрицы?

7.12 Сколько элементов в матрице из 7 строк и 9 столбцов?

7.13 Дайте понятие квадратной матрицы, диагоналей квадратной матрицы.

7.14 Приведите пример описания двумерных массивов на языке PASCAL.

7.15 Поясните порядок использования вложенных циклов при вводе элементов двумерного массива.

Приложение А


Дата добавления: 2018-09-22; просмотров: 380; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!