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

PASCAL ---
У Тимура все члены семьи любят спортивный бег. Отец, мать и Тимур каждое утро делают пробежки. В первый день все дружно пробежали X километров. В последующие дни они увеличивают длину пробега на 7% каждый день. Через сколько дней утренний пробег семьи превысит y км?

Показать ответ
Ответ:
EeThreeMan
EeThreeMan
26.09.2022 11:16
Первая программа предназначена ТОЛЬКО для 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.

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

Введите три слова через пробел: Зебра полосатая лошадь
Зебра лошадь полосатая
0,0(0 оценок)
Ответ:
Макслайв
Макслайв
28.02.2020 02:10
1.  и 2. записываем в столбик в виде суммы:

1.       +  n 3 8  9  8
               2 n 7 5  m
           
              m 8 5 n  3
ясно, что основание искомой с/с > 10.  Проверим и удостоверимся, что в 11c|c  действия выполняются верно.
 11 c|c   M=6   n = 4    
ответ: основание системы   11,  m=6,    n=4

2.   m m 65 n
    +2 n 4 4 m         

       5 5 4 2 4      очевидно, что основание искомой с/с > 6. 
Проверим по действиям в 7 с/с,  при сложении в столбик,
  при m=3 и n=1
и удостоверимся, что всё верно.
ответ:    осн. с\с = 7, m=3, n=1

3. пусть основание с\с будет  X? тогда:
(4*X^2+X+5)*4 =2*X^3+2*X^2+6*X+6
    раскрываем скобки, преобразуем и получаем уравнение:
(2*X - 14)*(X^2+1) = 0  --->    X=7
ответ:7
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота