1 / 1 / 1
Регистрация: 24.11.2012
Сообщений: 32
1

Описать базовый класс колоды карт и производный класс пасьянс

12.09.2013, 19:41. Показов 2820. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте! товарищи-программисты, помогите пожалуйста со следующим заданием:

Создать колоду карт. Конструкторы колоды должны инициализировать колоду упорядочено и случайным образом. Создать производный класс от колоды - пасьянс, в котором выбираются по три карты и, если две крайние одного цвета, то их выбрасывают. Всю колоду проходят три раза.

вот, что пока смог набросать:

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1karty
{
    class mass
    {
        int [] n;
        public mass()
        {
            n = new int[5];n[0]=5;
            for (int i = 1; i < 5; i++)
               n[i]=++n[i-1];
 
        }
        public int[] Getmass()
        {
            return n; 
        }
    }
    class koloda
    {
        enum mast { bubi, chervi, kresty, piki, df };
        mass ob=new mass();
        private string[,] name;
        public koloda()
        {
            
 
            name = new string[9,4];
            
 
        }
       public void init()
        {
          
         int[]   name1 = new int[5];        
            name1 = ob.Getmass();
 
            for (int j = 0; j < 4; j++)
            {
                name[0, j] = Convert.ToString(name1[j]) +" "+ mast.bubi;
                Console.WriteLine("цифры и масть" +" "+ name[0, j]);
            }
 
        }
    }
    class pasyans : koloda
    {
    }
    
    
    class Program
    {
        static void Main(string[] args)
        {
            koloda ob1 = new koloda();
            ob1.init();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2013, 19:41
Ответы с готовыми решениями:

Создать производный класс от колоды - пасьянс, в котором выбираются по три карты
Создать колоду карт.Создать производный класс от колоды - пасьянс, в котором выбираются по три...

Создать производный класс от колоды — пасьянс, в котором выбираются по три карты
Создать карту и использую композицию - колоду карт. Конструкторы колоды должны инициализировать...

Класс: Дописать производный класс, дополняющий базовый и содержащий минимум 2 функции-члена...
Составьте программу на языке С#, которая должна содержать: 1) базовый класс в соответствии с...

Описать базовый класс Point. Описать класс Прямоугольник от класса Point
Описать базовый класс Point - точка. Описать класс &quot;прямоугольник&quot;. Обязательные поля класса...

9
35 / 25 / 13
Регистрация: 12.02.2011
Сообщений: 178
Записей в блоге: 1
12.09.2013, 23:38 2
Создать производный класс от колоды - пасьянс, в котором выбираются по три карты тут посмотрите
0
Master of Orion
Эксперт .NET
6099 / 4955 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
13.09.2013, 00:13 3
logo424, Не самый лучший пример, еще и goto. ТС, лучше туда не смотрите. А про 5 мастей вы молодцы, конечно...

Добавлено через 18 минут
vehf, я бы делал это как-то так:
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
using System;
using System.Collections;
using System.Collections.Generic;
 
namespace ConsoleApplication151
{
    public static class ArrayHelper
    {
        private static readonly Random R = new Random();
        public static void Shuffle<T>(this T[] a)
        {
            for (int i = a.Length - 1; i > 0; i--)
            {
                int j = R.Next(i);
                T t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
    }
 
    public enum Suits
    {
        Spades, Clubs, Hearts, Diamonds
    }
 
    public enum Values
    {
        Two = 2, Three, Frour,Five,Six,Seven,Eight,Nine,Ten, Jack, Queen, King, Ace
    }
 
    public class Card
    {
        public readonly Suits Suit;
        public readonly Values Value;
 
        public Card(Suits suit, Values value)
        {
            Suit = suit;
            Value = value;
        }
 
        public override string ToString()
        {
            return Value + " of " + Suit;
        }
    }
 
    class DeckOfCards : IEnumerable<Card>
    {
        private const int CardsCount = 52;
        private readonly Card[] _cards;
 
 
        private static readonly Card[] SortedCards;
 
        static DeckOfCards()
        {
            SortedCards = new Card[CardsCount];
            int i = 0;
            foreach (Suits suit in Enum.GetValues(typeof(Suits)))
            {
                foreach (Values value in Enum.GetValues(typeof(Values)))
                {
                    SortedCards[i++] = new Card(suit, value);
                }
            }
        }
 
        public DeckOfCards()
        {
            _cards = (Card[]) SortedCards.Clone();
            _cards.Shuffle();
        }
 
 
        public IEnumerator<Card> GetEnumerator()
        {
            return ((IEnumerable<Card>) _cards).GetEnumerator();
        }
 
        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            var cards = new DeckOfCards();
            foreach (Card card in cards)
            {
                Console.WriteLine(card);
            }
            Console.ReadKey();
        }
    }
}
дальше сами
0
35 / 25 / 13
Регистрация: 12.02.2011
Сообщений: 178
Записей в блоге: 1
13.09.2013, 02:13 4
Цитата Сообщение от Psilon Посмотреть сообщение
logo424, Не самый лучший пример, еще и goto. ТС, лучше туда не смотрите. А про 5 мастей вы молодцы, конечно...
А чем goto плох?
0
Master of Orion
Эксперт .NET
6099 / 4955 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
13.09.2013, 02:17 5
logo424,

да так...

и вот так...
0
35 / 25 / 13
Регистрация: 12.02.2011
Сообщений: 178
Записей в блоге: 1
13.09.2013, 03:35 6
Цитата Сообщение от Psilon Посмотреть сообщение
А в 10м году я в паскале часто goto употреблял)
0
1 / 1 / 1
Регистрация: 24.11.2012
Сообщений: 32
13.09.2013, 08:45  [ТС] 7
решил сделать вот так:

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication4тупо
{
    
    class koloda
    {
       public string[] AllCards = { "6Ч", "6Б", "6П", "6К", "7Ч", "7Б", "7П", "7К", "8Ч", "8Б", "8П", "8К", "9Ч", "9Б", "9П", "9К", "10Ч", "10Б", "10П", "10К", "ВЧ", "ВБ", "ВП", "ВК", "ДЧ", "ДБ", "ДП", "ДК", "КЧ", "КБ", "КП", "КК", "ТЧ", "ТБ", "ТП", "ТК" };
       public string[] black = { "6П", "6К", "7П", "7К", "8П", "8К", "9П", "9К", "10П", "10К", "ВП", "ВК", "ДП", "ДК", "КП", "КК", "ТП", "ТК" };//карты чёрной масти
       public string[] white = { "6Ч", "6Б", "7Ч", "7Б", "8Ч", "8Б", "9Ч", "9Б", "10Ч", "10Б", "ВЧ", "ВБ", "ДЧ", "ДБ", "КЧ", "КБ", "ТЧ", "ТБ" };//карты белой масти
        public void ShowAllCards()  //показать все карты
        {
            foreach (string i in AllCards)
            {
                Console.Write(i + " ");
            }
            Console.WriteLine();
        }
 
       
 
        public void ShuffleCards()  //перетасовать карты
        {
            string temp = "";//временная переменная для хранения значения тусуемой карты
            int number1;    //номер первой карты
            int number2;    //номер второй карты
            Random rnd = new Random();
            for (int i = 0; i < 1000; i++)  //счетчик до 1000, чтобы лучше перетасовались :)
            {
                number1 = rnd.Next(0, 36);  //это будет первая карта   
                number2 = rnd.Next(0, 36);  //а это вторая
                temp = AllCards[number1];               //
                AllCards[number1] = AllCards[number2];  //меняем их местами
                AllCards[number2] = temp;               //
            }   //и так 1000 раз
        }
                       
    }
    class pasyans : koloda
    {
        
        void ShowCardByNumber(int number, int df, int er)
        {
            Console.WriteLine(AllCards[number - 1] + AllCards[df - 1] + AllCards[er - 1]);// вывести 3 карты
        }
        
        
        public void ShowCardByNumber2(int nu, int dfе, int erе)    //показать карту по середине если две крайние одного цвета
        {
            // Console.WriteLine(AllCards[number - 1] + AllCards[df - 1] + AllCards[er - 1]);
            
            string ss, aa, dd;
 
            ss = AllCards[nu - 1];
            aa = AllCards[dfе - 1];
            dd = AllCards[erе - 1];
            // string[] three = { ss, aa, dd };
 
            
            for (int i = 0; i < black.Length; i++)
            {
                for (int j = 0; j < white.Length; j++)
                {
                    if ((dd == black[i] & ss == black[i]) | (dd == white[j] & ss == white[j]))//пики и крести - черные, буби и черви - красные
                        
                        Console.WriteLine(AllCards[dfе - 1]);
                }
            }
 
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            koloda PC = new koloda();
            pasyans PC1 = new pasyans();
 
            Console.WriteLine("Вот вся колода:");
            PC.ShowAllCards();
            Console.WriteLine();
            PC.ShuffleCards();
            Console.WriteLine("Перетусуем колоду, теперь она выглядит вот так:");
            PC.ShowAllCards();
            Console.WriteLine();
            Console.WriteLine("Вот случайные 3 карты по счету:");
            PC1.ShowCardByNumber(5, 6, 7);
            Console.WriteLine();
            Console.WriteLine("Вот карта по середине:");
            PC1.ShowCardByNumber2(5, 6, 7);
            
        }
    }
}
вот только как вывести три карты;как вывести карту по середине если две крайние окажутся одного цвета(строки 63-69)???

и как понять "Всю колоду проходят три раза."?

Добавлено через 11 минут
и да то, что у меня white считайте как red)
0
Master of Orion
Эксперт .NET
6099 / 4955 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
13.09.2013, 09:58 8
vehf,
C#
1
for (int i = 0; i < 1000; i++)  //счетчик до 1000, чтобы лучше перетасовались :)
кое-что мне напомнило:
Ruby
1
2
3
def random():
    #  я думаю, 7 достаточно случайное число.
    return 7
0
1 / 1 / 1
Регистрация: 24.11.2012
Сообщений: 32
14.09.2013, 21:17  [ТС] 9
мои вопросы остаются открытыми
0
0 / 0 / 0
Регистрация: 08.05.2014
Сообщений: 33
01.06.2015, 10:51 10
Psilon, добрый день, помоги пожалуйста переконвертировать с С# на wxDev C++ эту же задачу, просто очень сильно надо, пожалуйста)
0
01.06.2015, 10:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2015, 10:51
Помогаю со студенческими работами здесь

Описать производный класс цилиндр
Помогите написать программу Описать производный класс цилиндр, добавив в него поле «высота» и...

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

Описать базовый класс Строка
Здравствуйте! Можете помочь написать программу : Описать базовый класс Строка. Обязательные поля...

Описать базовый класс строка C#
Описать базовый класс CStr - строка. Обязательные поля класса CStr: поле для хранения символов...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru