Advertisement
S1L1R

Untitled

Nov 23rd, 2020 (edited)
735
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.42 KB | None | 0 0
  1. ///Лабораторная по записям
  2. ///Бахтуров Максим | ТМП-15 | Вариант 4
  3. const s_msg: array [0..2] of string = ('Search by UID:', 'Search by surname:', 'Search by max UID:');
  4.       i_msg: array [0..2] of string = ('    UID |', '   NAME |', 'SURNAME |');
  5.       v_msg: array [0..2] of string = ('UID:', 'Name:', 'Surname:');
  6.      
  7. type lib = array of string;
  8. procedure input(self: array of array of string; n: integer; params k: array of integer); begin
  9.   for var i := 0 to n-1 do begin
  10.     if i = 0 then readln;
  11.    
  12.     for var j := 0 to k.length - 1 do begin
  13.       print($'[{i+1}] |', i_msg[k[j]]);
  14.       readln(self[i][k[j]]);
  15.     end;
  16.   end;
  17. end;
  18.  
  19. var resolved: string -> string := s -> s = '' ? '[~]' : s;
  20. function addon(s: array of array of string; i: integer; flag: boolean; j: integer): string; begin
  21.  result := flag ? $'{v_msg[i]} {s[j][i]}{#13}' : '';
  22. end;
  23.  
  24. procedure search_by_number(a: array of array of string; num: string; flag: boolean := false); begin
  25.   for var i := 0 to a.length - 1 do
  26.     if a[i][0] = num then
  27.     println(addon(a, 0, true, i) + $'{v_msg[1]} {resolved(a[i][1])}{#13}{v_msg[2]} {resolved(a[i][2])}');
  28. end;
  29.  
  30. procedure search_by_surname(a: array of array of string; sur: string); begin
  31.   for var i:= 0 to a.length - 1 do
  32.       if a[i][2].toupper = sur.toupper then
  33.       println($'{v_msg[0]} {resolved(a[i][0])}{#13}{v_msg[1]} {resolved(a[i][1])}');
  34. end;
  35.  
  36. procedure separator(x: integer; f: boolean := false); begin
  37.   println('=' * length(s_msg[x]), f ? #13 + s_msg[x] : ' ');
  38. end;
  39.  
  40. begin
  41.   var n := readinteger('n:');
  42.   var student: array of lib;
  43.     student := new lib[n <= 0 ? 1 : n];
  44.  
  45.   for var i := 0 to n-1 do
  46.     student[i] := new string[3];
  47.    
  48.    ///Ввод данных студента
  49.    input(student, n, 0);
  50.  
  51.    ///Поиск по номеру
  52.    separator(0);
  53.    
  54.    var num := readstring(s_msg[0]);
  55.    search_by_number(student, num);
  56.    
  57.    ///Поиск по фамилии
  58.    separator(1);
  59.    
  60.    var sur := readlnstring(s_msg[1]);
  61.    search_by_surname(student, sur);
  62.    
  63.    ///Поиск по максимальному номеру    
  64.    var max := student[0][0];
  65.    for var i := 0 to n-1 do
  66.      if student[i][0] > max then
  67.        max := student[i][0];
  68.      
  69.    separator(2, true);
  70.    search_by_number(student, max, true);
  71. end.
  72. ///У меня есть другая версия этой программы
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement