Найти удельные веса и названия всех полупроводников - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д