Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 12.01.2014
Сообщений: 13
1

Создать базовый класс для генерации последовательностей чисел и 3 дочерних: Фибоначчи, трибоначчи и Люка

22.08.2014, 20:53. Просмотров 924. Ответов 8
Метки нет (Все метки)

Ребята - программисты помогите пожалуйста. Нужно сделать программу, в которой будет базовый класс для генерации последовательностей чисел и 3 дочерних класса реализующих последовательности Фибоначчи, трибоначчи и Люка. Сама программа будет просить ввести количество чисел N, создавать по очереди все 3 класса, генерировать списки чисел и выводить их на экран.

Мой код:

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Math;
using System.Object;
using.System.Random;
 
 
namespace Zadacha
{
    
    public class Fibonachi
    {
        Random rand = new Random();
        int N = Random.Next(0, 1000);
        public int N;
        Console.WriteLine("Vvedite N:" + N);
        long n;
        //Fibonachi = override.Fib;
        F0 = 0;
        F1 = 1;
        //for((Fibonachi = F(N - 1) + F(N - 2)); 
        
        for(int i = 0; int < N;)
 
    }
}
П.С. Я только учусь программировать, критика принимается любая
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2014, 20:53
Ответы с готовыми решениями:

Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями
Здравствуйте, пожалуйста помогите написать код к данной задаче, с таким условием: Создать...

Создать базовый класс - Array и производный класс - Money для работы денежной суммы
ПОМОГИТЕ, ПОЖАЛУЙСТА, С ЗАДАЧЕЙ Создать базовый класс - Array и производный класс - Money для...

Класс для генерации чисел
Помогите создать класс для генерации целых и вещественных случайных чисел из заданного диапазона

Фибоначчи-Трибоначчи
Ребята, подсобите немного, если не сложно. Требуется для вводимого числа построить значения...

8
91 / 90 / 37
Регистрация: 05.08.2011
Сообщений: 428
23.08.2014, 01:24 2
Sanya931, Эмм, а кто Вам дал такое задание? Или вы занимаетесь по учебнику? Для начала, я думаю, стоит выучить азы хоть какие то) Судя по вашему коду, вы сначала создаете переменную N и заполняете её:
int N = Random.Next(0, 1000);
а потом опять инициируете эту же переменную : public int N;
Для чего? Выполнить за вас задание можно, но для чего?
1
867 / 717 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
23.08.2014, 01:32 3
Как минимум код должен быть в функции.
Берете книгу по C# и читаете с самого начала, иначе ничего не выйдет.
1
3 / 3 / 2
Регистрация: 25.12.2013
Сообщений: 86
23.08.2014, 01:59 4
Или смотрите видео на ютубе)
1
0 / 0 / 0
Регистрация: 12.01.2014
Сообщений: 13
23.08.2014, 12:05  [ТС] 5
Какую толковую книгу посоветуете?
0
147 / 73 / 17
Регистрация: 31.05.2014
Сообщений: 215
23.08.2014, 12:44 6
Sanya931, я бы так реализовывал если бы требовалось обязательное разделение на классы.
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication12
{
    interface Isequence
    {
        int Next();
        int this[int num] { get; }
        int GetNumber();
    }
    class Fibonachi:Isequence
    {
        int[] F = { 1, 1 };
        int num = 0;
        public int Next()
        { 
            num++;
            if (num <= F.Length)
                return F[num-1];
            else
            {
                int t = F[0] + F[1];
                F[0] = F[1];
                F[1] = t;
                return t;
            }
        }
        public int GetNumber()
        {
            return num;
        }
        public int this[int index]
        {
            get
            {
                F =new int[] { 1, 1 };
                for (int i = 1; i < index; i++)
                    Next();
                return Next();
            }
        }
    }
    class Tribonachi : Isequence
    {
        int[] T = { 0, 0, 1 };
        int num = 0;
        public int Next()
        {
            num++;
            if (num <= T.Length)
                return T[num-1];
            else
            {
                int t = T[0] + T[1] + T[2];
                T[0] = T[1];
                T[1] = T[2];
                T[2] = t;
                return t;
            }
        }
        public int GetNumber()
        {
            return num;
        }
        public int this[int index]
        {
            get
            {
                T = new int[] { 0,0, 1 };
                for (int i = 1; i < index; i++)
                    Next();
                return Next();
            }
        }
    }
    class Luka
    {
        int[] L = { 2, 1 };
        int num = 0;
        public int Next()
        {
            num++;
            if (num <= L.Length)
                return L[num-1];
            else
            {
                int t = L[0] + L[1];
                L[0] = L[1];
                L[1] = t;
                return t;
            }
        }
        public int GetNumber()
        {
            return num;
        }
        public int this[int index]
        {
            get
            {
                L = new int[] { 2, 1 };
                for (int i = 1; i < index; i++)
                    Next();
                return Next();
            }
        }
    }
    class Sequence: Isequence
    {
        Isequence sequence;
        public Sequence(Isequence sequence)
        {
            this.sequence = sequence;
        }
        public int Next()
        {
            return sequence.Next();
        }
        public int GetNumber()
        {
            return sequence.GetNumber();
        }
        public int this[int index]
        {
            get
            {
                if (index > 0)
                    return sequence[index];
                else
                {
                    Console.WriteLine("В данной программе нереализована реализация отрицательной части последовательности");
                    throw new InvalidOperationException();
                }
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Sequence sequence = new Sequence(new Fibonachi());
            for (int i = 1; i < 20; i++)
                Console.Write(sequence.Next() + " ");
        }
    }
}
Может быть даже через абстрактный класс было бы лучше, но я их не люблю применять.
А так почитай-те C# полное руководство или Изучаем C#.

Добавлено через 4 минуты
А так для таких последовательностей лучше один класс создать - они отличаются только начальными элементами
1
867 / 717 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
23.08.2014, 20:30 7
rutelun,
По сути вы своим Isequence разработали заново IEnumerator.

Sanya931,
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
internal static class Program
    {
        public static void Main(string[] args)
        {
            var fibo = new FibonacciEnumerable();
            foreach (var v in fibo)
            {
                Console.WriteLine(v);
            }
 
            var enumerable = fibo.Take(10);
            foreach (var i in enumerable)
            {
                Console.WriteLine(i);
            }
        }
    }
 
    class FibonacciEnumerable : IEnumerable<int>
    {
        public IEnumerator<int> GetEnumerator()
        {
            int first = 0;
            yield return first;
            int second = 1;
            yield return second;
            while (first + second > 0)
            {
                int k = first + second;
                first = second;
                second = k;
                yield return second;
            }
        }
 
        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    }
2
foo();
880 / 582 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
24.08.2014, 22:59 8
В общем просто оставлю это здесь. Вычисление числовых последовательностей с сохранением
Кликните здесь для просмотра всего текста
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
abstract class NumberSequence : IEnumerable<int>
{
    protected List<int> Cache;
    protected Func<int> SetNext; 
    public int this[int n]
    {
        get
        {
            while (n >= Cache.Count)
            {
                SetNext();
            }
            return Cache[n];
        }
    }
 
 
 
    public IEnumerator<int> GetEnumerator()
    {
        foreach (var n in Cache)
        {
            yield return n;
        }
        while (true)
        {
            yield return SetNext();
        }
    }
 
    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}
 
class Fibonacci : NumberSequence
{
    public Fibonacci()
    {
        Cache = new List<int> {0, 1};
        SetNext = () =>
        {
            int n = Cache.Count;
            var result = Cache[n - 1] + Cache[n - 2];
            Cache.Add(result);
            return result;
        };
    }
}
 
class Tribonacci : NumberSequence
{
    public Tribonacci()
    {
        Cache = new List<int> { 0, 0, 1 };
        SetNext = () =>
        {
            int n = Cache.Count;
            var result = Cache[n - 1] + Cache[n - 2] + Cache[n - 3];
            Cache.Add(result);
            return result;
        };
    }
}
С проектированием только начинаю знакомиться, если будут замечания - с удовольствием выслушаю!
1
867 / 717 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
25.08.2014, 00:06 9
rattrapper,
В классах наследниках вообще можно только задать начальную последовательность, и кол-во суммируемых элементов на итерации.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2014, 00:06

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

Создать абстрактный базовый класс для числовых типов
Создать абстрактный базовый класс Число с виртуальной функцией изменения знака числа. Создать...

Как объявить функцию, которая имеет место быть только в некоторых дочерних классах, а базовый класс абстрактный?
Как объявить функцию, которая имеет место быть только в некоторых дочерних классах? Например ...

Создать класс - данные - абстрактный базовый класс. Создать производные классы
Всем привет! У меня вот такая проблема.... Создать класс - данные - абстрактный базовый класс....

Создать шаблонную функцию для генерации рандомных чисел
Есть код, который заполняет вектор случайными значениями типа int. Можно ли сделать шаблон для...


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

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

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