- •Федеральное агенство по образованию российской федерации
- •1. Основные категории и понятия информатики
- •Предмет информатики как науки
- •1.2. Информация: структура, форма, измерение
- •2. Техническое и программное обеспечение пэвм
- •2.1. Структура аппаратных средств пэвм
- •2.2. Программное обеспечение пэвм
- •3. Основы алгоритмизации
- •Этапы разработки программ
- •3.2.Формы представления алгоритмов
- •Действие 1
- •Действие 2
- •Классификация и примеры алгоритмических структур
- •3.2.1. Алгоритм линейной структуры.
- •3.2.2. Алгоритм разветвляющейся структуры.
- •Да нет да да Рис 3.11
- •3.2.3. Алгоритмы циклической структуры.
- •4.2. Структура программы на языке Паскаль
- •4.3. Скалярные стандартные типы данных
- •4.4. Скалярные, пользовательские типы данных
- •5. Структурные типы данных
- •Массивы
- •5.3. Записи
- •5.4. Записи с вариантами
- •Множества
- •5.6.Файлы
- •6. Операции над данными скалярных типов. Выражения
- •7. Операторы языка Паскаль
- •7.1. Простые операторы
- •7.2. Структурные операторы
- •Оператор 2
- •8. Примеры программ на языке Паскаль
- •8.1. Пример 1. Арифметические выражения. Оператор присваивания
- •Пример 2. Условные операторы
- •Ввод чисел х, а
- •8.3. Пример 3. Программа обработки одномерного массива
- •8.4. Пример 4. Программа обработки двумерного массива
- •True False True False False
- •8.5. Пример 5. Программа обработки символьных строк
- •8.6. Пример 6. Программа обработки двумерного массива с вводом элементов матрицы из текстового файла
- •9.Разработка программ сложной структуры
- •9.1. Процедуры и функции
- •9.2. Область действия идентификаторов при использовании процедур и функций. Локальные и глобальные переменные
- •9.3. Передача данных в подпрограмму с помощью параметров. Формальные и фактические параметры
- •9.4. Использование процедур и функций
- •True False Рис. 9.4
- •9.5. Массивы – параметры процедур и функций
- •True False True False Рис. 9.7
- •True False True False True False Рис 9.9
- •9.6. Рекурсивные процедуры и функции
- •True False Рис. 9.10 True False
- •True False Рис. 9.12
- •9.7. Модули
- •10. Динамические структуры данных
- •Основные определения
- •10.2. Объявление и создание динамических структур данных. Указатели
- •Операции над указателями
- •Программа создания и обработки линейного списка
- •Приложение. Контрольные вопросы
- •Литература
8.4. Пример 4. Программа обработки двумерного массива
Задание 4. В двумерном массиве (матрице) определить номер строки, в которой находится максимальное количество положительных элементов. Если положительных элементов нет в массиве, вывести сообщение об этом.
Постановка задачи.
Исходные данные:
Число строк в матрице n<=10;
Число столбцов в матрице m<=10;
Двумерный массив (матрица) размером nxm, содержащий положительные и отрицательные значения.
Выходные данные:номер строки, в которой находится максимальное количество положительных элементов.
Аномалии:отсутствие положительных элементов в массиве.
Реакция на аномальную ситуацию – выдача сообщения.
Алгоритм.Подсчет числа положительных элементов в строках матрицы.
Исходные данные:
СКАЛЯР n<=10 - целое число;
СКАЛЯР m<=10 - целое число;
МАССИВ A[nxm] целого типа.
Выходные данные:
СКАЛЯР imax– целое число.
Промежуточные данные:
МАССИВ K[n] целого типа /* массив счетчиков количества положительных элементов в строках матрицы */
СКАЛЯР kmax– целое число /* максимальное количество положительных элементов */
СКАЛЯР i– целое число /* параметр цикла */
СКАЛЯР j– целое число /* параметр цикла */
Начало
Вывод(‘inputn<10’)
Ввод(n)
Вывод(‘inputm<10’)
Ввод(m)
ЦИКЛОТi:=1ДОn
ЦИКЛОТj:=1ДОm
Вывод(‘input A[i,j] ‘)
Ввод(A[i,j])
КОНЕЦ_ЦИКЛА
КОНЕЦ_ЦИКЛА
ЦИКЛ ОТi:=1ДОn
K[i]=0;
ЦИКЛ ОТj:=1ДОm
ЕСЛИ(A[i,j]>0) ТО
K[i]= K[i]+1
КОНЕЦ_ЕСЛИ
КОНЕЦ_ЦИКЛА
КОНЕЦ_ЦИКЛА
Kmax=K[1]
imax=1
ЦИКЛ ОТi:=1ДОn
ЕСЛИ (K[i]>Kmax)ТО
Kmax=K[i]
imax=i
КОНЕЦ_ЕСЛИ
КОНЕЦ_ЦИКЛА
ЕСЛИ (Kmax=0)ТО
Вывод(‘Not A[i,j]>0!’)
ИНАЧЕ
Вывод(‘imax= ‘,imax)
КОНЕЦ_ЕСЛИ
Конец
Блок-схема алгоритма.
Рис.
8.4
Блок-схема алгоритма ввода матрицы M размером n x m.
False
True
False
True
J=J+1
I=I+1 Рис.
8.5
Блок-схема алгоритма подсчета количества положительных элементов в каждой строке матрицы и запись счетчиков в массив K из n элементов.
K[I]= количествоA[I,J], таких чтоA[I,J]>0.
True False True False False
True Рис
8.6
Блок-схема алгоритма определения номера строки матрицы, содержащей максимальное количество положительных элементов .
True False False True
Рис
8.7
Программа на языке Паскаль.
Program Nomer_Row;
Var
A: array[1..10,1..10] of integer;
K: array[1..10] of integer;
i, j, n, m, kmax, imax: integer;
begin
write('input n<10 ');
readln(n);
write('input m<10 ');
readln(m);
for i:=1 to n do
for j:=1 to n do
read(A[i,j]);
for i:=1 to n do
begin
K[i]:=0;
for j:=1 to m do
if (A[i,j]>0) then
K[i]:= K[i]+1;
end;
kmax:=K[1];
imax:=1;
for i:=1 to n do
if (K[i]>kmax) then
begin
kmax:=K[i];
imax:=i;
end;
if kmax=0 then
writeln('Not A[i][j]>0 !')
else
writeln('imax= ',imax);
write('PRESS ANY KEY!');
readln;
end.
Результаты тестирования.
1. Исходные данные:
n=3
m=3
A=((-1,-2,-3), (-1,0,-3), (-5,-2,-8)
Результат- сообщение «notA[i,j]>0».
Результаты, выданные программой.
input n<10 3
input m<10 3
-1 -2 -3
-1 0 -3
-5 -2 -8
Not A[i][j]>0 !
PRESS ANY KEY!
2. Исходные данные:
n=3
m=3
A=((1,2,3), (1,0,-3), (-5,-2,-8)
Результат- сообщение «imax=1».
Результаты, выданные программой.
input n<10 3
input m<10 3
1 2 3
1 0 -3
-5 -2 -8
imax= 1
PRESS ANY KEY!