Найти удельные веса и названия всех полупроводников - 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы