Анастасия Елена
?>

Является ли условным оператором следующая последовательность символов : if x>13 then y:= x+13 else y:= x-13

Информатика

Ответы

kmb1960679
Переводим число из двоичной системы в десятичную:
10(2) = 1 * 2^1 + 0 * 2^0 = 2 + 0 = 2

10(2) + 10(10) = 2(10) + 10(10) = 12(10)

Чтобы перевести число из системы счисления с основанием b, можно представить его в виде суммы:
(\overline{a_n\dots a_2a_1a_0})_b=a_nb^n+\dots+a_2b^2+a_1b^1+a_0b^0
Всё точно так же, как и в десятичной системе, только меняем 10 на основание системы счисления, например,
121_{10}=1\cdot10^2+2\cdot10^1+1\cdot10^0=1\cdot100+2\cdot10+1\cdot1\\
121_{4}=1\cdot4^2+2\cdot4^1+1\cdot4^0=1\cdot16+2\cdot4+1\cdot1\\
121_{b}=1\cdot b^2+2\cdot b^1+1\cdot b^0
Другой избежать большого количества возведений в степень и записать, например, так:
121_{b}=(((1)b+2)b+1)
Берем первую цифру – умножаем на b, прибавляем вторую цифру – умножаем на b, прибавляем третью цифру – ... – умножаем на b, прибавляем последнюю цифру.

Чтобы перевести из десятичной в систему с основанием b, нужно по сути сделать в обратном порядке то, что написано выше: либо восстановить разложение в сумму, либо выписать остатки от деления на b в обратном порядке. Например, переведем 27(4) в десятичную систему счисления:
27(4) = 1 * 16 + 2 * 4 + 3 * 1 = 1 * 4^2 + 2 * 4^1 + 3 * 4^0 = 123(4)

27 : 4 = 6 (ост. 3)
6 : 4 = 1 (ост. 2)
1 : 4 = 0 (ост. 1)
Выписываем в обратном порядке: 27(10) = 123(4)
Ingakazakova
Первая программа предназначена ТОЛЬКО для Pascal.ABC, в другой среде она работать не будет. Она самая короткая и простая. Метод Split разбивает исходную строку на слова по символу пробела и формирует динамический массив. Что бы мы ни вводили, мы всегда будем получать в результате то, что требовалось. (понятно, что если слов будет меньше трех, будем получать то, что ввели).

var
  s: string;
  ms: array of string;

begin
  Write('Введите три слова через пробел: ');
  Readln(s);
  ms := s.Split(' ');
  Writeln(ms[0] + ' ' + ms[2] + ' ' + ms[1])
end.

Вторая программа реализуется в любой версии Pascal. Её недостаток в том, что она правильно работает только тогда, когда введена фраза из трех слов, разделенных пробелом. Это простейший линейный алгоритм.

var
  s, s1, s2, s3: string;
  n, p: integer;

begin
  Write('Введите три слова через пробел: ');
  Readln(s);
  n := Length(s);
  p := Pos(' ', s);
  s1 := Copy(s, 1, p - 1);
  s3 := Copy(s, p + 1, n - p);
  p := Pos(' ', s3);
  s2 := Copy(s3, 1, p - 1);
  n := Length(s3);
  s3 := Copy(s3, p + 1, n - p);
  Writeln(s1 + ' ' + s3 + ' ' + s2)
end.

Третья программа также реализуема в любой версии Pascal и содержит "классический" работы со строкой, состоящий в последовательном анализе каждого символа. Имеет защиту на случай, если слов будет больше или меньше трех.

var
  s: string;
  ms: array[1..3] of string;
  i, n, p, j: integer;

begin
  Write('Введите три слова через пробел: ');
  Readln(s);
  {
  Алгоритм: Просматриваем все символы строки начиная с позиции p
  и при обнаружении пробела в позиции q заносим в массив очередное слово,
  копируя q-p символов, начиная с p. Затем заносим в p значение q+1
  и продолжаем просмотр. При старте принимаем p=1
  }
  p := 1; j := 0; n := Length(s);
  for i := 1 to n do
    if s[i] = ' ' then
    begin
      j := j + 1;
      if j <= 3 then begin{ если введено больше двух пробелов }
        ms[j] := Copy(s, p, i - p);
        p := i + 1
      end
    end;
  if j < 3 then ms[3] := Copy(s, p, n - p + 1);
  Writeln(ms[1] + ' ' + ms[3] + ' ' + ms[2])
end.

Все три программы опробованы и результаты их работы одинаковы:

Введите три слова через пробел: Зебра полосатая лошадь
Зебра лошадь полосатая

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Является ли условным оператором следующая последовательность символов : if x>13 then y:= x+13 else y:= x-13
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

laplena1982750
Kochereva-Sergei
Александровна1742
igor-790
borisov
predatorfishing608
ВасилийКлимова1695
Александрович Василий
antonkovalev89
Tatyana_Minullina
Veril8626
pelagia-kola2658
gigbes
nagas
mail66