ВУЗ:
Составители:
Рубрика:
19
ние числа мужчин к числу студентов. Ситуация совпадения для разных курсов
отношения числа мужчин к числу студентов не рассматривается. Особый
случай: чтобы программа работала устойчиво, желательно предусмотреть про-
верку на неравенство нулю общего числа студентов на курсе. Зачем ?
3. Распространенные мужские и женские имена напечатаем в процедуре
name(). Сформируем массивы с мужскими и женскими именами. Для каждого
имени подсчитаем накопленную частоту его появления (количество появления
i-го имени среди имен с номерами 1 .. i). Например,
Имя Валя Аля Валя Галя Аля
Частота 1 1 2 1 2
Найдем максимум накопленных частот и распечатаем имена, для которых
накопленная частота равна максимуму.
Для нахождения накопленных частот по массиву имен напишем внутрен-
нюю процедуру how_many(). Печать самых распространенных имен оформим во
внутренней процедуре print(). ♠
Program Student_;
Uses crt;
Const n=7; {количество студентов}
Type n_kursa = 1..5;
Student = record
fam,im:string[30]; pol:char; kurs:n_kursa end;
st = array[1..n] of student;
imena = array[1..n] of string;
nomera = array[1..n] of integer;
Var sp:st; {список студентов} i:integer; {счетчик цикла}
function man (const sp:st): n_kursa;
{номер курса, на котором наибольший процент мужчин}
var m,k:array[1..5] of integer; p: n_kursa;
{количество мужчин и всего студентов на каждом курсе}
begin
for i:=1 to n do begin k[i]:=0; m[i]:=0 end;
for i:=1 to n do
begin inc(k[sp[i].kurs]);
if sp[i].pol='м' then inc(m[sp[i].kurs])
end;
p:=1;
for i:=2 to 5 do
if (k[i]<>0) and (k[p]<>0)
then if m[i]/k[i]>m[p]/k[p]
then p:=i;
man:=p
end; {man}
procedure name (const sp:st);
{самые распространенные мужские и женские имена}
Страницы
- « первая
- ‹ предыдущая
- …
- 17
- 18
- 19
- 20
- 21
- …
- следующая ›
- последняя »