Найти удельные веса и названия всех полупроводников - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Собственно задача. Сведения о веществе состоят из его названия, удельного веса и проводимости (проводник, полупроводник, изолятор). Дан набор, состоящий из 100 таких сведений. Найти: а) удельные веса и названия всех полупроводников выбрать сведения о проводниках и упорядочить их по убыванию б) удельных весов.

Решение задачи: «Найти удельные веса и названия всех полупроводников»

textual
Листинг программы
  1. type vid=(pr,pl,iz);
  2.      vesh=record
  3.           nz:string[15];
  4.           uv:real;
  5.           pr:vid;
  6.           end;
  7.      prvd=record
  8.           nz:string[15];
  9.           uv:real;
  10.           end;
  11. const prv:array[0..2] of string[20]=('проводник','полупроводник','изолятор');          
  12. var f:file of vesh;
  13.     a: array[1..100] of prvd;
  14.     v:vesh;
  15.     x:prvd;
  16.     n,i,j,k:integer;
  17. begin
  18. assign(f,'veshestva');
  19. rewrite(f);
  20. repeat
  21. write('Сведения о скольки веществах внести n=[2..100] n=');
  22. readln(n);
  23. until n in [2..100];
  24. for i:=1 to n do
  25.  begin
  26.   writeln('Вещество ',i);
  27.   write('Название: ');readln(v.nz);
  28.   write('Удельный вес: ');readln(v.uv);
  29.   repeat
  30.   writeln('Выберите проводимость 0-проводник, 1-полупроводник, 2-изолятор');
  31.   readln(k);
  32.   until k in [0..2];
  33.   v.pr:=vid(k);
  34.   write(f,v);
  35.  end;
  36. writeln('Полный список веществ');
  37. writeln('-------------------------------------------');
  38. writeln('|    Название    | Уд. вес | Проводимость |');
  39. writeln('-------------------------------------------');
  40. reset(f);
  41. while not eof(f) do
  42.  begin
  43.   read(f,v);
  44.   write('| ',v.nz);
  45.   for i:=1 to 15-length(v.nz) do write(' ');
  46.   write('|',v.uv:8:2);
  47.   write(' |',prv[ord(v.pr)]);
  48.   for i:=1 to 14-length(prv[ord(v.pr)]) do write(' ');
  49.   writeln('|');
  50.  end;
  51. writeln('-------------------------------------------');
  52. writeln('Удельные веса и названия полупроводников');
  53. writeln('----------------------------');
  54. writeln('|    Название    | Уд. вес |');
  55. writeln('----------------------------');
  56. k:=0;
  57. reset(f);
  58. while not eof(f) do
  59.  begin
  60.   read(f,v);
  61.   if v.pr=pl then
  62.    begin
  63.     k:=1;
  64.     write('| ',v.nz);
  65.     for i:=1 to 15-length(v.nz) do write(' ');
  66.     write('|',v.uv:8:2);
  67.     writeln(' |');
  68.   end;
  69.  end;
  70. writeln('----------------------------');
  71. if k=0 then writeln('Нет полупроводников');
  72. reset(f);
  73. k:=0;
  74. while not eof(f) do
  75.  begin
  76.   read(f,v);
  77.   if v.pr=pr then
  78.    begin
  79.     k:=k+1;
  80.     a[k].nz:=v.nz;
  81.     a[k].uv:=v.uv;
  82.    end;
  83.  end;  
  84. close(f);
  85. if k=0 then write('Нет проводников')
  86. else
  87.  begin
  88.   for i:=1 to k-1 do
  89.   for j:=i+1 to k do
  90.   if a[i].uv<a[j].uv then
  91.    begin
  92.     x:=a[i];
  93.     a[i]:=a[j];
  94.     a[j]:=x;
  95.    end;
  96.   writeln('Проводники в порядке убывания удельных весов');
  97.   writeln('----------------------------');
  98.   writeln('|    Название    | Уд. вес |');
  99.   writeln('----------------------------');
  100.   for i:=1 to k do
  101.    begin
  102.     write('| ',a[i].nz);
  103.     for j:=1 to 15-length(a[i].nz) do write(' ');
  104.     write('|',a[i].uv:8:2);
  105.     writeln(' |');
  106.    end;
  107.   writeln('----------------------------');
  108.  end;
  109. end.

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


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

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

13   голосов , оценка 3.846 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы