В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
Dariu111
Dariu111
19.10.2021 20:50 •  Информатика

5. Исполнитель Калькулятор имеет команды
1. прибавь 1
2. раздели на 2
Нужно составить самую короткую программ
самую короткую программу для калькулятора е которой из числа а можно получить число b. Как лучше
перебирать варианты программ, от начального числа к конечному
или наоборот? Почему?​

Показать ответ
Ответ:
maga050508
maga050508
21.03.2023 12:38
Var m : array[0..6] of Integer;
  i,k,N : Integer;
Begin
  For i:=0 to 6 do m[i]:=0;
  Readln(N);
  k:=6;
  While N>0 do
  Begin
    If N>=Power(2,k) then
    Begin
      N:=N-Trunc(Power(2,k));
      Inc(m[k]);
    end else Dec(k);
  end;
  For i:=0 to 6 do Writeln(Power(2,i),'  ',m[i],' шт.');
end.

Еще вариант:
Const
  NN = 7;
  money : array[1..7] of Integer = (1,2,4,8,16,32,64);
Var m : array[1..NN] of Integer;
  i,k,N : Integer;
Begin
  For i:=1 to NN do m[i]:=0;
  Readln(N);
  k:=NN;
  While N>0 do
  Begin
    If N>=money[k] then
    Begin
      N:=N-money[k];
      Inc(m[k]);
    end else Dec(k);
  end;
  For i:=1 to NN do Writeln(money[i],'  ',m[i],' шт.');
end.
0,0(0 оценок)
Ответ:
Вандализм
Вандализм
02.04.2023 20:56

ВСЕ ЗАДАЧИ В ОДНОЙ

var enter,numberDgigits,i,j,cod,k:integer;

     number:string;

     ch:char;

begin

  writeln('введите целое число');

  readln(number);

  for i:=1 to length(number)-1 do

     if number[i]=number[i+1] then

       k:=k+1;

    if k<>0 then begin

  writeln('в записи числа есть две одинаковые цифры стоящие рядом');

  end

  else

  writeln('в записи числа нету двух одинаковых цифр стоящих рядом');

  k:=0;

  for i:=1 to length(number)-1 do begin

     ch:=number[i];

        for j:=1+i to length(number) do

          if ch=number[j] then

             k:=k+1;

  end;

  if k<>0 then begin

  writeln('в записи числа есть одинаковые цифры');

  end

  else

  writeln('в записи числа нету одинаковых цифр');

  val(number,enter,cod);

  if (enter>99) and (enter<1000) then begin

    writeln('число трехзначное')

  end

    else

    writeln('число не трехзначное');

    numberDgigits := 0;

   while enter > 0 do begin

     numberDgigits := numberDgigits + enter mod 10;

     enter := enter div 10;

   end;

   writeln('сумма цифр = ',numberDgigits);

   readln;

end.

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота