Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/105: Рейтинг темы: голосов - 105, средняя оценка - 4.94
enrique
1 / 1 / 1
Регистрация: 21.05.2009
Сообщений: 13
#1

Массив классов

04.08.2009, 14:14. Просмотров 19266. Ответов 11
Метки нет (Все метки)

Помогите пожалуйста мне нужен массив классов но я не знаю как его заполнить
правильно. Подскажите
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
 
namespace ConsoleApplication1
{
    public class Garage:IEnumerable
    {
        public string machina;
        public int sp;
        protected int size;
        protected int index;
        public Car[] carArray;
        public Garage(int size)
        {
            carArray = new Car[size];
        }
        public void AddCar(int index, string machina, int sp)
        {
            carArray[index] = new Car(machina, sp);
        }
 
        #region Члены IEnumerable
 
        public IEnumerator GetEnumerator()
        {
            return carArray.GetEnumerator();
        }
 
        #endregion
 
       
    }
    public class Car  
    {
        protected string marka;
        protected int speed;         
        public Car(string marka, int speed)
        {
            this.marka = marka;
            this.speed = speed;
        }
 
        
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите количество машин в гараже: ");
            int n = Convert.ToInt32(Console.ReadLine());
            Garage x1 = new Garage(n);
            for (int i = 0; i < n; i++)
            {
                Console.Write("Марка машин: ");
                string machina = Console.ReadLine();
                Console.Write("Скорость машины: ");
                int sp = Convert.ToInt32(Console.ReadLine());
                x1.AddCar(i, machina, sp);
            }
 
            Console.WriteLine("\n");
            Console.WriteLine("Просмотр машин в гараже");
            foreach (Car с in x1)
            {
                Console.WriteLine("Марка {0} в гараже и ее скорость {1}", x1.machina, x1.sp);
            }
        }
 
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2009, 14:14
Ответы с готовыми решениями:

Динамический массив классов - способы и примеры реализации
Доброго времени суток. Возникла небольшая проблема связанная с не знанием...

Взаимодействие классов
Здравствуйте. Сложившаяся ситуация - у меня есть главный класс, который...

Наследование классов C#
Приветствую! Как сделать вот такое наследование классов (в приложенном файле)...

Хранение классов
В чем отличие хранения классов в исполняемом файле или в dll? Что лучше, как...

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

11
max_cn
84 / 83 / 6
Регистрация: 13.07.2009
Сообщений: 107
04.08.2009, 18:42 #2
enrique, Есть подозрение, что ты не правильно сформулировал свою проблему в названии темы, ибо в твоем примере два класса, один из которых принято называть классом-контейнером (контейнерным классом, контейнером), а в заголовке указано всего лишь желание заполнить массив классов. Если бы просто стояло задание заполнить массив классов, было бы достаточно написать так:
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
    public class Car  
    {
        protected string marka;
        public string Marka
        {
           get { return marka; }
        }
        protected int speed;         
        public string Speed
        {
           get { return speed; }
        }
        public Car(string marka, int speed)
        {
            this.marka = marka;
            this.speed = speed;
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите количество машин в гараже: ");
            int n = Convert.ToInt32(Console.ReadLine());
            
            Car[] Garage=new Car[n];
            for (int i = 0; i < n; i++)
            {
                Console.Write("Марка машин: ");
                string machina = Console.ReadLine();
                Console.Write("Скорость машины: ");
                int sp = Convert.ToInt32(Console.ReadLine());
                Garage[i]=new Car(machina, sp);
            }
 
            Console.WriteLine("\n");
            Console.WriteLine("Просмотр машин в гараже");
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine("Марка {0} в гараже и ее скорость {1}", Garage[i].Marka, Garage[i].Speed);
            }
        }
 
    }
Чуть позднее напишу пример нормального контейнера
1
enrique
1 / 1 / 1
Регистрация: 21.05.2009
Сообщений: 13
04.08.2009, 19:12  [ТС] #3
Спасибо конечно но понимаешь мне нужно чтобы класс Garage содержал массив объектов Car. Ну и я мог бы работать с этим массивом (ну там сортировать, выводить), подскажи пожалуйста если знаешь.
0
Delphin_KKC
UNIX-way
710 / 494 / 49
Регистрация: 15.01.2009
Сообщений: 1,721
04.08.2009, 19:16 #4
Цитата Сообщение от enrique Посмотреть сообщение
Спасибо конечно но понимаешь мне нужно чтобы класс Garage содержал массив объектов Car. Ну и я мог бы работать с этим массивом (ну там сортировать, выводить), подскажи пожалуйста если знаешь.
Объяви массив указателей на объекты нужного класса, а в конструкторе инициализируй их (не забудь в деструкторе убить).
1
ISergey
Maniac
Эксперт С++
1408 / 919 / 148
Регистрация: 02.01.2009
Сообщений: 2,749
Записей в блоге: 1
04.08.2009, 19:18 #5
На заметку..
Массив классов - такого понятия нету.. Правильно массив объектов класса
1
max_cn
84 / 83 / 6
Регистрация: 13.07.2009
Сообщений: 107
04.08.2009, 19:46 #6
После того, как дан ответ на вопрос, который указан в теме раздела, я все же, на основании попытки реализации автора, покажу, что скорее всего подразумевалось в задании .

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

Не по теме:

Да уж извинят меня продвинутые программеры, что я тут пишу прописные истины, но я как бы сам в C# новичек (начал изучать менее 2 месяцев назад), ко всему этому пришел сам, правда на основании солидного опыта в игровое индустрии ;). Так вот, может кто в последствии предложит что и более оптимальное.



Словари это классы которые могут содержать 2 поля, одно из которых является уникальным (ключевым), а второе можеть тоже быть произвольного типа и как бы отображает суть ключевого поля.
Пример:
В моем игровом движке есть возможность выводить тексты различными шрифтами. В зависимости от используемой технологии каждый шрифт представляет собой объект определенного типа.
Но оперировать ссылками на объекты совершенно не удобно (особенно когда конкретизация шрифта идет не в коде, а в скриптах или вообще во внешних данных), по этому я назначаю каждому такому объекту текстовое поле-идентификатор. И далее, когда мне нужно, обращаясь по этому текстовому полю, получаю соответствующий объект-шрифт.
Для этих целей можно использовать стандартный класс Dictionary<TKey, TValue> , но меня в нем не устроило то, что он не дает возможности нормально обращаться к элементам по индексу(как к простому массиву), по этому я написал свой. Ну а так как, хранится в таком словаре могут ключи и значения любого типа, я создал этот класс как generic:

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
  //класс для хранения элемента контейнера
  public class EasyDictionaryElem<TKey,TValue> where TKey:IComparable 
  {
    protected TKey key;
    public TKey Key
    {
      get { return key; }
    }
    protected TValue value;
    public TValue Value
    {
      get { return value; }
      set { this.value=value; }
    }
    
    public EasyDictionaryElem(TKey key,TValue value)
    {
      this.key=key;
      this.value=value;
    }
 
    public void Dispose()
    {
      if (value is IDisposable) ((IDisposable)value).Dispose();
    }
 
    ~EasyDictionaryElem()
    {
      Dispose();
    }
  }
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
  //основной класс контейнер
  //содержимое хранится в отсортированном виде, порядок сортировки можно выбирать
  //можно индексировать как обычный массив
  //только что заметил нету проверки на уникальность ключа - нужно будет добавить,
  // а так за одно будет мини задание для того, кто захочет разобраться, как все это работает ;)
  public class EasyDictionary<TKey,TValue> where TKey:IComparable
  {
    List<EasyDictionaryElem<TKey,TValue>> list;
 
    //порядок сортировки: 1 - прямой; -1 - обратный
    private int order;
    public int Order
    {
      get { return order; }
    }
    //количество элементов коллекции
    public int Count
    {
      get { return list.Count; }
    }
 
    public EasyDictionary():this(false)
    {
    }
    public EasyDictionary(bool backOrder)
    {
      order=backOrder?-1:1;
      list=new List<EasyDictionaryElem<TKey,TValue>>();
    }
    ~EasyDictionary()
    {
      Dispose();
    }
 
    //добавить элемент
    public bool Add(TKey key,TValue value)
    {
      int pos=Search4key(key,true);
      if (pos>=0)
      {
        EasyDictionaryElem<TKey,TValue> elem=
          new EasyDictionaryElem<TKey,TValue>(key,value);
        list.Insert(pos,elem);
        return true;
      }
      return false;
    }
 
    //удалить элемент по ключу
    public bool Delete(TKey key)
    {
      int pos=Search4key(key,false);
      if (pos>=0)
      {
        EasyDictionaryElem<TKey,TValue> elem=list[pos];
        elem.Dispose();
        list.RemoveAt(pos);
        return true;
      }
      return false;
    }
 
    public void Clear()
    {
      Dispose();
    }
 
    //индексатор для доступа как к простому массиву по индексу
    public EasyDictionaryElem<TKey,TValue> this[int i]
    {
      get
      {
        if (i>=0 && i<Count) return list[i];
        return null;
      }
    }
 
    //поиск элемента по ключу (используется бинарный поиск)
    public EasyDictionaryElem<TKey,TValue> Search(TKey key)
    {
      int pos=Search4key(key,false);
      if (pos>=0) return list[pos];
 
      return null;
    }
 
    private int Search4key(TKey key,bool inserting)
    {
      int count=list.Count;
      if (count>0)
      {
        int direction=1;
        int si=0;
        int ei=count-1;
        do
        {
          int i=(si+ei)/2;
          TKey aKey=list[i].Key;
          if (key==null || aKey==null)
          {
            if (key==null && aKey==null) direction=0;
            else if (aKey==null) direction=order;
            else direction=-order;
          }
          else direction=key.CompareTo(aKey)*order;
 
          if (direction<0) ei=i-1;
          else if (direction>0) si=i+1;
          else
            if (inserting) return -i;
            else return i;
 
          if (si>ei && inserting)
            if (direction>0) return i+1;
            else return i;
 
        } while (si<=ei);
      }
      else if (inserting) return 0;
 
      return -1;
    }
 
    public void Dispose()
    {
      if (list!=null)
      {
        for (int i=0;i<list.Count;i++) list[i].Dispose();
        list.Clear();
        list=null;
      }
    }
  }
Теперь, что бы использовать этот контейнер для хранения шрифтов XNA так вот инициализируется instance:
C#
1
EasyDictionary<string,SpriteFont> fonts;
так вот добавляются шрифты (не пугаемся функции Content.Load<SpriteFont> - это загрузчик контента в XNA):
C#
1
2
      fonts.Add("font1",Content.Load<SpriteFont>("font1"));
      fonts.Add("megafont2",Content.Load<SpriteFont>("megafont2"));
так вот находится нужный шрифт по ключу:
C#
1
2
3
4
5
6
    EasyDictionaryElem<string,SpriteFont> fontElem=fonts.Search(fontName);
    if (fontElem!=null)
    {
       SpriteFont font=fontElem.Value;
       ...
    }
так вот можно просмотреть все содержимое коллекции:
C#
1
2
for (int i=0;i<fonts.Count;i++)
  Console.WriteLine(fonts[i].Key);
Как подтвердил автор, я оказался прав, что нужен именно класс-контейнер, а не просто массив классов . Что бы не делать сообщение уж очень длинным в следующем сообщении покажу как трансформировать первоначальный класс Гараж в то, что было нужно по заданию .
1
M128K145
Эксперт JavaЭксперт С++
8324 / 3544 / 420
Регистрация: 03.07.2009
Сообщений: 10,708
04.08.2009, 20:08 #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
    public class Garage
    {
        public Car[] carArray;
        public Garage(int size)
        {
            carArray = new Car[size];
        }
    }
    public class Car
    {
        string marka;
        int speed;
        public string Mk
        {
            set
            {
                marka = value;
            }
            get
            {
                return marka;
            }
        }
        public int Sd
        {
            set
            {
                speed = value;
            }
            get
            {
                return speed;
            }
        }
        public Car[] carArray;
        public Car(string marka1, int speed1)
        {
            marka = marka1;
            speed = speed1;
        }
    }
    class Program
    {
        static void Main()
        {
            Console.Write("Количество мест в гараже: ");
            int count = Convert.ToInt32(Console.ReadLine());
            Garage gar = new Garage(count);
            string marka;
            int speed;
            for(int i = 0; i < count; ++i)
            {
                Console.WriteLine();
                Console.Write("Введите марку {0} машины: ", i+1);
                marka = Console.ReadLine();
                Console.Write("Введите скорость {0} машины: ", i+1);
                speed = Convert.ToInt32(Console.ReadLine());
                gar.carArray[i] = new Car(marka, speed);
            }
            Console.WriteLine("\nВсе машины из гаража:\n");
            for (int i = 0; i < count; ++i)
                Console.WriteLine("Марка {0} в гараже и ее скорость {1}", gar.carArray[i].Mk, gar.carArray[i].Sd);
            Console.ReadLine();
        }
    }
имел ввиду
1
Миниатюры
Массив классов  
max_cn
84 / 83 / 6
Регистрация: 13.07.2009
Сообщений: 107
04.08.2009, 21:06 #8
На самом деле, что-бы получить такой класс-гараж можно использовать мой приведенный выше класс, создав экземпляр таким вот образом:
C#
1
EasyDictionary<string,Car> Garage=new EasyDictionary<string,Car>();
Но если учитывать требование, что данные должны обязательно храниться в массиве, то я бы модифицировал первоначальный класс так:

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
    public class Garage:IEnumerable
    {
        //заремарил, так как это поле будет хранится в классе Car
        //public string machina;
        //заремарил, так как это поле будет хранится в классе Car
        //public int sp;
 
        //поле должно быть публичным и определено как свойство, так как к нему нужен доступ во внешнем коде
        //при чем должна отсутствовать возможность его изменять, раз уж массив статический!!!
        //protected int size;
        public int Size
        {
          get {return carArray.Length;}
        }
 
        //правилом хорошего тона является скрывать такие данные от внешнего кода
        //так как у того, кто будет использовать такой класс, 
        //не должно быть возможности, например, обнулить эту переменную
        //public Car[] carArray;
        protected Car[] carArray;
 
        public Garage(int size)
        {
            carArray = new Car[size];
        }
        
        //вообще непонятно зачем вводилось это поле :-\
        //использую его для автоматического вычисления индекса следующего элемента
        //хотя в нормальных контейнерах это поле лишнее
        protected int index=0;
 
        //как правило порядок хранения элементов в коллекции определяется самим контейнером
        //для простоты уберем индекс и будем вычислять его автоматически
        //ну и будем возвращать признак, был ли добавлен новый объект
        public bool AddCar(string machina, int sp)
        {
            if (index<Size)
            {
              carArray[index++] = new Car(machina, sp);
              return true;
            }
            return false;
        }
 
        //не поклонник энумераторов, но если уж так хочется, то пусть будет
        public IEnumerator GetEnumerator()
        {
            return carArray.GetEnumerator();
        }
    }
 
    public class Car  
    {
        protected string marka;
        //интересно, как ожидалось получить эти поля скрыв их от всего, что не наследуется от этого класса ;)
        public string Marka
        {
           //секцию set не добавлял, так как, как правило такие поля статические
           //они раз определяются в конструкторе, а потом только считываются
           get { return marka; }
           //но никто не мешает добавить ее если нужно ;)
           //set { marka=value; }
        }
        protected int speed;         
        //интересно, как ожидалось получить эти поля скрыв их от всего, что не наследуется от этого класса ;)
        public string Speed
        {
           //секцию set не добавлял, так как, как правило такие поля статические
           //они раз определяются в конструкторе, а потом только считываются
           get { return speed; }
           //но никто не мешает добавить ее если нужно ;)
           //set { speed=value; }
        }
        public Car(string marka, int speed)
        {
            this.marka = marka;
            this.speed = speed;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите количество машин в гараже: ");
            int n = Convert.ToInt32(Console.ReadLine());
            Garage x1 = new Garage(n);
            for (int i = 0; i < n; i++)
            {
                Console.Write("Марка машин: ");
                string machina = Console.ReadLine();
                Console.Write("Скорость машины: ");
                int sp = Convert.ToInt32(Console.ReadLine());
                x1.AddCar(machina, sp);
            }
 
            Console.WriteLine("\n");
            Console.WriteLine("Просмотр машин в гараже");
            foreach (Car с in x1)
            {
                //на лицо было отсутствие понимания, как использовать такой тип циклов :-\
                Console.WriteLine("Марка {0} в гараже и ее скорость {1}", c.Marka, c.Speed);
            }
        }
 
    }
В результате должно было получится что-то типа этого. Но это только если обязательно наличие массива в качестве контейнера для данных. На самом деле в качестве контейнера лучше (и НУЖНО!) использовать что-то типа List<T>, так как в таком случае к-во элементов может изменяться произвольным образом в процессе работы программы.

Общие же пожелания автору можно прочитать здесь

Добавлено через 7 минут 36 секунд
нашел одну неточность в предыдущем посте:
Теперь, что бы использовать этот контейнер для хранения шрифтов XNA так вот инициализируется instance:
C#
1
EasyDictionary<string,SpriteFont> fonts;
Так просто объявляется переменная, а экземпляр класса конечно же создается как:
C#
1
EasyDictionary<string,SpriteFont> fonts=new EasyDictionary<string,SpriteFont>();
1
novi4ok
551 / 504 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
05.08.2009, 00:03 #9
а зачем изобретить велосипед? это же c#! там уже все есть, нужно только найти и разобраться как применить:

Dictionary(TKey,TValue)Class

что такое generics:

http://msdn.microsoft.com/en-us/library/ms379564(VS.80).aspx

прочие контейнеры в System.Collections.Generic-Namespace:

http://msdn.microsoft.com/de-de/libr...ic(VS.80).aspx

"все уже украдено до нас" (с)
0
max_cn
84 / 83 / 6
Регистрация: 13.07.2009
Сообщений: 107
05.08.2009, 13:18 #10
novi4ok, я понимаю, что много букОв сложно читать, но ранее я привел причину, почему пришлось создать свой класс-словарь:
Для этих целей можно использовать стандартный класс Dictionary<TKey, TValue> , но меня в нем не устроило то, что он не дает возможности нормально обращаться к элементам по индексу(как к простому массиву), по этому я написал свой.
Более того, я привел внутреннюю реализацию класса контейнера, что бы было понятнее, что такое коллекции и с чем их едят.

а зачем изобретить велосипед? это же c#! там уже все есть,...
Что-то похожее я прочитал когда то в книге Карли кажись (это первая книга, которая мне попалась по C# - на самом деле, она еще и худшей оказалась ).
Так вот, у них было написано, что-то типа:
Generic коллекции C# представляют классы на все случаи жизни. Вам врядле придется создавать свои, но на всякий случай мы расскажем как это делается...
Я не знаю, может я какой неправильный, но спустя месяц у меня уже было до 10 своих коллекций для хранения совершенно специфических данных (таймера, шрифты, спрайты, дерево переменных импортированное из Excel и тд и тп).
Так что уметь "изобретать велосипед" не только полезно иногда, а еще и жизненно необходимо .
0
arvitaly
Благотворец
142 / 122 / 13
Регистрация: 29.04.2009
Сообщений: 537
03.04.2010, 09:38 #11
Для этих целей можно использовать стандартный класс Dictionary<TKey, TValue> , но меня в нем не устроило то, что он не дает возможности нормально обращаться к элементам по индексу(как к простому массиву), по этому я написал свой.
getByIndex???
0
kuroiryuu
320 / 304 / 68
Регистрация: 05.11.2009
Сообщений: 712
Завершенные тесты: 2
03.04.2010, 17:16 #12
То что хотел увидеть создатель темы:
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
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication2
{
    public class Garage : IEnumerable, IEnumerator
    {
        protected int size;
        protected int index;
        private Car[] carArray;
        private int pos = -1;
 
        public Garage()
        {
            carArray = new Car[0];
        }
 
        public void AddCar(string machina, int sp)
        {
            Array.Resize(ref carArray, carArray.Length + 1);
            carArray[carArray.Length - 1] = new Car(machina, sp);
        }
 
        public Car this[int index]
        {
            get { return carArray[index]; }
        }
 
        public int Count
        {
            get { return carArray.Length; }
        }
 
        #region Члены IEnumerable
 
        public IEnumerator GetEnumerator()
        {
            return carArray.GetEnumerator();
        }
        #endregion
 
        #region Члены IEnumerator
        public bool MoveNext()
        {
            if (pos < carArray.Length)
            {
                pos++;
                return true;
            }
            else
                return false;
        }
 
        public void Reset()
        {
            pos = 0;
        }
 
        public object Current
        {
            get { return carArray[pos]; }
        }
 
        #endregion
 
 
    }
 
    public class Car
    {
        private string _marka;
        private int _speed;
 
        public Car(string marka, int speed)
        {
            this._marka = marka;
            this._speed = speed;
        }
 
        public string Marka
        {
            get { return this._marka; }
        }
 
        public int Speed
        {
            get { return this._speed; }
        }
 
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите количество машин в гараже: ");
            int n = Convert.ToInt32(Console.ReadLine());
            Garage garage = new Garage();
            for (int i = 0; i < n; i++)
            {
                Console.Write("Марка машин: ");
                string machina = Console.ReadLine();
                Console.Write("Скорость машины: ");
                int sp = Convert.ToInt32(Console.ReadLine());
                garage.AddCar(machina, sp);
            }
 
            Console.WriteLine("\n");
            Console.WriteLine("Просмотр машин в гараже");
 
            foreach(Car car in garage)
            {
                Console.WriteLine("Марка {0} в гараже и ее скорость {1}", car.Marka, car.Speed);
            }
        }
    }
}
0
03.04.2010, 17:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2010, 17:16

Иерархия классов
Помогите пжл написать программу: 1. Полную структуру классов и их...

Создание классов
public class Document : IDocListener В этом месте непонятно, что делает...

Реализация классов.
Реализация классов. В каждой строчке надо найти максимальный элемент та...


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

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

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