Файл: вычислить массу молекулы вещества, заданного химической формулой - Free Pascal
Формулировка задачи:
h2o.out
H2O18
C3H5NO3NO3NO3227
Помогите пожалуйста! Вот, что есть у меня
- Program copy_primer;
- Var f1,f2:text;
- i,sum, H,N,C,O,E,z: integer;
- S: string;
- Begin
- Assign(f1, 'h2o.in');
- Reset(f1);
- Assign(f2, 'h2o.out');
- Rewrite(f2);
- While not eof(f1) do
- Begin
- Readln(f1,s);
- For i:=1 to Length(s) do
- if (s[i]='H') then
- H:=1;
- if (s[i]='N') then
- N:=14;
- if (s[i]='C') then
- C:=12;
- if (s[i]='O') then
- O:=16;
- Writeln(f2,sum);
- End;
- Close(f1); Close(f2);
- End.
Решение задачи: «Файл: вычислить массу молекулы вещества, заданного химической формулой»
- var
- s: String;
- i, m, e, n: Integer;
- begin
- Assign(input,'h2o.in'); Assign(output,'h2o.out');
- Reset(input); Rewrite(output);
- ReadLn(s); s:=s+' '; m:=0; e:=0; n:=0;
- for i:=1 to Length(s) do
- if s[i] in ['H','C','N','O',' '] then begin
- if n=0 then n:=1;
- m:=m+e*n; n:=0;
- case s[i] of
- 'H': e:=1;
- 'C': e:=12;
- 'N': e:=14;
- 'O': e:=16;
- else e:=0;
- end;
- end else if s[i] in ['0'..'9'] then
- n:=n*10+Ord(s[i])-Ord('0');
- WriteLn(m);
- end.
Объяснение кода листинга программы
В данном коде на языке Free Pascal выполняется задача по вычислению массы молекулы вещества, заданного химической формулой. При этом предполагается, что ввод данных осуществляется из файла с именем h2o.in
, а вывод результатов производится в файл с именем h2o.out
.
Код считывает строку из файла в переменную s
. Затем происходит обработка этой строки. Если символ является одним из ['H','C','N','O'], то в зависимости от этого значения увеличивается переменная m
. При этом, если символ является первым символом в строке (т.е. n
равно 0), то n
устанавливается равным 1.
Далее, в зависимости от значения символа, переменной e
присваивается значение 1, 12, 14 или 16. Если символ не является ни одним из указанных, то e
устанавливается равным 0.
Если символ является числом от 0 до 9, то значение переменной n
умножается на 10 и увеличивается на значение символа минус значение символа '0' (т.е. от 0 до 9).
В конце программа выводит значение переменной m
в файл h2o.out
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д