type B=(m,w);
A=record
----------
sex:B;
end;
var c:char; x:A
begin
read(c);
case c of
'm':x.sex:=m;
'w':x.sex:=w
end;
выводить тоже символьно - а проще наверно будет описать такие действия функциями
procedure outsex(x:B);
begin
case x of
m:write('m ');
w:write('w ')
end
end;
ну а поиск в таокм же ключе
while (i<n)and not f do
begin i:=i+1; f:=y.sex=p end {p - переменная типа B}
[Pascal] Записи. Ввод информации и печать определённых данных
Сведения о студентах ВУЗа записаны в массиве и содержит следующую информацию: фамилия, имя отчество, пол (М или Ж), возраст (от 16 до 35), курс (от 1-го до 5-го). Напишите программу, которая вводит эту информацию и печатает следущие данные: номер курса, на котором наибольший процент мужчин.
Для решения нужно использовать записи и оператор присоединения.
Как ввести пол? и как его привязать к курсу? помогите решением
там и пол и курс храните
а потом поиск по двум элементам
а вводить пол - ну введите 'м' или 'ж'э ))
Не, пусть у меня в записи поле sex(m,w); kak read производить. просто writeln('sex: '); readln(sex); не получится же(. и поиск с этим сексом мне не понятен.
ну допустим такой вот тип
Код:
uses
SysUtils,
windows;
const n=3;
type
Tpol = (m,w);
TRec = record
name : string [31];
age : 16..35;
kurs : 1..5;
sex : Tpol;
end;
TBase = array [1..n] of TRec; // База данных : информация о студентах.
var x:Trec;
base : TBase;
procedure Input(var b : TBase); // ввод базы даннх
var
i : integer; c:char;
begin
writeln('Ввод базы данных. ');
for i := 1 to n do
with b do begin
writeln('Студент N ',i);
writeln('Имя : ');
readln(name);
writeln('Возраст: ');
readln (age);
writeln('Курс: ');
readln (kurs);
writeln('Введите пол (m/w): ');
readln (c);
case c of
'm':x.sex:=m;
'w':x.sex:=w
end;
writeln;
end;
end;
procedure percent(b : TBase);
var
i,max : integer;
kur:array[1..5,1..2] of integer;
temp:real;
begin
for i:=1 to 5 do
begin
kur[i,1]:=0;
kur[i,2]:=0;
end;
for i := 1 to n do
with b do
case sex of
m:inc(kur[b.kurs,1]);
w:inc(kur[b.kurs,2]);
end;
{!!!!!!!!!!Вот здесь!!!!!!!!!!!!!!!!}
max:=1;
temp:=0;
temp:=100*kur[1,1]/(kur[1,1]+kur[1,2]);
for i:=2 to 5 do
if (100*kur[i,1]/(kur[i,1]+kur[i,2]))>temp then
begin
temp:=100*kur[i,1]/(kur[i,1]+kur[i,2]);
max:=i;
end;
writeln('На ',i,'-ом курсе наибольший процент мужчин');
readln;
end;
begin
{обращение к русскому языку}
setconsoleCp(1251);
setconsoleOutputCp(1251);
input(base);
percent(base);
readln
end.
SysUtils,
windows;
const n=3;
type
Tpol = (m,w);
TRec = record
name : string [31];
age : 16..35;
kurs : 1..5;
sex : Tpol;
end;
TBase = array [1..n] of TRec; // База данных : информация о студентах.
var x:Trec;
base : TBase;
procedure Input(var b : TBase); // ввод базы даннх
var
i : integer; c:char;
begin
writeln('Ввод базы данных. ');
for i := 1 to n do
with b do begin
writeln('Студент N ',i);
writeln('Имя : ');
readln(name);
writeln('Возраст: ');
readln (age);
writeln('Курс: ');
readln (kurs);
writeln('Введите пол (m/w): ');
readln (c);
case c of
'm':x.sex:=m;
'w':x.sex:=w
end;
writeln;
end;
end;
procedure percent(b : TBase);
var
i,max : integer;
kur:array[1..5,1..2] of integer;
temp:real;
begin
for i:=1 to 5 do
begin
kur[i,1]:=0;
kur[i,2]:=0;
end;
for i := 1 to n do
with b do
case sex of
m:inc(kur[b.kurs,1]);
w:inc(kur[b.kurs,2]);
end;
{!!!!!!!!!!Вот здесь!!!!!!!!!!!!!!!!}
max:=1;
temp:=0;
temp:=100*kur[1,1]/(kur[1,1]+kur[1,2]);
for i:=2 to 5 do
if (100*kur[i,1]/(kur[i,1]+kur[i,2]))>temp then
begin
temp:=100*kur[i,1]/(kur[i,1]+kur[i,2]);
max:=i;
end;
writeln('На ',i,'-ом курсе наибольший процент мужчин');
readln;
end;
begin
{обращение к русскому языку}
setconsoleCp(1251);
setconsoleOutputCp(1251);
input(base);
percent(base);
readln
end.
Помогите. Что не правильно?
Всё, не надо. Разобрался. Всем спасибо.