КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
ЭВМ программа
Рассмотрим пример систематического составления алгоритма и программы для решения на ЭВМ достаточно сложной задачи обработки данных. Четвертая задача: Определить суммы элементов столбцов в матрице Anxm:
Приведем обобщенную постановку задачи и описание соответствующих общего метода решения и сценария диалога. Постановка задачиСценарий Дано: Матрица <N>´<M> (a11 … a1N) < a11> ... < a1N > (... ... ... ) - матрица Anxm ... ... ... (aMl … aMN) < aMl > … < aMN > Треб.: Суммы элементов: (S1 ..., SN) - суммы столбцов <S1> ... <SN> Где: Si = аi1 + ...+ аiM [i = (1… N)] При: N > 0, М > 0.
Метод вычисленийПредставление данных sk0 = 0 matr: ' матрица Anm: sk1 = ak1 + sk1-1 data 3, 4 [1 = (1 ... M)] data I, 2, 3, 4 Sk = SkN data 0, 1, 2, 3 [k = (1 ... N)] data 0, 0, 1, 2
В предлагаемой ниже программе для представления матриц используются операторыdata. В первом из этих операторов записаны размеры, а в каждом последующем операторе - строки матрицы: АлгоритмПрограмма алг «сумма строк матрицы» ' сумма строк матрицы нач cls чтение (п, т) . read n, m если п > 0 и т > 0 то if N > 0 and М > 0 then массив А[1:п,1:т] dim A (N,M) массив S[1:n] dim S(n) ввод-вывод_матрицы gosub vvod 'ввод-матрицы суммирование_строк gosub sum 'суммирование от k = 1 до п цикл for k= 1 to n выв (s[k]) ? s[k] кцикл next k все end if кон end
алг «суммирование строк» sum: 'суммирование строк нач ' нач от k = 1 до N цикл for k = 1 to n s[k] := 0 s[k] = 0 от l = 1 до М цикл for I = 1 to m s[k] := s[k] + A[k,l] s[k] = s[k] + a[k,l] кцикл next I кцикл next k кон return
алг «ввод-вывод_матрицы» vvod: 'ввод-вывод_матрицы нач ' нач вывод («Матрица», N, «х», М) ? «Матрица»; m; «х»; m от k = 1 до N цикл for k = 1 to n от I = 1 до М цикл for l = 1 to m чтение (A [k,l]) read A (k,l) вывод (A [k,l]) ? A (k,l) кцикл next 1 нов_строка ? кцикл next k кон return
|