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

Заднаие такое : создать абстрактный класс function с методом вычисления значения функции y=f(x) в заданной точке.
создать производные классы: line (y=ax+b), kub (y=ax2+bx+c), hyperbola ( ) со своими вычисления значения в заданной точке.
создать массив n функций и вывести полную информацию о значении данных функций в точке х. код у меня есть.
напишите комментарии к этому коду
abstract class function
{
protected abstract double func(double x);
public double count(double x)
{
return func(x);
}
}

class line : function
{
public readonly double a;
public readonly double b;

public line(double a, double b)
{
a = a;
b = b;
}

protected override double func(double x)
{
return a * x + b;
}
}
class kub : function
{
public readonly double a;
public readonly double b;
public readonly double c;

public kub(double a, double b, double c)
{
a = a;
b = b;
c = c;
}

protected override double func(double x)
{
return a * x * x + b * x + c;
}
}
class hyperbola : function
{
public readonly double a;

public hyperbola(double a)
{
a = a;
}

protected override double func(double x)
{
return a / x;
}
}
class program
{
static void main(string[] args)
{
function[] func = new function[3];
func[0] = new line(2, 3);
func[1] = new kub(2, 3, 4);
func[2] = new hyperbola(3);
double x = 3.6;
foreach (function f in func)
console.writeline("значение функции {0} для x = {1} равно {2}", f. x, f.count(x));

}
}

Показать ответ
Ответ:
85Angel85
85Angel85
17.11.2020 01:01
R=A+B+C, где
A=53₁₀,
B=653₈,
C=DA₁₆,
R=R₂
Эту задачу можно решать разными выбор зависит от умения решающего выполнять сложение в той или иной системе счисления. Но в любом варианте, сначала нужно представить А, В, С в какой-то одной системе счисления.

Посмотрим, как это будет выглядеть, если пользоваться привычной нам десятичной системой.
653₈ = 6·8²+5·8¹+3·8⁰ = 6·64+5·8+3 = 427
DA₁₆ = 13·16¹+10·16⁰ = 218
R₁₀ = 53+427+218 = 698
Переводим полученное число в двоичную систему, получая R₂:
698/2=349, остаток 0
349/2=174, остаток 1
174/2=87, остаток 0
87/2=43, остаток 1
43/2 =21, остаток 1
21/2=10, остаток 1
10/2=5, остаток 0
5/2=2, остаток 1
2/2=1, остаток 0
1/2=0, остаток 1
Выписываем остатки в обратном порядке: 1010111010.
Это и есть ответ.

А теперь допустим, что мы хорошо владеем восьмеричной системой счисления.
1) получим А₈
53/8=6, остаток 5
6/8=0, остаток 6
Выписываем остатки в обратном порядке: А₈=65
2) получим С₈, для чего перейдем сначала в двоичную систему
С₂=1101 1010 (просто заменяем каждую цифру четырьмя двоичными).
А теперь разобьем справа налево полученное значение по три разряда и каждую полученную триаду заменим восьмеричной цифрой.
11 011 010₂ = 332₈
3) Выполним сложение R₈=A₈+B₈+C₈
    65          740
+653        +332
       
  740        1272
Складывать в восьмеричной системе просто, если знать одну маленькую хитрость. 8 отличается от 10 на 2, поэтому и результат сложения в восьмеричной системе на 2 больше, чем в десятичной, если число превышает 7. Смотрим: 5+3=8, но это в десятичной, а в восьмеричной это на 2 больше, т.е. 10. Поэтому мы пишем 0 и +1 идет в следующий разряд. 6+5=11 и еще +1 от переноса, итого 12. Но в восьмеричной на 2 больше, т.е. 14. 4 пишем. +1 перенос. 6 и +1 от переноса - 7. Вот и получили 740.
4) Мы нашли R₈, переходим к R₂.
Заменяем каждую восьмеричную цифру тремя двоичными:
1272₈=1 010 111 010₂
Мы получили тот же ответ, что и в предыдущем расчета.

Так что - дело привычки. Второй вариант кажется "непосвященному" сложнее, но на самом деле в нем меньше арифметики и если нет под рукой калькулятора, то может оказаться и быстрее, и удобнее.

ответ: 1010111010
0,0(0 оценок)
Ответ:
али421
али421
12.04.2023 12:47
DIM m AS INTEGER, n AS INTEGER
CLS
INPUT "n,m=", n, m
REDIM a(1 TO n, 1 TO m) AS INTEGER
imin = 1: jmin = 1: imax = 1: jmax = 1
RANDOMIZE TIMER
FOR i = 1 TO n
   FOR j = 1 TO m
      t = INT(51 * RND): a(i, j) = t
      PRINT t;
      IF a(imin, jmin) > t THEN
         imin = i: jmin = j
      END IF
      IF a(imax, jmax) < t THEN
         imax = i: jmax = j
      END IF
   NEXT j
   PRINT
NEXT i
PRINT "Sum="; imin + jmin + imax + jmax

Тестовое решение
n,m=8,5
 46  23  13  43  35
 18  47  44  41  37
 45  0  34  30  7
 0  28  27  49  47
 46  18  48  39  11
 2  17  32  43  38
 31  43  15  16  16
 30  32  46  9  31
Sum= 13
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота