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

Создать файл из 650 целых чисел, лежащих на отрезке [135,4000]u[4578, 15000], используя генератор случайных чисел.(pascal abc) -вывести все данные на экран. -вывести все четырехзначные числа, взаимно простые с своими соседями. -найти наибольшее среди чисел, которое имеет в своей записи хотя бы одну 1.

👇
Ответ:
сарвиназ002
сарвиназ002
17.07.2022
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
const
  k=650;
 
function GetData(f:file of integer):integer;
// получить из файла очередное значение
begin
  if not f.Eof then Read(f,Result)
  else Result:=0
end;

function NOD(a,b:integer):integer;
// нахождение НОД
begin
  while b>0 do (a,b):=(b,a mod b);
  Result:=a
end;

function VZP(a,b:integer):boolean;
// являются ли a и b взаимно простыми?
begin
  Result:=NOD(a,b)=1;
end;

function Has1(n:integer):boolean:=(Pos('1',n.ToString)>0);

begin
  var f:file of integer;
  // создаем файл
  Assign(f,'F.dat'); Rewrite(f);
  var n:integer;
  for var i:=1 to k do begin
    n:=(Random(1,2)=1?Random(135,4000):Random(4578,15000));
    f.Write(n);
    end;
  f.Close;
  // файл создан, начинаем его читать и обрабатывать
  Reset(f);
  Writeln('Задание 1');
  while not f.Eof do begin n:=GetData(f); Print(n); end;
  Writeln(NewLine,'Задание 2');
  f.Seek(0);
  var a:=GetData(f);
  var b:=GetData(f);
  var c:integer;
  var VZPLeft:=VZP(a,b);
  var VZPRight:boolean;
  if VZPLeft then Print(a);
  for var i:=3 to k-1 do begin
    c:=GetData(f);
    VZPRight:=VZP(b,c);
    if VZPLeft and VZPRight then Print(b);
    (a,b):=(b,c); VZPleft:=VZPRight
    end;
  c:=GetData(f);
  if VZP(b,c) then Print(b,c);
  Writeln(NewLine,'Задание 3');
  f.Seek(0);
  var mx:=0;
  while not f.Eof do begin
    a:=GetData(f);
    if Has1(a) then mx:=Max(mx,a)
    end;
  if mx>0 then Writeln(mx);
  f.Close
end.

Тестовое решение в прикрепленном файле
4,5(69 оценок)
Открыть все ответы
Ответ:
Мила098
Мила098
17.07.2022
Сначала немного теории.
Тут у нас импликация(если..то...), комбинированная с конъюнкцией(и).
Таблица истинности импликации(стрелочки):
0 0 1
0 1 1
1 0 0
1 1 1
Общее правило: если a<=b, тогда правда
Таблица истинности конъюнкции(/\):
0 0 0
0 1 0
1 0 0
1 1 1
Общее правило: если есть одна ложь-всё ложь.
Про НЕ и гуманитарий поймёт.
Про данный пример:
Нам нужен вариант, где оба выражения являются правдой, т.к. между ними стоит И
Подробно рассмотрим первый вариант:
Ирина
Первая буква гласная-правда
Вторая буква гласная-ложь
Значит, результат импликации-ложь, в чём можно убедиться взглянув на таблицу истинности, но, так как НЕ так же присутствует в данном условии, это выражение возвращает правду.
Последняя буква гласная-правда
Так как оба выражения при конъюнкции правда, всё выражение является правдой и удовлетворяет условию.
4,6(87 оценок)
Ответ:
1.

var
i: integer;
A: array [1..20] of integer;

begin
randomize;
writeln('Массив: ');
for i:=1 to 20 do A[i]:=random(21)-10;
 for i:=1 to 20 do write(A[i]:5);
writeln;
writeln('Каждый пятый эелемент массива: ');
 for i:=1 to 20 do if i mod 5 = 0 then write(A[i]:5);
end.

2.
var
x,i: integer;
A: array [1..20] of integer;

begin
randomize;
writeln('Массив: ');
 for i:=1 to 20 do A[i]:=random(11);for i:=1 to 20 do write(A[i]:5);
writeln;
writeln('Натуральные числа в диапазоне [5..10]: ');
 for i:=5 to 10 do write(A[i]:5);
writeln;
x:=1;
writeln('Их произведение: ');
 for i:=5 to 10 do x:=A[i]*x;
write(x:5); 
end.
4,7(12 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ