Использование современной компьютерной техники и программного обеспечения для решения прикладных задач в области обогащения полезных ископаемых, страница 9

4.2.  Файловый ввод-вывод данных.

Исходные данные необходимо вводить из файла. Это осуществляется следующим путём (см. табл. 5):

Таблица 5.

Оператор

Описание

OPEN «Ish.inp» FOR INPUT AS #1

Открытие файла для ввода данных

FOR i = 0 TO 4

Начало цикла с известным числом повторений

        INPUT #1, alfa(I)

Ввод значений содержания полезного компонента

NEXT i

Конец цикла

CLOSE

Закрытие файла

Вывод данных осуществляется на экран, а так же в файл (см. табл. 6).

Таблица 6.

Оператор

Описание

OPEN "Rez.out" FOR OUTPUT AS #1

Открытие файла для вывода

PRINT #1, "Матрица А    Столбец B"

Вывод заголовка

FOR i = 1 TO n

Начало цикла по i

    FOR j = 1 TO n

Начало цикла по j

        PRINT #1,USING "##.###"; a(i,j);

Вывод a(i, j)

    NEXT j

Конец цикла по j

    PRINT

Вывод разделителя

    PRINT #1, USING "##.###"; b(i)

Вывод b(i)

NEXT i

Конец цикла по i

Так как у нас в программе используется  ввод данных из файла, то перед написанием программы создаем файл, содержащий исходные данные. Назовём этот файл Ish.inp и сохраним его в том же каталоге, где будет далее находиться программа (сделаем это для того, чтобы при вызове файла на открытие не прописывать полный путь к файлу, тем самым, обеспечивая мобильность данной программы).

Файл Ish.inp будет выглядеть так, как на рисунке 8.

0.224 0.046 0.374 0.324 0.874

Рис. 8. Содержимое файла Ish.inp.

4.3.  Соответствие между блок-схемой и программой.

Программа, обеспечивающая выполнение алгоритма полностью соответствует приведенным выше пунктам блок-схеме.


4.4.  Программный код.

Программа, обеспечивающая выполнение выше указанного алгоритма, представлена на рисунке 9.

'Румянцув А. В. Группа ОП-01

'Курсовая работа по информатике. Вариант 16.

'Задача 2. Долевые выходы продуктов на примере двух стадиальной схемы обогащения.

'Исходные данные:

'       a() - массив, содержащий коэффициенты при неизвестных

'       b() - массив, содержащий столбец свободных членов

'       alfa() - массив, содержащий заданные содержания полезного компонента

'Результаты:

'       x() - массив, содержащий расчетные долевые выходы продуктов

'Объявление подпрограммы

DECLARE SUB gauss (a() AS SINGLE, b() AS SINGLE, n AS INTEGER, x() AS SINGLE)

'Описание переменных

DIM alfa(5) AS SINGLE, a(4, 4) AS SINGLE, b(4) AS SINGLE, x(4) AS SINGLE

DIM i AS INTEGER, k AS INTEGER, n AS INTEGER, n1 AS INTEGER, m AS INTEGER

DIM j AS INTEGER, j1 AS INTEGER, s AS SINGLE

CLS

n = 4          'Порядок матрицы

'Ввод заданных содержаний полезного компонента

OPEN "Ish.inp" FOR INPUT AS #1

FOR i = 0 TO n

       INPUT #1, alfa(i)

NEXT i

CLOSE #1

'Формирование массивов содержащих коэффициенты при неизвестных

'и свободные члены системы линейных алгебраических уравнений

a(1, 1) = 1: a(1, 2) = 0: a(1, 3) = 1: a(1, 4) = 1: b(1) = 1

a(2, 1) = 1: a(2, 2) = 1: a(2, 3) = 0: a(2, 4) = 0: b(2) = 1

a(3, 1) = alfa(1): a(3, 2) = 0: a(3, 3) = alfa(3): a(3, 4) = alfa(4): b(3) = alfa(0)

a(4, 1) = alfa(1): a(4, 2) = alfa(2): a(4, 3) = 0: a(4, 4) = 0: b(4) = alfa(0)

'Вывод исходной расширенной матрицы

OPEN "Rez.out" FOR OUTPUT AS #1

PRINT "    Матрица коэффициентов   Столбец свободных членов"

PRINT #1, "    Матрица коэффициентов   Столбец свободных членов"

FOR i = 1 TO n

        FOR j = 1 TO n

              PRINT USING " ##.###"; a(i, j);

              PRINT #1, USING " ##.###"; a(i, j);

 NEXT j

PRINT USING "          ##.###"; b(i)

PRINT #1, USING "          ##.###"; b(i)

NEXT i

'Вызов подпрограммы реализующей метод Гаусса

CALL gauss(a(), b(), n, x())

PRINT

'Вывод результатов

PRINT "   Долевые выходы продуктов (gamma):"

PRINT #1, "   Долевые выходы продуктов (gamma):"

FOR i = 1 TO n

PRINT USING "  ##.### "; x(i);

PRINT #1, USING "  ##.### "; x(i);

NEXT i

CLOSE #1

END