Ввод данных из таблицы в паскаль - Pascal ABC
Формулировка задачи:
Здравствуйте, нужна помощь, написать часть программы, которая заносит данные таблицы в память, либо брать данные из *.txt. Надеюсь объяснил правильно... Решение а) и б) не обязательно, додумаюсь сам, но был бы премного благодарен за полное решение.
Элемент Атомная масса Количество электронов Относительная электроотрицательность
Водород 1 1 2,1
Литий 6,9 3 0,97
Углерод 12 6 2,5
Азот 14 7 3,07
Кислород 16 8 3,5
Алюминий 27 13 1,47
Фосфор 31 15 2,1
Аргон 39,9 18 0
Спойлер
Решение задачи: «Ввод данных из таблицы в паскаль»
textual
Листинг программы
const
m = 100;
type
tab=record;
el: string;
a_m: real;
k_e: real;
o_e: real;
end;
var tab_m:array[1..m] of tab;
zap:tab;
tab_t:text;
n,i,j,me:integer;
k:char;
a:real;
begin
assign(tab_t,'tab.txt');reset(tab_t);
n:=0;
while not Eof(tab_t) do begin
inc(n);
k:=#0;
while k<>' ' do begin
read(tab_t,k);
tab_m[n].el:= tab_m[n].el+k;end;
readln(tab_t, tab_m[n].a_m, tab_m[n].k_e, tab_m[n].o_e);
end;
writeln('Введте атомную массу');
readln(a);
me:=1;
for i:=1 to n do begin
if tab_m[me].k_e < tab_m[i].k_e then
me:=i;
if tab_m[i].a_m = a then
writeln('Элемент с искомой атомной массой: ',tab_m[i].el);
end;
writeln('Элемент с максимальным колличеством электронов: ', tab_m[me].el);
for i:=1 to n-1 do
for j:=1 to n-i do begin
if tab_m[j].o_e>tab_m[j+1].o_e then begin
zap:=tab_m[j]; tab_m[j]:=tab_m[j+1]; tab_m[j+1]:=zap;
end;
end;
writeln('Итоговая таблица:');
for i:=1 to n do
writeln(tab_m[i].el:10, tab_m[i].a_m:6:2, tab_m[i].k_e:6:2, tab_m[i].o_e:6:2);
close(tab_t);
end.
Объяснение кода листинга программы
- В первой строке кода объявляются переменные m, tab, el, a_m, k_e, o_e, n, i, j, me, k, a, и определяется тип данных для переменной tab.
- Затем определяется переменная tab_m типа array[1..m] of tab, которая будет использоваться для хранения данных из таблицы.
- Далее, переменная zap типа tab инициализируется значением последней записи из файла.
- Переменная tab_t типа text инициализируется путем к файлу
tab.txt. - Затем, в цикле while считываются данные из файла до конца файла.
- Внутри цикла while считываются данные из файла до конца файла.
- Если значение переменной k меньше любого пробела, то значение переменной k добавляется к значению переменной el текущего элемента.
- После чтения данных из файла, переменные a_m, k_e и o_e инициализируются соответствующими значениями.
- Затем, в цикле for вычисляется максимальное количество электронов в таблице.
- В цикле for также происходит перераспределение элементов таблицы при необходимости.
- После этого выводится итоговая таблица с данными из таблицы.
- Конец программы.