Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 17.01.2020
Сообщений: 4
1
.NET 4.x

Проблемы с пониманием алгоритма

28.02.2020, 13:44. Просмотров 276. Ответов 1


Господа Знающие!

Прошу вашей помощи, потому что каждый раз, натыкаясь на подобные "деревья" приходится доставать листочек с ручкой и пошагово разбирать подобные алгоритмы... Но все никак не могу перестроить мозг, чтобы начать уже понимать такие вещи, читая их.

Есть пример из Шилдта (вообще не знаю, каким чудом я до сюда дошёл...)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using System;
 
public interface ISeries {
    int GetNext(); // возвратить следующее по порядку число
    void Reset(); // перезапустить
    void SetStart(int х); // задать начальное значение
}
 
class Primes : ISeries {
    int start;
    int val;
 
    public Primes()  {
        start = 2;
        val = 2;
    }
 
    public int GetNext() {
        int i, j;
        bool isprime;
 
        val++;
        for(i = val; i < 1000000; i++) {
            isprime = true;
            for(j = 2; j <= i/j; j++) {
                if((i%j)==0) {
                    isprime = false;
                    break;
                }
            }
 
            if(isprime) {
                val = i;
                break;
            }
        }
        return val;
    }
 
    public void Reset() {
        val = start;
    }
 
    public void SetStart(int x) {
        start = x;
        val = start;
    }
}
 
// Продемонстрировать применение класса ByTwos, реализующего интерфейс.
class SeriesDemo {
    static void Main() {
        Primes ob = new Primes();
        for(int i=0; i < 5; i++)
            Console.WriteLine("Следующее число равно " + ob.GetNext());
 
        Console.WriteLine("\nСбросить");
        ob.Reset();
        for(int i=0; i < 5; i++)
            Console.WriteLine("Следующее число равно " + ob.GetNext());
 
        Console.WriteLine("\nНачать с числа 100");
        ob.SetStart(100);
        for(int i=0; i < 5; i++)
            Console.WriteLine("Следующее число равно " + ob.GetNext());
    }
}
И я постоянно запутываюсь в алгоритме действия метода GetNext(). Начинаю решать, понимаю, почему программа выдает 3, а потом сразу теряюсь. Помогите, пожалуйста, тупорезу. С этими циклами и до этого были проблемы, но я с горем пополам умудрялся их на уровне подсознания понимать, чисто интуитивно, но сейчас снова уткнулся и осознал - это никуда не годится... Просто не понимаю, как работает алгоритм. Проблема именно с пониманием работы метода...

Заранее благодарю за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2020, 13:44
Ответы с готовыми решениями:

Проблемы с пониманием Linq
Учу LINQ . Вопрос такого характера : public T this { get ...

Трудности с пониманием алгоритма фибоначчиева поиска
Не понимаю, что означает &quot;Обмен (P,H) с (H,P-H)&quot;. Какие действия нужно выполнить?

Проблемы с пониманием этого вашего С
Доброго времени суток, помогите измучевшемуся и страждущему так сказать... Счас вот разбираюсь...

Вычисление предела, проблемы с пониманием
дан предел функции \lim_{x\rightarrow \propto } \frac{sin^3 (ax)}{x^2} используя правило...

1
1822 / 1166 / 499
Регистрация: 14.10.2018
Сообщений: 3,177
28.02.2020, 17:10 2
Цитата Сообщение от kojiohidema Посмотреть сообщение
алгоритме действия метода GetNext()
метод находит простое число и запоминает его. При следующем вызове ищет новое простое число, которое больше предыдущего.
Цитата Сообщение от kojiohidema Посмотреть сообщение
С этими циклами и до этого были проблемы
Мой вам совет таков - бросьте Шилдта на время, и решайте все подряд задачи на массивы что есть на этом форуме. И не линком, не готовыми методами, а все вручную. Начнете щелкать такие задачи - значит логика начала лучше работать. Потом все задачи с рекурсией. Начнете щелкать эти задачи - значит логика развита достаточно (для понимая простых кодов точно хватит). Можно создать простую игру в консоли - лишним не будет. И только потом изучайте интерфейсы, линки, кортежи, исключения, коллекции и прочие прелести C#.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2020, 17:10

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Проблемы с пониманием вычислений по модулю
Подскажите, пожалуйста, у меня проблемы с пониманием вычислений по модулю. Я понимаю, что это за...

Проблемы с пониманием понятия рефлексивности
Не могу разобраться в терминологии. Рефлексивность отношения R на A определяется так: для любого а,...

Грамматика C++: книга Страуструпа, проблемы с пониманием - что предпринять?
Только начал учить С++ ,на данный момент читаю книгу Страуструпа и дошел до темы грамматики....

Плохо с пониманием
Работаю в компании помощником администратора. Компанию назовем 1234. Объясните а то не понял как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.