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

Написать ОБЯЗАТЕЛЬНО через строки ИЛИ через СЛОВАРИ (лучше через словари, конечно) Напишите программу, которая считывает символ и выводит текст, аналогичный приведённому в примере. Пробелы, знаки препинания, заглавные и строчные буквы важны! Ваша программа должна прочитать со стандартного потока ввода или из файла input.txt один символ. Гарантируется, что у этого символа ASCII код находится в диапазоне от 33 до 126.
Вывести текст, аналогичный примеру внизу. В скобках указываются ASCII коды соответствующих символов.
Примеры:
вводится В
Выводится The next char for 'B' (66) is 'C' (67).
The previous char for 'B' (66) is 'A' (65).


Написать ОБЯЗАТЕЛЬНО через строки ИЛИ через СЛОВАРИ (лучше через словари, конечно) Напишите программ

👇
Открыть все ответы
Ответ:
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.
4,4(51 оценок)
Ответ:
Russkikh11
Russkikh11
08.10.2022
Вопрос с подвохом, пропускная меряется не от возможной передачи на стороне провайдера или пользователя, а от версии протокола 2СH (2 цэ-аш). Рассмотрим 2 последние версии. Протокол 2015 года поддерживал пропускную вплоть до 20 MB/WEBM. Стандарт нового протокола поразили многих экспертов, скорость была снижена вдвое. Но сделано это было в связи с отказом многих производителей сетевого оборудования устанавливать расширяющие микросхемы PassCODE для поддержки тех самых 20 MB/WEBM. Может в будущем, с большим распространением PassCODE пропускную поднимут, но пока приходится с этими ограничениями смирится и перекодировать WEBM что несомненно, приведет к ухудшению их качества. 
4,8(70 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ