Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2015, 14:32   #1
Владимрл
Пользователь
 
Регистрация: 04.04.2015
Сообщений: 23
По умолчанию Конструктор для массива инициализация

Написал программу , старался по возможности в соответствии с условием задания , она работает. Но не знаю насколько точно она соответствует заданию . Мне не понятно 2 предложение задания : Разработать конструктор для инициализации массива, который при своем вызове передает управление собственному конструктору класса В.

Само задание : В класс В добавить поле-массив. Разработать конструктор для инициализации массива, который при своем вызове передает управление собственному конструктору класса В. Размер массива – 5 элементов. Инициализация элементов массива: число 3, умноженное на индекс элемента массива. В программе вывести на экран элементы массива. Для вывода использовать цикл foreach.

Код:
 
 using System; 
 namespace labor_3 
 { 
     class B 
     { 
  
         public B(int health, string name) 
         { 
             this.health = health; 
             this.name = name; 
         } 
  
         public void Passport() 
         { 
             Console.WriteLine("Monster{0}  health={1}  \a",name, health); 
         } 
          
         int health; 
         string name; 
     } 
  
     class Class1 
     { 
         static void Main() 
         {             
             const int n = 5; 
             B[] stado = new B[n]; 
             for (int i = 0; i < n; ++i) 
             { 
                 stado[i] = new B(3*i,"Grazy" + i.ToString()); 
                                         
             } 
  
             foreach (B x in stado) x.Passport(); 
  
             Console.ReadKey(); 
  
         } 
     } 
 }

Последний раз редактировалось Stilet; 21.09.2015 в 15:15.
Владимрл вне форума Ответить с цитированием
Старый 21.09.2015, 14:53   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

В задании просят добавить массив в класс B, а не создать массив с экземплярами класса B.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.09.2015, 23:56   #3
Владимрл
Пользователь
 
Регистрация: 04.04.2015
Сообщений: 23
По умолчанию

Не знаю , не получается как сделать вывод из Main элементов массива ?

Код:
using System;
namespace Lab2
{
  class B
  {
    public int[] _array;    
    public B(int length, int initialValue)
    {
        _array = new int[length];        
        for (int i = 0; i < length; i++)
            _array[i] = initialValue * i;
    }    
    public B() : this(5,3) {}      
  }
  class Program
   {  static void Main(string[] args)
       {
             foreach (int number in _array)
                Console.Write("\t" + number);     

          
          Console.ReadKey();
       }
   }
}

Последний раз редактировалось Stilet; 23.09.2015 в 08:57.
Владимрл вне форума Ответить с цитированием
Старый 22.09.2015, 00:09   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну дык либо не private его сделать, либо метод вывода в классе сделать, а не в Main, и вызвать его.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 22.09.2015 в 00:13.
Alex11223 вне форума Ответить с цитированием
Старый 22.09.2015, 01:50   #5
Владимрл
Пользователь
 
Регистрация: 04.04.2015
Сообщений: 23
По умолчанию

Не много исправил , но все равно что-то не так . Нет вывода на консоль....
Владимрл вне форума Ответить с цитированием
Старый 22.09.2015, 08:40   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну, бывает, правьте дальше пока не появится.

А код выше вроде вообще не должен скомпилироваться, ибо в Main'е нет никакого _array, он есть у экземляров класса B.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 23.09.2015, 01:20   #7
Владимрл
Пользователь
 
Регистрация: 04.04.2015
Сообщений: 23
По умолчанию

А как можно сделать , чтобы в программе вместо строки : public B() : this (5,3) { }
вместо 5 и 3 можно было бы подставлять значение свойства и значение какого-то поля класса B ? Чтобы соответствовало заданию : “ Разработать конструктор для инициализации массива, который при своем вызове передает управление собственному конструктору класса В “. Дело в том , что у меня в программе нужно использовать значение свойства и значение какого-то поля класса B . Пробовал сам сделать , перебрал разные варианты , что-то не так не получается.


Код:
using System;
namespace Lab2
{
    class B
    {
        
        public int[] arr;

        public B(int length, int initialValue)
        {
            arr = new int[length];               
            for (int i = 0; i < length; i++)
                arr[i] = i*initialValue ;
        }

        public B() : this (5,3) { }
    }

    class Program
    {
        static void Main()
        {
            B x = new B();

            foreach (int element in x.arr)
            {
                Console.WriteLine(element);
            }

            Console.ReadKey();
        }
    }
}

Последний раз редактировалось Stilet; 23.09.2015 в 08:57.
Владимрл вне форума Ответить с цитированием
Старый 23.09.2015, 09:13   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Раз в задании написано, что поле массив надо добавить (видимо к тем двум полям name и health, что были изначально), и про массив не сказано, что надо задавать его значения в конструкторе, то наверно там что-то такое про конструкторы ожидалось:
Код:
        public B(int health, string name) : this()
        {
            this.health = health;
            this.name = name;
        }

        public B()
        {
            arr = new int[5];
            for (int i = 0; i < arr.Length; i++)
                arr[i] = i * 3;
        }
Там правда написано
Цитата:
конструктор для инициализации массива, который при своем вызове передает управление собственному конструктору
а не "которому передают".

В общем мутное задание какое-то, надо у того, кто его дал, уточнять.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 23.09.2015 в 09:18.
Alex11223 вне форума Ответить с цитированием
Старый 23.09.2015, 23:49   #9
Владимрл
Пользователь
 
Регистрация: 04.04.2015
Сообщений: 23
По умолчанию

Да тут что-то в самом задании , надо уточнить . В принципе это не важно. Главное потренировался с конструкторами , получил
небольшой практический навык. Спасибо !
Владимрл вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инициализация массива. dmitryfisko Помощь студентам 4 03.02.2014 21:36
инициализация массива, вывод массива и обработка массива должны быть реализованы с помоshью функций airesjke Помощь студентам 0 02.03.2012 16:14
инициализация массива parazzzitka93 Общие вопросы C/C++ 11 02.04.2011 21:01
Конструктор для изменения размерности массива and277 Общие вопросы C/C++ 2 10.08.2009 20:47
инициализация массива Arcueid1691 Паскаль, Turbo Pascal, PascalABC.NET 2 01.06.2009 02:36