Решим задачу за 30 минут!
Опубликуй вопрос и получи ответ со скидкой 20% по промокоду helpstat20

Уральская Государственная Горно-Геологическая Академия

Контрольная работа

Расчет массы фосфорита для получения заданной массы фосфора

Выполнил:

Белорусова Е.И.

Группа ОПИ-09

Проверила:

Соликамск 2013

Содержание

Постановка задачи

Создание математической модели

Введение переменных

Программирование

Описание основных элементов программы

Программа на языке Паскаль

Приложение

Постановка задачи

1. Рассчитать массу фосфорита, с массовой долей примесей 12%, необходимую для получения фосфора, массой: 200, 120, 150, 170, 230, 250, 140, 260, 270 кг.

2. Полученный массив отсортировать по возрастанию, вывести содержимое массива в табличном виде до и после сортировки.

3. Привести расчетную программу на языке программирования Паскаль.

Создание математической модели

фосфорит масса химический программирование

Составим уравнение реакции получения фосфора из фосфорита:

из 1 моли фосфорита получаем 2 моли фосфора. Найдем молярные массы фосфора и фосфорита:

M(P) = 31 кг/моль

М(Ca) = 40,

M(O) = 16.

M(Ca3(PO4)2) = M(Ca)*3+(M(P)+M(O)*4)*2 = 40*3+31*2+16*8 = 310 кг/моль

Найдем количество фосфора, соответствующее массе m(P) = 200 кг.

n(P) = m(P)/M(P) = 200/31 = 6.45;

,

n(Ca3(PO4)2)=x

Теперь, зная молярную массу фосфата и количество вещества, необходимого для реакции, найдем необходимую массу фосфорита:

m(Ca3(PO4)2)=M(Ca3(PO4)2)*n(Ca3(PO4)2)

При 12% примеси, чистый фосфат в фосфорите составит 88%, следовательно, чтобы найти, сколько для реакции требуется фосфорита, необходимо массу фосфата разделить на 88 и умножить на 100.

m(Фосфорит)= m(Ca3(PO4)2)/(1-0,12)

Введение переменных

Для решения данной задачи определим идентификаторы и типы переменных и констант.

Идентификатор

Тип / Значение

Пояснение

Константы

Mm_Ca

40

Атомная масса кальция

Mm_P

31

Атомная масса фосфора

Mm_O

16

Атомная масса кислорода

MDP

0,12

Коэффициент содержания примесей

nP0

2

Количество полученного фосфора в исходном уравнении реакции (в молях)

Переменные

m_P

Real

Масса фосфора

n_P

Real

Количество фосфора

m_Ca3PO42

Real

Масса фосфата

Mm_Ca3PO42

Real

Молярная масса фосфата

n_Ca3PO42

Real

Количество фосфата в молях

x_P[1..10]

Массив из Real

Исходный массив масс фосфора, который нужно получить

x_Ph[1..10]

Массив из Real

Массив масс фосфорита, необходимого для получения фосфора с заданной массой

i, j

Byte

Флаги циклов (используются в качестве индексов для элементов массивов)

Программирование

Описание основных элементов программы

Расчет масс фосфорита, необходимых для производства соответствующих масс фосфора производится в цикле, флаг цикла является индексом элементов массива. Расчеты производятся по приведенным выше формулам с учетом введенных идентификаторов.

Вывод на экран массивов оформлен в виде процедуры с циклом перебора номера строк. При организации вывода использованы только команды, входящие в состав стандартного паскаля (без использования библиотеки CRT).

Сортировка массива производится по алгоритму «пузырька»: находим минимальный элемент массива, ставим его на первое место. Из оставшихся элементов выбираем наименьший и ставим его на второе место… и так до предпоследнего элемента. Фактически перебор вариантов сравнений осуществляется двумя вложенными циклами, первый из которых, с флагом «i» перебирает искомые минимальные элементы (от 1 до предпоследнего), а второй цикл перебирает элементы, находящиеся «справа» от искомого «j» перебирает значения от i+1 до последнего. Каждый набор элементов массива сравнивается, если i-й элемент оказывается больше j-го, то их надо поменять местами. Обмен значениями производится через временную переменную m_P, которая должна быть того же типа, что и элементы массива, который мы сортируем. В нашем случае, чтобы не нарушать соответствие между массами фосфора и фосфорита, в момент, когда необходимо поменять значения элементов массива масс фосфорита местами, мы должны параллельно менять местами и соответствующие элементы массива масс фосфора.

Программа на языке Паскаль

Program task1;

Const Mm_Ca = 40;

Mm_P = 31;

Mm_O = 16;

MDP = 0.12;

nP0 = 2;

Var m_P, m_Ca3PO42, Mm_Ca3PO42 : Real;

n_P, n_Ca3PO42 : Real;

x_P : Array [1..10] of real;

x_Ph : Array [1..10] of real;

i,j : Byte;

Procedure Report;

Var i : byte;

Begin

Writeln;

Writeln(‘————————–‘);

Writeln(‘ No | m(P) | m(Ca3(PO4)2) ‘);

Writeln(‘————————–‘);

For i := 1 To 10 Do Begin

Writeln(‘ ‘,i:2,’ | ‘,x_P[i]:4,’ | ‘,x_Ph[i]);

End;

Writeln(‘————————–‘);

End;

Begin

x_P[1] := 200;

x_P[2] := 100;

x_P[3] := 120;

x_P[4] := 150;

x_P[5] := 170;

x_P[6] := 230;

x_P[7] := 250;

x_P[8] := 140;

x_P[9] := 260;

x_P[10] := 270;

Mm_Ca3PO42 := Mm_Ca*3+Mm_P*2+Mm_O*4*2;

For i := 1 To 10 Do Begin

n_P := x_P[i] / Mm_P;

n_Ca3PO42 := n_P / nP0;

m_Ca3PO42 := Mm_Ca3PO42 * n_Ca3PO42;

x_Ph[i] := m_Ca3PO42 / (1-MDP);

End;

Report;

For i:=1 To 9 Do

For j:=i+1 to 10 Do

If x_Ph[i] > x_Ph[j] Then Begin

m_P := x_P[i];

x_P[i] := x_P[j];

x_P[j] := m_P;

m_P := x_Ph[i];

x_Ph[i] := x_Ph[j];

x_Ph[j] := m_p;

End;

Report;

End.

Приложение

Таблица результатов выполнения программы на контрольном примере и соответствующий график.

Масса Фосфора

n(P)

n(Ph)

m(Ph)

Масса фосфорита

Отсортированный

1

200

6,452

3,226

1000

1136,4

568,2

2

100

3,226

1,613

500

568,2

681,8

3

120

3,871

1,935

600

681,8

795,5

4

150

4,839

2,419

750

852,3

852,3

5

170

5,484

2,742

850

965,9

965,9

6

230

7,419

3,71

1150

1306,8

1136,4

7

250

8,065

4,032

1250

1420,5

1306,8

8

140

4,516

2,258

700

795,5

1420,5

9

260

8,387

4,194

1300

1477,3

1477,3

10

270

8,71

4,355

1350

1534,1

1534,1

Ca

40

Ca3PO42

310

P

31

O

16

MDP

0,12

nP0

2

4.97
katyfoxy
рекламист + фриланс. Работаю за границей, поэтому английский на высшем уровне. Также компетентна в области маркетинга, психологии, имиджелогии, конфликтологии, менеджмента, экономики, филологии, информатики и это далеко не все:)