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

На языке паскаля составьте программу вычисления суммы факториалов всех чётных чисел от m до n.

Показать ответ
Ответ:
student2544
student2544
08.02.2022 11:28
Const 
  Letters = ['a'..'z', 'A'..'Z'];
  LineEnds = [#13, #10, #0, '.'];
  MAX_LEN = 255;
var 
  txt: array [0..MAX_LEN] of char;
  bnd: array [0..MAX_LEN, 0..1] of integer;
  tsz, bsz: integer; // размеры массивов
  isLetter, isWord, f1, f2: boolean;
  i, j: integer;
begin
  repeat
    read(txt[tsz]);

    // Определение границ слов   
    isLetter := txt[tsz] in Letters;
    if isLetter and not isWord then
      bnd[bsz, 0] := tsz;
    if isWord and not isLetter then begin
      bnd[bsz, 1] := tsz;
      bsz := bsz + 1;
    end;
    
    isWord := isLetter;
    tsz := tsz + 1;
  until txt[tsz-1] in LineEnds;
  
  if bsz > 1 then begin  
    for i := 0 to bsz-2 do begin
      j := 0; f2 := true;
      f1 := (bnd[bsz-1, 1] - bnd[bsz-1, 0]) = (bnd[i, 1]-bnd[i, 0]); // совпадение длин
      
      while (j < bnd[i, 1] - bnd[i, 0]) and f2 do begin
        f1 := f1 and (txt[bnd[i, 0] + j] = txt[bnd[bsz-1, 0] + j]);
        f2 := f2 and (LowCase(txt[bnd[i, 0] + j]) = Chr(Ord('a') + j));
        j := j + 1;
      end;
      
      // вывод
      if f2 and not f1 then begin
        for j := bnd[i, 0] to bnd[i, 1] - 1 do
          write(txt[j]);
        writeln;
      end;
    end;
  end;
end.
0,0(0 оценок)
Ответ:
lanakalina
lanakalina
18.05.2023 03:02
Честно говоря, какой-то странный код.
Во-первых, после 0 (во второй строке) должно стоять двоеточие и, во-вторых, лично у меня функции записаные с большой буквы, не работают.
Как я понимаю, эта программа должна искать чётные числа от 0 до 10 (мне выдаёт 2,4,6,8,10).
Она работает так:
благодаря цыклу for переменной i надаётся значение от 0 до 9 (функцией range(10)). Дальше проверяется есть ли число i чётным (i%2==0). Функция not по сути делает противоположное: проверяет есть ли это число нечётным. Тогда если оно нечётнон, выводится на екран число на один больше него (т.е. чётное).

Я бы написал эту программу так:

for i in range(1, 11):
if i % 2 == 0:
print(i)

По сути она выводит то же самое, но код немного менше и понятней.

P.S. Эти программы не выдают в ответе 0, хотя 0 - тоже парное число.
Чтобы она выдавала еще и 0, просто надо убрать первый аргумент функции range():

for i in range(11):
if i % 2 == 0:
print(i)
Тогда она выведет 0,2,4,6,8,10.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота