Записи о студентах: вывести номер курса, на котором больше всего мужчин - Turbo Pascal

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

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

Доброго времени суток! Немного о задаче: Дан список студентов, который вводится пользователем. Вводятся след. данные: количество вносимых студентов, фамилия, имя, отчество, пол, возраст и курс. Все это читается через запись "bible=record;" Условия задачи: а) программа должна выводить на экран номер курса, на котором больше всего мужчин; г) программа должна выводить на экран инициалы(!) тех девушек, чьи возраст и отчество являются самыми распространенными. Пример условия "а): Вводится информация о 3-х студентах, пол которых "м" или "муж". Курсы: 1, 3 и 1. Т.е. на экран должно выводится сообщение в виде - На "1"(, 'n' ,) курсе больше всего мужчин. Пример условия "г)": Вводится информация о 3-х студентах, пол которых "ж" или "жен". Инициалы/возраст: первой Алла Генадевна Жилкина 21 год, второй Маша Даниловна Арчук( М Д ) 18 лет, третьей Люда Генадьевна Жилкина( Л Г ) 21 год.(все имена взяты с потолка). Т.е. на экран должно выводится сообщение типа - Самое распространенные возраст/отчество: 21, Генадьевна. Прошу помочь с решением. Будет восхитительно, если возможно будет решить хотя бы одно из условий. Безмерно благодарен! Код самой программы ниже:
Листинг программы
  1. uses crt;
  2. type bible=record
  3. imya: string[20];
  4. familiya: string[20];
  5. otchestvo: string[20];
  6. pol: string[10];
  7. vozrast: string[10];
  8. kurs: integer;
  9. end;
  10. var ppl: array [1..100] of bible;
  11. a, k, n, max, p, d: integer;
  12. i, j:byte;
  13. amax, c:string;
  14. s:bible;
  15. begin
  16. writeln('Добро пожаловать в мобильную базу данных отдела кадров.');
  17. writeln('Пожалуйста, заполните слудующие данные:');
  18. write('Количество студентов: ');
  19. readln(n);
  20. writeln;
  21. write('Вносимых в БД кадров: ', n, '.');
  22. writeln;
  23. for i:=1 to n do
  24. begin
  25. writeln;
  26. writeln('Введите сведения о ',i,'-м студенте');
  27. write('Фамилия: ');
  28. readln(ppl[i].familiya);
  29. write('Имя: ');
  30. readln(ppl[i].imya);
  31. write('Отчество: ');
  32. readln(ppl[i].otchestvo);
  33. writeln('Пол(муж/жен):');
  34. readln(ppl[i].pol);
  35. writeln('Возраст(число):');
  36. readln(ppl[i].vozrast);
  37. writeln('Курс(номер): ');
  38. readln(ppl[i].kurs);
  39. end;
  40. writeln;
  41. repeat
  42. textcolor(7);
  43. writeln('Нумерация условий: a) = 1, б) = 2, в) = 3, г) = 4, Выход = 0');
  44. write('Введите номер условия для обработки списка: ');
  45. readln(k);
  46. writeln;
  47. if k > 4 then
  48. begin
  49. textcolor(4);
  50. writeln('ОШИБКА!');
  51. writeln('Введен неверный номер');
  52. writeln;
  53. end;
  54. until k<4;
  55. repeat
  56. textcolor(7);
  57. if k=1 then // ПЕРВОЕ УСЛОВИЕ
  58. begin
  59. end;
  60. textcolor(7);
  61. if k=2 then // ВТОРОЕ УСЛОВИЕ
  62. with ppl[i] do
  63. begin
  64. max:=1;
  65. i:=1;
  66. while i<n do
  67. begin
  68. a:=1;
  69. j:=i+1;
  70. while j<=n do
  71. if ppl[j].imya=ppl[i].imya then
  72. begin
  73. a:=a+1;
  74. if j=n then n:=n+1
  75. else
  76. begin
  77. for p:=j to n-1 do
  78. ppl[p].imya:=ppl[p+1].imya;
  79. n:=n-1;
  80. end;
  81. end
  82. else j:=j+1;
  83. if a>max then
  84. begin
  85. max:=a;
  86. amax:=ppl[i].imya;
  87. end;
  88. i:=i+1;
  89. end;
  90. if max=1 then
  91. writeln('Одинаковых имен нет')
  92. else
  93. writeln('Самое распространенное имя:',amax,'. Количестов студентов с таким именем ', max);
  94. end;
  95. textcolor(7);
  96. if k=3 then // ТРЕТЬЕ УСЛОВИЕ
  97. begin
  98. for i:=1 to n-1 do
  99. for j:=i+1 to n do
  100. if ppl[i].familiya>ppl[j].familiya then
  101. begin
  102. s:=ppl[i];
  103. ppl[i]:=ppl[j];
  104. ppl[j]:=s;
  105. end;
  106. for I:=1 to n do
  107. writeLn(ppl[i].familiya:10);
  108. end;
  109. textcolor(14);
  110. if k=4 then // ЧЕТВЕРТОЕ УСЛОВИЕ
  111. begin
  112. end;
  113. writeln;
  114. textcolor(7);
  115. if k=0 then exit;
  116. textcolor(7);
  117. write('Введите следующий номер условия. Для отмены - "0"): ');
  118. readln(k);
  119. writeln;
  120. until k=0;
  121. end.

Решение задачи: «Записи о студентах: вывести номер курса, на котором больше всего мужчин»

textual
Листинг программы
  1. uses
  2.   crt;
  3. const
  4.   n=100;{максимальное количество студентов}
  5. type
  6.   tStr=string[20];
  7.   tData=record
  8.     Fam,Nam,Sur,Sex,Age,Krs:tStr;
  9.     end;
  10. var
  11.   a:array[0..n]of tData;
  12.   b:tData;
  13.   c:char;
  14.   z:integer;
  15. {подпрограммма ввода}
  16. procedure pInput;
  17.   var
  18.     c:tStr;
  19.   begin
  20.     repeat
  21.       writeln('I N P U T   D A T A');
  22.       write(b.Fam,':');
  23.       readln(c);
  24.       if length(c)>0 then
  25.         begin
  26.           inc(z);
  27.           a[z].Fam:=c;
  28.           write(b.Nam,':');
  29.           readln(c);
  30.           a[z].Nam:=c;
  31.           write(b.Sur,':');
  32.           readln(c);
  33.           a[z].Sur:=c;
  34.           write(b.Sex,':');
  35.           readln(c);
  36.           a[z].Sex:=c[1];
  37.           write(b.Age,':');
  38.           readln(c);
  39.           a[z].Age:=c;
  40.           write(b.Krs,':');
  41.           readln(c);
  42.           a[z].Krs:=c[1];
  43.         end;
  44.     until length(c)=0;
  45.   end;
  46. {подпрограмма получения значения записи}
  47. function Fild(c:tStr;d:integer):tStr;
  48.   begin
  49.     with a[d] do
  50.       begin
  51.         if c=b.Fam then Fild:=Fam;
  52.         if c=b.Nam then Fild:=Nam;
  53.         if c=b.Sur then Fild:=Sur;
  54.         if c=b.Sex then Fild:=Sex;
  55.         if c=b.Age then Fild:=Age;
  56.         if c=b.Krs then Fild:=Krs;
  57.       end
  58.   end;
  59. {подпрограмма поиска по заданию а}
  60. procedure pFind;
  61.   var
  62.     c,d,e,f,g:integer;
  63.   begin
  64.     f:=0;
  65.     for d:=1 to z do
  66.       begin
  67.         e:=0;
  68.         for c:=1 to z do
  69.           if(Fild('Sex',c)='m')and(Fild('Kurs',c)=Fild('Kurs',d))then inc(e);
  70.         if e>f then
  71.           begin
  72.             f:=e;
  73.             g:=d;
  74.           end;
  75.       end;
  76.     Write('Kurs = ',a[g].Krs,' : ',f);
  77.     ReadKey
  78.   end;
  79. {подпрограмма просмотра всех записей}
  80. procedure pList;
  81.   var
  82.     c:integer;
  83.   begin
  84.     for c:=1 to z do
  85.       with a[c]do
  86.         writeln(Fam,',',Nam,',',Sur,',',Sex,',',Age,',',Krs);
  87.     ReadKey
  88.   end;
  89. {основная программа}
  90. begin
  91.   {setup data}
  92.   b.Fam:='Familya';
  93.   b.Nam:='Name';
  94.   b.Sur:='Surname';
  95.   b.Sex:='Sex';
  96.   b.Age:='Age';
  97.   b.Krs:='Kurs';
  98.   z:=0;
  99.   {меню}
  100.   repeat
  101.     ClrScr;
  102.     writeln('0 - exit');
  103.     writeln('1 - input data');
  104.     writeln('2 - find data');
  105.     writeln('3 - list data');
  106.     c:=ReadKey;
  107.     case c of
  108.       '1':pInput;
  109.       '2':pFind;
  110.       '3':pList;
  111.       end
  112.   until c='0'
  113. end.

Объяснение кода листинга программы

В данном коде используется язык программирования Turbo Pascal. Он содержит структуру данных tData, которая представляет запись о студенте. Эта структура содержит поля Fam (семья), Nam (имя), Sur (фамилия), Sex (пол), Age (возраст) и Krs (курс). Для хранения информации о студентах используется массив a, который содержит n записей о студентах. Функция Fild используется для получения значения поля записи по его имени. Процедура pFind используется для поиска студента по полу и курсу. Она изменяет переменные f и g, которые представляют номер найденного студента и его пол. Процедура pList используется для вывода информации о всех студентах. Она проходит по всем записям в массиве a и выводит информацию о студенте. Основная программа начинается с инициализации структуры данных tData и переходит к меню, которое предлагает пользователю выбрать действие. В зависимости от выбранного действия выполняется соответствующая процедура. Код использует подпрограмму ввода данных, которая запрашивает у пользователя информацию о студентах и записывает ее в массив a. Вложенных списков в данном коде нет.

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


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

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

11   голосов , оценка 3.909 из 5

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

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

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