Передача массива в поле структуры - C#

Узнай цену своей работы

Формулировка задачи:

Необходимо передать массив из 3 значений передать в аналогичное поле в структуре. При попытке копирования вылетает ошибка
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
/*Описать структуру с именем NOTE, содержащую следующие поля: 
 * фамилия, имя; 
 * номер телефона; 
 * дата рождения (массив из трех чисел). 
 * Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из 
 * восьми элементов типа NOTE(записи должны быть упорядочены по дате рождения); 
 * вывод на экран информации о человеке, номер телефона которого введен с клавиатуры (если такого нет, 
 * вывести соответствующее сообщение).
 */ 
 
namespace Lab3_1
{
 
    struct Note
    {
        string _surname;
        string _name;
        int _phone;
        int[] _birthday;
 
        public Note(string surname, string name, int phone, int[] birthday)
        {
            if (birthday.Length != 3)
                throw new Exception("Массив должен состоять из трёх чисел.");
            _surname = surname;
            _name = name;
            _phone = phone;
            _birthday = new int[3];
            _birthday = birthday;
        }
 
        public string Surname
        {
            get
            {
                return _surname;
            }
            set
            {
                _surname = value;
            }
        }
 
        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }
 
        public int Phone
        {
            get
            {
                return _phone;
            }
            set
            {
                _phone = value;
            }
        }
 
        public int[] Birthday
        {
            get
            {
                return _birthday;
            }
            set
            {
                if (value.Length != 3)
                    throw new Exception("Массив должен состоять из трёх чисел.");
                _birthday = value;
            }
        }
 
        public override string ToString()
        {
            return "Фамилия: " + this.Surname + " Имя: " + this.Name + "\nНомер телефона: " + this.Phone;
        }
    };
 
    class Program
    {
        static void Main(string[] args)
        {
            Note[] note = new Note[2];
            int[] BDay = new int[3];
            string[] template = {"Введите число: ", "Введите месяц: ", "Введиет год: "};
            //DateTime date = new DateTime();
            //DateTime dateTMP = new DateTime();
 
            Console.WriteLine("Заполнять в ручную?(Y/N)");
            string res = Console.ReadLine();
 
            if (res == "N" || res == "n")
            {
                string[] surname = {"dsd", "zgf"};
                string[] name = {"wfwe", "eww"};
                int[] phone = {2342, 12312};
                int[,] bday = {
                                {20, 5, 1994}, 
                                {15, 2, 1990} 
                              };
                for (int i = 0; i < note.Length; i++)
                {
                    note[i].Surname = surname[i];
                    note[i].Name = name[i];;
                    note[i].Phone = phone[i];
                    for (int j = 0; j < 3; j++)
                    {
                        BDay[j] = bday[i, j];
                    }
                    Array.Copy(note[i].Birthday, BDay, 0);
                    //BDay.CopyTo(note[i].Birthday, 0);
                    //note[i].Birthday.CopyTo(BDay, 0);
                }
            }
            else
            {
                Console.WriteLine("Введите новую запись.");
                for (int i = 0; i < note.Length; i++)
                {
                    Console.Write("Введите фамилию: ");
                    note[i].Surname = Console.ReadLine();
                    Console.Write("\tВведите имя: ");
                    note[i].Name = Console.ReadLine();
                    Console.Write("\nВведите номер телефона: ");
                    note[i].Phone = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите дату рожденияч");
                    for (int j = 0; j < 3; j++)
                    {
                        Console.Write(template[j]);
                        BDay[j] = int.Parse(Console.ReadLine());
                    }
                    note[i].Birthday = BDay;
                }
            }
 
            //date = new DateTime(note[0].Birthday[2], note[0].Birthday[1], note[0].Birthday[0]);
            //for (int i = 0; i < note.Length; i++)
            //{
            //    for (int j = i + 1; j < note.Length; j++)
            //    {
            //        dateTMP = new DateTime(note[j].Birthday[2], note[j].Birthday[1], note[j].Birthday[0]);
            //        if (date > dateTMP)
            //        {
            //            var tmp = note[i];
            //            note[i] = note[j];
            //            note[j] = tmp;
            //        }
            //        else
            //        {
            //            var tmp = note[j];
            //            note[j] = note[i];
            //            note[i] = tmp;
            //        }
            //    }
            //}
 
            for (int i = 0; i < note.Length; i++)
            {
                Console.WriteLine(note[i].Surname);
                Console.WriteLine(note[i].Name);
                Console.WriteLine(note[i].Phone);
                for (int j = 0; j < 3; j++)
                {
                    Console.Write(note[i].Birthday[j]);
                    if (j != 2)
                    {
                        Console.Write(".");
                    }
                }
                Console.WriteLine();
            }
 
            Console.WriteLine("\nВведите номер телефона для поиска:");
            for (int i = 0; i < note.Length; i++)
            {
                if (int.Parse(Console.ReadLine()) == note[i].Phone)
                {
                    Console.WriteLine(note[i].Surname);
                    Console.WriteLine(note[i].Name);
                    for (int j = 0; j < 3; j++)
                    {
                        Console.Write(note[i].Birthday[j]);
                        if (j != 2)
                        {
                            Console.Write(".");
                        }
                    }
                    Console.WriteLine();
                }
            }
            Console.ReadKey();
        }
    }
}
проблема в этой части
 for (int i = 0; i < note.Length; i++)
                {
                    note[i].Surname = surname[i];
                    note[i].Name = name[i];;
                    note[i].Phone = phone[i];
                    for (int j = 0; j < 3; j++)
                    {
                        BDay[j] = bday[i, j];
                    }
                    Array.Copy(note[i].Birthday, BDay, 0);
                    //BDay.CopyTo(note[i].Birthday, 0);
                    //note[i].Birthday.CopyTo(BDay, 0);
                }

Решение задачи: «Передача массива в поле структуры»

textual
Листинг программы
int[] a = new int[] { 1, 2, 3 };
int[] b = new int[3];
for (int i = 0; i < a.Length; i++) 
{
     b[i] = a[i];
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы