Операции над записями - Pascal

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

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

В данную программу сделать так: У кого средний бал больше 4.0 того выводит на экран.
Листинг программы
  1. Program KK;
  2. const N=3; //количество студентов
  3. type
  4. FIO = record
  5. family : string[20]; // фамилия
  6. name : string[15]; // имя
  7. surname : string[20]; // отчество
  8. end;
  9. type mas=array[1..5] of byte;
  10. type
  11. student=record
  12. studentFIO : FIO;
  13. group : byte;
  14. points : mas;
  15. end;
  16. //*******************************************************
  17. var BAZA : array[1..N] of student;
  18. m : student;
  19. i,j,k : integer;
  20. begin
  21. //******************заполнение данных**********************************
  22. for i:=1 to N do
  23. begin
  24. write('Фамилия: '); readln(BAZA[i].studentFIO.family);
  25. write('Имя: '); readln(BAZA[i].studentFIO.name);
  26. write('Отчество: '); readln(BAZA[i].studentFIO.surname);
  27. write('Группа: '); readln(BAZA[i].group);
  28. writeln('оценки:');
  29. for j:=1 to 5 do begin
  30. write(j,') ');
  31. readln(BAZA[i].points[j]);
  32. end;
  33. end;
  34. //******************Вывод данных**********************************
  35. for i := 1 to N-1 do
  36. for j := 1 to N-i do
  37. if BAZA[j].studentFIO.family > BAZA[j+1].studentFIO.family then
  38. begin
  39. //SWAP(BAZA[j], BAZA[j+1]);
  40. m := BAZA[j];
  41. BAZA[j] := BAZA[j+1];
  42. BAZA[j+1] := m;
  43. end;
  44. writeln('*********************************************************');
  45. for i:=1 to N do
  46. begin
  47. write('Фамилия: '); writeln(BAZA[i].studentFIO.family);
  48. write('Имя: '); writeln(BAZA[i].studentFIO.name);
  49. write('Отчество: '); writeln(BAZA[i].studentFIO.surname);
  50. write('группа: '); writeln(BAZA[i].group);
  51. writeln('оценки:');;
  52. for j:=1 to 5 do write(BAZA[i].points[j]:3);
  53. writeln;
  54. writeln('*********************************************************');
  55. end;
  56. //*****************************************************************
  57. k:=0;
  58. for i:=1 to N do
  59. begin
  60. for j:=1 to 5 do
  61. if BAZA[i].points[j] = 4 then begin
  62. k:=k+1;
  63. if k = 1 then writeln('Студенты, чей средний балл больше 4.0:');
  64. writeln(BAZA[i].studentFIO.family,' ',BAZA[i].group);
  65. break;
  66. end;
  67. end;
  68. if k = 0 then writeln('студентов с двойками нет!');
  69. end.

Решение задачи: «Операции над записями»

textual
Листинг программы
  1. program KK;
  2.  
  3. const
  4.   N = 3;//количество студентов
  5.  
  6. type
  7.   FIO = record
  8.     family: string[20];   // фамилия
  9.     name: string[15];   // имя
  10.     surname: string[20];   // отчество
  11.   end;
  12.  
  13. type
  14.   mas = array[1..5] of byte;
  15.  
  16. type
  17.   student = record
  18.     studentFIO: FIO;
  19.     group: integer;
  20.     points: mas;
  21.   end;
  22. //*******************************************************
  23. var
  24.   BAZA: array[1..N] of student;
  25.   m: student;
  26.   i, j, k: integer;
  27.   sr: real;
  28.  
  29. begin
  30.   //******************заполнение данных**********************************
  31.   for i := 1 to N do
  32.   begin
  33.     write('Фамилия: ');readln(BAZA[i].studentFIO.family);
  34.     write('Имя: ');readln(BAZA[i].studentFIO.name);
  35.     write('Отчество: ');readln(BAZA[i].studentFIO.surname);
  36.     write('Группа: ');readln(BAZA[i].group);
  37.     writeln('оценки:');
  38.     for j := 1 to 5 do
  39.     begin
  40.       write(j, ') ');
  41.       readln(BAZA[i].points[j]);
  42.     end;
  43.   end;
  44.  
  45.   //******************Вывод данных**********************************
  46.   for i := 1 to N - 1 do
  47.     for j := 1 to N - i do
  48.       if BAZA[j].studentFIO.family > BAZA[j + 1].studentFIO.family then
  49.       begin
  50.         m := BAZA[j];
  51.         BAZA[j] := BAZA[j + 1];
  52.         BAZA[j + 1] := m;
  53.       end;
  54.   writeln('*********************************************************');
  55.   for i := 1 to N do
  56.   begin
  57.     write('Фамилия: ');
  58.     writeln(BAZA[i].studentFIO.family);
  59.     write('Имя: ');
  60.     writeln(BAZA[i].studentFIO.name);
  61.     write('Отчество: ');
  62.     writeln(BAZA[i].studentFIO.surname);
  63.     write('группа: ');
  64.     writeln(BAZA[i].group);
  65.     writeln('оценки:');;
  66.     for j := 1 to 5 do
  67.       write(BAZA[i].points[j]:3);
  68.     writeln;
  69.     writeln('*********************************************************');
  70.   end;
  71.   //*****************************************************************
  72.   sr := 0;
  73.   writeln('Студенты, чей средний балл больше 4.0:');
  74.   for i := 1 to N do
  75.   begin
  76.     for j := 1 to 5 do
  77.       sr := sr + BAZA[i].points[j];
  78.     sr := sr / 5;
  79.     if sr > 4 then
  80.       writeln(BAZA[i].studentFIO.family, '  ', BAZA[i].group);
  81.   end;
  82. end.

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

  1. Определение константы N и присвоение ей значения 3.
  2. Определение типа записи FIO со следующими полями: family (фамилия), name (имя), surname (отчество).
  3. Определение массива mas размером 5 элементов, каждый из которых имеет тип byte.
  4. Определение типа записи student с полями: studentFIO (типа FIO), group (целое число), points (массив типа mas).
  5. Объявление переменных: BAZA как массив из N элементов типа student, m как переменную типа student, i, j, k как целые числа, sr как вещественное число.
  6. Заполнение данных о студентах, включая их ФИО, группу и оценки.
  7. Сортировка студентов по фамилии в алфавитном порядке.
  8. Вывод всех данных о студентах: ФИО, группа, оценки.
  9. Вычисление и вывод студентов, чей средний балл выше 4.0.

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


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

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

10   голосов , оценка 4.2 из 5

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

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

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