Сколько чисел из интервала от 777777 до 888888 включительно делятся без остатка и на сумму своих различных цифр, и на их количество? Пример: у числа 3132 три различных цифры, 3, 1 и 2. 3132 делится и на их количество (3) и на их сумму (6).
Метод - це невелика підпрограма, яка виконує, в ідеалі, тільки одну функцію. Методи дозволяють скоротити обсяг коду. Методи разом з полями, є основними членами класу.Раніше, ми вже розглядали методи в уроці Функції в Сі-шарп, але зараз ми розглянемо їх під іншим кутом. В тому уроці ми розглядали статичні методи, а в цьому поговоримо про прості, і про різницю між ними.
Статичний метод - це метод, який не має доступу до полів об'єкта, і для виклику такого методу не потрібно створювати екземпляр (об'єкт) класу, в якому він оголошений.
Простий метод - це метод, який має доступ до даних об'єкта, і його виклик виконується через об'єкт. Прості методи служать для обробки внутрішніх даних об'єкта.
Наведу приклад використання простого методу. Клас Телевізор, у нього є поле switchedOn, яке відображає стан включений / виключений, і два методи - включення і виключення:
Щоб викликати простий метод, перед його ім'ям, вказується ім'я об'єкта. Для виклику статичного методу необхідно вказувати ім'я класу.
Статичні методи, зазвичай, виконують якусь глобальну, загальну функцію, обробляють «зовнішні дані». Наприклад, сортування масиву, обробка рядка, зведення числа в ступінь і інше.
Приклад статичного методу, який обрізає рядок до вказаної довжини, і додає крапки:
class StringHelper
{
public static string TrimIt(string s, int max)
{
if (s == null)
return string.Empty;
if (s.Length <= max)
return s;
return s.Substring(0, max) + "...";
}
}
class Program
{
static void Main(string[] args)
{
string s ="Дуже довгий рядок, який необхідно обрізати до зазначеної довжини і додати три крапки";
Console.WriteLine(StringHelper.TrimIt(s, 20)); //"Дуже довгий рядок ..."
Console.ReadLine();
}
}
Статичний метод не має доступу до нестатичних полів класу:
Ты проверяешь 100 чисел от 1 до 100 (строка про i for i:=1 to 100 do) и ниже у тебя 2 условия
if (i div 4 =20) or (i mod 3 = 1) then
k:=k+1
это условие говорит, что если i div 4=20 или i mod 3=1 тогда ты k увеливаешь на 1. То есть если число подходит хотя бы по 1 из условий ты увеливаешь k на единицу
div это целая часть от деления или по другому чтоб было понятнее то что в числе до запятой. Допустим 7 div 3 =2 так как 7 делить на 3=2,33 но целая часть это 2
Так вот по нашему первому условию подойдут числа 80 81 82 83 потому что их целая часть от деления на 4 будет равна 20
Во втором условии i mod 3=1 mod это остаток от деления но это уже не то что после запятой а именно остаток. Как столбиком поделишь то что будет в остатке это mod. Например 10 mod 3 =1 так как 10 делить на 3 это будет 3 целых и 1 в остатке.
Так вот по нашему второму условию подходят все числа от 1 до 100 в которых после деления на 3 останется 1. Это числа 1 4 7 10 13... 82 85 88 91 94 97 100. Заметь что число 82 подходило и по первому условию так что его 2 раза не считаем. И после каждого подходящего такого числа мы к увеливаем на 1. Всего таких чисел 37 а нам надо вывести значение к которое будет равно количеству этих чисел. Сами числа написаны в ответе
А10
Так как s не присвоили никакого значения значит s изначально 0
Даны элементы массива B[1] B[2] B[3] B[4] B[5] B[6] B[7]
k:=-5
Ты снова проверяешь 7 элементов (строка for n:=1 to 7 do) сначала первый потом 2 потом 3 и тд до 7
B[n] сначала будет B[1] так как n cначала проверяешь первый элемент массива
B[n]:=k+n;
то есть сначала повторяюсь проверяешь B[1]
B[1]:= -5+1=-4
k:=k+1 то есть k:=-5+1 =-4
s:=s+2*B[1]=0+2*(-4)=-8
Теперь проверяем n=2
B[2]: = k+n k уже равно -4 а n равно 2
B[2] :=-4+2 =-2
k:=-4+1=-3
s:= -8+2*(-2)=-12
B[3]=-3+3=0
k:=-2
s:=-12+2*0=-12
B[4]:=-2+4=2
k:=-1
s:=-12+2*2=-8
B[5]:=-1+5=4
k:=0;
s:=-8+2*4=0
B[6]:=6
k:=1
s:=0+2*6=12
B[7]=1+7=8
k:=2
s:=12+2*8=28
В итоге значение s 28
Надеюсь, что понятно объяснил. И заранее извиняюсь за грамотность-лениво столько писать и расставлять запятые)
Объяснение:
Метод - це невелика підпрограма, яка виконує, в ідеалі, тільки одну функцію. Методи дозволяють скоротити обсяг коду. Методи разом з полями, є основними членами класу.Раніше, ми вже розглядали методи в уроці Функції в Сі-шарп, але зараз ми розглянемо їх під іншим кутом. В тому уроці ми розглядали статичні методи, а в цьому поговоримо про прості, і про різницю між ними.
Статичний метод - це метод, який не має доступу до полів об'єкта, і для виклику такого методу не потрібно створювати екземпляр (об'єкт) класу, в якому він оголошений.
Простий метод - це метод, який має доступ до даних об'єкта, і його виклик виконується через об'єкт. Прості методи служать для обробки внутрішніх даних об'єкта.
Наведу приклад використання простого методу. Клас Телевізор, у нього є поле switchedOn, яке відображає стан включений / виключений, і два методи - включення і виключення:
class TVSet
{
private bool switchedOn;
public void SwitchOn()
{
switchedOn = true;
}
public void SwitchOff()
{
switchedOn = false;
}
}
class Program
{
static void Main(string[] args)
{
TVSet myTV = new TVSet();
myTV.SwitchOn(); // включаємо телевізор, switchedOn = true;
myTV.SwitchOff(); // виключаємо телевізор, switchedOn = false;
}
}
Щоб викликати простий метод, перед його ім'ям, вказується ім'я об'єкта. Для виклику статичного методу необхідно вказувати ім'я класу.
Статичні методи, зазвичай, виконують якусь глобальну, загальну функцію, обробляють «зовнішні дані». Наприклад, сортування масиву, обробка рядка, зведення числа в ступінь і інше.
Приклад статичного методу, який обрізає рядок до вказаної довжини, і додає крапки:
class StringHelper
{
public static string TrimIt(string s, int max)
{
if (s == null)
return string.Empty;
if (s.Length <= max)
return s;
return s.Substring(0, max) + "...";
}
}
class Program
{
static void Main(string[] args)
{
string s ="Дуже довгий рядок, який необхідно обрізати до зазначеної довжини і додати три крапки";
Console.WriteLine(StringHelper.TrimIt(s, 20)); //"Дуже довгий рядок ..."
Console.ReadLine();
}
}
Статичний метод не має доступу до нестатичних полів класу:
class SomeClass
{
private int a;
private static int b;
public static void SomeMethod()
{
a=5; // помилка
b=10; // допустимо
}
}
А9)1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 80 81 82 83 85 88 91 94 97 100
A10) 28
Объяснение:
А9
k:=0
Ты проверяешь 100 чисел от 1 до 100 (строка про i for i:=1 to 100 do) и ниже у тебя 2 условия
if (i div 4 =20) or (i mod 3 = 1) then
k:=k+1
это условие говорит, что если i div 4=20 или i mod 3=1 тогда ты k увеливаешь на 1. То есть если число подходит хотя бы по 1 из условий ты увеливаешь k на единицу
div это целая часть от деления или по другому чтоб было понятнее то что в числе до запятой. Допустим 7 div 3 =2 так как 7 делить на 3=2,33 но целая часть это 2
Так вот по нашему первому условию подойдут числа 80 81 82 83 потому что их целая часть от деления на 4 будет равна 20
Во втором условии i mod 3=1 mod это остаток от деления но это уже не то что после запятой а именно остаток. Как столбиком поделишь то что будет в остатке это mod. Например 10 mod 3 =1 так как 10 делить на 3 это будет 3 целых и 1 в остатке.
Так вот по нашему второму условию подходят все числа от 1 до 100 в которых после деления на 3 останется 1. Это числа 1 4 7 10 13... 82 85 88 91 94 97 100. Заметь что число 82 подходило и по первому условию так что его 2 раза не считаем. И после каждого подходящего такого числа мы к увеливаем на 1. Всего таких чисел 37 а нам надо вывести значение к которое будет равно количеству этих чисел. Сами числа написаны в ответе
А10
Так как s не присвоили никакого значения значит s изначально 0
Даны элементы массива B[1] B[2] B[3] B[4] B[5] B[6] B[7]
k:=-5
Ты снова проверяешь 7 элементов (строка for n:=1 to 7 do) сначала первый потом 2 потом 3 и тд до 7
B[n] сначала будет B[1] так как n cначала проверяешь первый элемент массива
B[n]:=k+n;
то есть сначала повторяюсь проверяешь B[1]
B[1]:= -5+1=-4
k:=k+1 то есть k:=-5+1 =-4
s:=s+2*B[1]=0+2*(-4)=-8
Теперь проверяем n=2
B[2]: = k+n k уже равно -4 а n равно 2
B[2] :=-4+2 =-2
k:=-4+1=-3
s:= -8+2*(-2)=-12
B[3]=-3+3=0
k:=-2
s:=-12+2*0=-12
B[4]:=-2+4=2
k:=-1
s:=-12+2*2=-8
B[5]:=-1+5=4
k:=0;
s:=-8+2*4=0
B[6]:=6
k:=1
s:=0+2*6=12
B[7]=1+7=8
k:=2
s:=12+2*8=28
В итоге значение s 28
Надеюсь, что понятно объяснил. И заранее извиняюсь за грамотность-лениво столько писать и расставлять запятые)