Найти удельные веса и названия всех полупроводников - PascalABC.NET
Формулировка задачи:
Собственно задача.
Сведения о веществе состоят из его названия, удельного веса и проводимости (проводник, полупроводник, изолятор).
Дан набор, состоящий из 100 таких сведений.
Найти:
а) удельные веса и названия всех полупроводников выбрать сведения о проводниках и упорядочить их по убыванию б) удельных весов.
Решение задачи: «Найти удельные веса и названия всех полупроводников»
textual
Листинг программы
type vid=(pr,pl,iz); vesh=record nz:string[15]; uv:real; pr:vid; end; prvd=record nz:string[15]; uv:real; end; const prv:array[0..2] of string[20]=('проводник','полупроводник','изолятор'); var f:file of vesh; a: array[1..100] of prvd; v:vesh; x:prvd; n,i,j,k:integer; begin assign(f,'veshestva'); rewrite(f); repeat write('Сведения о скольки веществах внести n=[2..100] n='); readln(n); until n in [2..100]; for i:=1 to n do begin writeln('Вещество ',i); write('Название: ');readln(v.nz); write('Удельный вес: ');readln(v.uv); repeat writeln('Выберите проводимость 0-проводник, 1-полупроводник, 2-изолятор'); readln(k); until k in [0..2]; v.pr:=vid(k); write(f,v); end; writeln('Полный список веществ'); writeln('-------------------------------------------'); writeln('| Название | Уд. вес | Проводимость |'); writeln('-------------------------------------------'); reset(f); while not eof(f) do begin read(f,v); write('| ',v.nz); for i:=1 to 15-length(v.nz) do write(' '); write('|',v.uv:8:2); write(' |',prv[ord(v.pr)]); for i:=1 to 14-length(prv[ord(v.pr)]) do write(' '); writeln('|'); end; writeln('-------------------------------------------'); writeln('Удельные веса и названия полупроводников'); writeln('----------------------------'); writeln('| Название | Уд. вес |'); writeln('----------------------------'); k:=0; reset(f); while not eof(f) do begin read(f,v); if v.pr=pl then begin k:=1; write('| ',v.nz); for i:=1 to 15-length(v.nz) do write(' '); write('|',v.uv:8:2); writeln(' |'); end; end; writeln('----------------------------'); if k=0 then writeln('Нет полупроводников'); reset(f); k:=0; while not eof(f) do begin read(f,v); if v.pr=pr then begin k:=k+1; a[k].nz:=v.nz; a[k].uv:=v.uv; end; end; close(f); if k=0 then write('Нет проводников') else begin for i:=1 to k-1 do for j:=i+1 to k do if a[i].uv<a[j].uv then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end; writeln('Проводники в порядке убывания удельных весов'); writeln('----------------------------'); writeln('| Название | Уд. вес |'); writeln('----------------------------'); for i:=1 to k do begin write('| ',a[i].nz); for j:=1 to 15-length(a[i].nz) do write(' '); write('|',a[i].uv:8:2); writeln(' |'); end; writeln('----------------------------'); end; end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д