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

Информатика
Сложить в двоичную систему и перевести в десятичную
243 в пятеричной системе+7F2 в шестнадцатиричной системе =

Показать ответ
Ответ:
MHEBCEPOBHO
MHEBCEPOBHO
25.03.2020 14:01

Для вычисления алгебраического выражения, представленного текстом, требуется написать простенький анализатор этих самых выражений. Изначально мы имеет Выражение, из которого должны, с различных вычислений получить Число.

Для этого разберёмся, что же такое число и выражение, и какие они бывают.


Понятия и определения:

1) Число. Может быть целым или дробным. Запишем это так (в /.../ записано регулярное выражение для всех неотрицательных чисел, отрицательные рассмотрим, как выражение)

Число :- строка вида /[0-9]+(.[0-9]+)?/ или число на паскале

2) У Выражения можество определений. Во-первых, число само по себе тоже является выражением, возвращающим само себя. Во-вторых число {+,-,*,итд} выражение тоже являются выражением.

Набор рекурсивных определений:

Выражение :- Число

Выражение :- -Число

Выражение :- (Выражение)

Выражение :- Число + Выражение

Выражение :- Число - Выражение

Выражение :- Число * Выражение

Выражение :- Число \ Выражение


Список можно продолжить и для других математических операций.

Используя эти определения можно написать программу, которая реализует предикаты (функции) Число() и Выражение() (функции называй, как хочешь). Особенно удобно это делать на логических языках программирования по типу Prolog, так как её код очень похож на то, что записано выше.

Для паскаля же (или того же c++) нужно писать рекурсивную программу.

Далее псевдокод:

void ВывестиОшибку(){

Print("У тебя что-то не то с выражением!! Перепиши!");

}

real Число(string numb){

    if(/[0-9]+(.[0-9]+)?/.IsMatch(numb) <> true) ВывестиОшибку();

    return StrToInt(numb);

}

real Число(real numb){

    return numb;

}

real Выражение (string expr) {

    if(/[0-9]+(.[0-9]+)?/.IsMatch(expr)){

         // Вариант: число

         return Число(expr);

    }

    else if(/-[0-9]+(.[0-9]+)?/.IsMatch(expr)){

         // Вариант: -число

         return -Число(expr);

    }

    else if(/\((.+)\)/.IsMatch(expr)){

         // Вариант: (выражение)

         return Выражение(/\((.+)\)/.Match(expr)[1]); //Используя группы регулярных выражений вытаскиваем содержимое из скобок

    }

    else if(/([0-9]+(?.[0-9]+)?)\+(.+)/.IsMatch(expr)){

         // Вариант: число + выражение

         real numb = /([0-9]+(?.[0-9]+)?)\+(.+)/.Match(expr)[1]; // Вытаскиваем Число

         expr = /([0-9]+(?.[0-9]+)?)\+(.+)/.IsMatch(expr)[2]; // Вытаскиваем Выражение

         return Число(numb) + Выражение(expr); // Складываем

    } else if (...далее для остальных (-,*,/) знаков...) {}

   else {

         //Если ничего не подошло, значит ошибка в выражении.

        ВывестиОшибку();

   }

}


P.S. В выражении не может быть пробелов. Если нужна поддержка пробелов, подкорректируй регулярки.

0,0(0 оценок)
Ответ:
20042007rbn
20042007rbn
25.04.2023 06:20
Для решения определим 
1. Время передачи по высокоскоростному каналу
2. Время передачи по низкоскоростному каналу
3. Время для получения первых 1024 Кб
4. Всё сложим.

2^20 бит/с = 2^20 / 8 / 1024 Кбайт/с = 2^20 / 2^3 / 2^10 = 2^7 Кбайт/с
2^13 бит/с = 2^13 / 8 / 1024 Кбайт/с = 2^13 / 2^3 / 2^10 = 2^0 = 1 Кбайт/с
10 Мб равно 10*1024 Кбайт = 10*2^10 Кбайт.

По высокоскоростному каналу файл будет передаваться
(10*2^10) / 2^7 = 10*2^3 = 80 секунд

По низкоскоростному каналу файл будет передаваться
(10*2^10) / 1 = 10*2^10 = 10240 секунд.

Первые 1024 Кбайт будут передаваться
2^10 / 2^7 = 8 секунд

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