М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
romamil
romamil
09.05.2023 15:09 •  Информатика

Нужно минимизировать логическое выражение, , нужно

👇
Открыть все ответы
Ответ:
//Pascal ABC.NET v3.1 сборка 1172

type
 re=Record
  name:string;
  res:integer;
 end;

 Const
 n=3;

Var
 ar:array[1..n] of re;
 i,j,c:integer;
 cs:string;
begin;
for i:=1 to n do
 begin
  write('Введите имя участника №',i,':');
 readln(ar[i].name);
  write('Введите результат участника №',i,':');
 readln(ar[i].res);
 end;
 for i:=1 to n-1 do
  for j:=i to n do
  if ar[i].res>ar[j].res then
   begin;
   c:=ar[i].res;
   ar[i].res:=ar[j].res;
   ar[j].res:=c;
   cs:=ar[i].name; 
  ar[i].name:=ar[j].name;
   ar[j].name:=cs;
   end;for i:=1 to n do
writeln(i,' ',ar[i].name,' ',ar[i].res);
end.

Пример ввода:
Двачевская
23
Персунов
22
Хацуне
3
Пример вывода:
1 Хацуне 3
2 Персунов 22
3 Двачевская 23
4,4(54 оценок)
Ответ:
malaya20061
malaya20061
09.05.2023
{Вариант с поиском,
Пока что просто решил игнорировать 0, раз он все равно в конце}

var
 s: string;
 i,j,k,l: integer;
 t,f: boolean;
 mi,mj: integer;
 x,y:array[boolean] of integer;
begin
 mi := 1;
 mj := 0;
 readln(s);
 l := length(s); //- 1; {оканчивается на 0?}
 k := 1;
 f := true;
 while f and (k <= l) do
   begin
   f := s[k] <> '0';
   if f then k := k + 1
   end;
 x[false] := 1;
 y[false] := k - 1;
 x[true] := k + 1;
 y[true] := l;

 for f := false to true do
 for i := x[f] to y[f] do
 begin
 j := y[f];
 while j - i >= mj - mi do
   begin
   t := true;
   k := 0;
   while t and (k <= (j - i) div 2) do
     begin
     t := s[i + k] = s[j - k];
     k := k + 1
     end;
   if t then
   if j - i > mj - mi then
     begin
     mi := i;
     mj := j;
     end
   else
   if j - i = mj - mi then
     begin
     k := 0;
     t := true;
     while t and (k <= j - i) do
       begin
       t := s[i + k] = s[mi + k];
       if t then k := k + 1
       end;
     t := not t;
     if t then
       t := s[i + k] < s[mi + k];
     if t then
       begin
       mi := i;
       mj := j;
       end
     end;
   j := j - 1
   end
 end;
for k := mi to mj do
  write(s[k])
end.


{Вариант с составлением}

var
 a: array['1'..'9'] of integer;
 i: integer;
 c: char;
 t: boolean;
 begin
 for c := '1' to '9' do
   a[c] := 0;
 repeat
   read(c);
   if (c >= '1') and (c <= '9') then
     a[c] := a[c] + 1;
 until c = '0';
 for c := '1' to '9' do
   for i := 1 to a[c] div 2 do
     write(c);
 c := '1';
 t := true;
 while t and (c <= '9') do
   begin
   if odd(a[c]) then
     begin
     write(c);
     t := false
     end;
   c := succ(c)
   end;
 for c := '9' downto '1' do
   for i := 1 to a[c] div 2 do
     write(c)

end.
4,4(68 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ