Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 17.10.2019
Сообщений: 77

Не большая переделка кода

16.01.2020, 08:31. Показов 813. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос:
Подскажите, зачем здесь ord и какую роль он здесь выполняет? А так же можно ли сделать эту задачу без орда?

Задача:
Задано множество персональных компьютеров, которыми может быть обеспечен колледж: Pentium II, Pentium III, Pentium IV, Celeron, Atlon. Известен набор компьютеров, имеющихся в каждом колледже. Количество колледжей равно 10. Требуется построить множество, включающее в себя персональные компьютеры: 1. Которыми обеспечены все колледжи 2. Которые имеет хотя бы один колледж 3. Которых нет ни в одном колледже

Код:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
Program Lifelover;
 
Type 
  proc = (pentium2, pentium3, pentium4, celeron, atlon);
  tehn = set of proc;
 
Const 
  n = 3;
  nn = 5;
  sp: array [0 .. nn-1] of string = ('Pentium2','Pentium3','Pentium4','Celeron','Atlon');
 
Var
  m: array [1..n] of tehn;
  res: tehn;
  j: proc;
  i, k: byte;
 
begin
 
  writeln ('Перечислите какими компьютерами обеспечены колледжи:');
 
  for i := 1 to n do
    begin
      writeln ('Колледж ',i);
 
      writeln ('0-Pentium2 1-Pentium3 2-Pentium4 3-Celeron 4-Atlon 5-выход');
      
      repeat
        repeat
          readln(k);
        until k in [0..5];
        
        if k in [0..4] then
          m[i] := m[i] + [proc(k)];
      until k = 5;
    end;
 
  for i := 1 to n do
    begin
      writeln ('Колледж ',i);
 
      for j := pentium2 to atlon do
        if j in m[i] then
          write(sp[j],' ');
        writeln;
        writeln ('Press Enter');
      readln;
    end;
 
  writeln ('Виды Компьютеров, которыми обеспечены все колледжи');
 
  for j := pentium2 to atlon do
    begin
      k := 0;
      for i := 1 to n do
      if j in m[i] then
        k := k + 1;
      if k = n then
        res := res + [j];
    end;
  
  if res = [] then
    writeln ('Таких видов компьютеров нет')
  else
   for j := pentium2 to atlon do
    if j in res then
      write(sp[j],' ');
      writeln;
      writeln ('Press Enter');
      readln;
      writeln ('Виды компьютеров, которые имеет хотя бы один колледж:');
  
  for j := pentium2 to atlon do
    begin
      k := 0;
      for i := 1 to n do
        if j in m[i] then
          k := k + 1;
        if k > 0 then
          res := res + [j];
    end;
  
  if res = [] then
    writeln ('Таких видов компьютеров нет')
    else
  for j := pentium2 to atlon do
  if j in res then
    write (sp[j],' ');
 
  writeln;
  writeln('Press Enter');
  readln;
  writeln('Виды компьютеров, которых нет ни в одном колледже:');
  res:=[];
 
  for j := pentium2 to atlon do
    begin
      k := 0;
      for i := 1 to n do
      if j in m[i] then
        k := k + 1;
      if k = 0 then
        res := res + [j];
    end;
 
  if res=[] then
    writeln('Таких видов компьютеров нет')
      else
    for j := pentium2 to atlon do
      if j in res then
        write(sp[j],' ');
 
  writeln;
 
end.
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.01.2020, 08:31
Ответы с готовыми решениями:

Переделка кода
Нужно переделать код под массив, который будет заполняться не в ручную, а рандомно в этом коде. Переделывал сам и ломалась программа, то...

переделка программного кода.(процедуры)
Есть готовая программа: Program dvadcuat_tri; var a,b,c: array of real; Sr, pol, otr, chislo_pol, chislo_otr: real; ...

переделка кода из с++ на си
Кто нибудь помогите переделать код для с++ в код для си, сам пытался, мало что получилось условие задачи: Дан символьный файл f,...

2
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
16.01.2020, 08:45
Во первых Вы Ord из кода уже выкинули, наверное от большого ума.
В данной программе эта функция переводит значение перечислимого типа в целочисленный, т.к по значению переменной типа proc нужно вывести значение строки из массива sp по числовому индексу от 0 до 4.
0=ord(pentium2);
.........................
4=ord(atlon);
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
16.01.2020, 11:27
Если переписать так, общие фрагменты - кандидаты для выноса в процедуры/функции станут более наглядны:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
type
  TProc = (pentium2, pentium3, pentium4, celeron, athlon);
  TProcs = set of TProc;
 
const
  sp: array [TProc] of String[11] = ('Pentium II','Pentium III','Pentium IV','Celeron','Athlon');
 
var
  m: array [1..3] of TProcs;
  res: TProcs;
  j: TProc;
  i, k: Integer;
 
begin
  WriteLn ('Перечислите какими компьютерами обеспечены колледжи:');
  for i:=Low(m) to High(m) do begin
    WriteLn('Колледж ',i);
    for k:=Ord(Low(TProc)) to Ord(High(TProc)) do
      Write(' ',k,'-',sp[TProc(k)]);
    WriteLn(' ',Ord(High(TProc))+1,'-выход');
    repeat
      repeat ReadLn(k);
      until k in [Ord(Low(TProc))..Ord(High(TProc)) + 1];
      if k in [Ord(Low(TProc))..Ord(High(TProc))] then
        Include(m[i], TProc(k))
      else Break;
    until False;
  end;
  for i:=Low(m) to High(m) do begin
    WriteLn('Колледж ',i);
    for j:=Low(j) to High(j) do if j in m[i] then Write(' ',sp[j]); WriteLn;
  end;
 
  WriteLn('Виды компьютеров, которыми обеспечены все колледжи:');
  res:=[Low(res)..High(res)];
  for i:=Low(m) to High(m) do res:=res*m[i];
  if res=[] then
    WriteLn('Таких видов компьютеров нет')
  else begin
    for j:=Low(j) to High(j) do if j in res then Write(' ',sp[j]); WriteLn;
  end;
 
  WriteLn('Виды компьютеров, которые имеет хотя бы один колледж:');
  res:=[];
  for i:=Low(m) to High(m) do res:=res+m[i];
  if res=[] then
    WriteLn('Таких видов компьютеров нет')
  else begin
    for j:=Low(j) to High(j) do if j in res then Write(' ',sp[j]); WriteLn;
  end;
 
  WriteLn('Виды компьютеров, которых нет ни в одном колледже:');
  res:=[Low(res)..High(res)];
  for i:=Low(m) to High(m) do res:=res-m[i];
  if res=[] then
    WriteLn('Таких видов компьютеров нет')
  else begin
    for j:=Low(j) to High(j) do if j in res then Write(' ',sp[j]); WriteLn;
  end;
end.
В сухом остатке:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
type
  TProc = (pentium2, pentium3, pentium4, celeron, athlon);
  TProcs = set of TProc;
 
const
  sp: array [TProc] of String[11] = ('Pentium II','Pentium III','Pentium IV','Celeron','Athlon');
 
procedure ReadProcs(var p: TProcs);
var k: Integer;
begin
  for k:=Ord(Low(TProc)) to Ord(High(TProc)) do Write(' ',k,'-',sp[TProc(k)]);
  WriteLn; Write('(номера в одну строку): '); p:=[];
  while not SeekEoLn do begin
    Read(k);
    if k in [Ord(Low(TProc))..Ord(High(TProc))] then Include(p,TProc(k));
  end; ReadLn;
end;
 
procedure WriteProcs(const p: TProcs);
var j: TProc;
begin
  Write('['); for j:=Low(j) to High(j) do if j in p then Write(' ',sp[j]); WriteLn(']');
end;
 
var
  m: array [1..3] of TProcs;
  res: TProcs;
  i: Integer;
 
begin
  WriteLn ('Перечислите какими компьютерами обеспечены колледжи:');
  for i:=Low(m) to High(m) do begin
    WriteLn('Колледж ',i); ReadProcs(m[i]);
  end;
  for i:=Low(m) to High(m) do begin
    Write('Колледж ',i,': '); WriteProcs(m[i]);
  end;
 
  WriteLn('Виды компьютеров, которыми обеспечены все колледжи:');
  res:=[Low(res)..High(res)];
  for i:=Low(m) to High(m) do res:=res*m[i];
  WriteProcs(res);
 
  WriteLn('Виды компьютеров, которые имеет хотя бы один колледж:');
  res:=[];
  for i:=Low(m) to High(m) do res:=res+m[i];
  WriteProcs(res);
 
  WriteLn('Виды компьютеров, которых нет ни в одном колледже:');
  res:=[Low(res)..High(res)];
  for i:=Low(m) to High(m) do res:=res-m[i];
  WriteProcs(res);
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.01.2020, 11:27
Помогаю со студенческими работами здесь

Переделка кода
Всем доброго времени суток!!! Вот мой код: #include <string.h> #define LEN 256 #include <stdio.h> #include <ctype.h> ...

Переделка кода под WPF
Здраствуйте, кто может подсказать как сделать замену System.Windows.Forms когда переделываешь код С# под WPF? Вот пример: ...

Переделка кода из TASM в MASM32
здр всем.. имеется следующая программа.. прошу подсказать или по возможности полностью выложить решение в переделке данных написанных мной...

Переделка кода - из консоли в форму с++ builder
Помогите перевести код из консоли в форму с++ builder, понятное дело нужно выкинуть все выводы параметров, и переделать ввод начальных...

Переделка кода Builder -> Visual Studio
Проблемка заключается в том, что я стал портировать код от С++ Builder в C++ Visual Studio 2010. Повылазили куча ошибок. Что сам знал то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru