Кто может помочь с задачей по ООП? Всем привет, начали изучать ООП, такая вот задача, сам написал по тому как я знаю, используя пример, но ошибки кодnamespace OOP4 { class PatchCord { private string name; private string type; private int length; public PatchCord(string name, string type, int length) { this.name = name; this.type = type; this.length = length; } } class PatchCords { PatchCord[] patchCords = new PatchCord[5]; public PatchCord this[int length] { set { patchCords[length] = value; } } } class Program { static void Main(string[] args) { PatchCords A = new PatchCords(); A[0] = new PatchCord("sds","dsd", 2); for (int i = 0; i (класс и его поля задаются в соответствии с выбранным вариантом в лабораторной работе 1), причем объекты класса должны хранить массивы данных о предметной области, связанные со свойствами предмета задания по варианту. Причем количество элементов массива должно задаваться программно пользователем в интерактивном режиме.
Проблема в вашем коде заключается в том, что вы не определили геттер для свойства PatchCord в классе PatchCords. Кроме того, в цикле for вы устанавливаете i < 2, вместо i < 5, поэтому вывод будет не для всех элементов массива.
Вот исправленный код:
using System; namespace OOP4 { class PatchCord { private string name; private string type; private int length; public PatchCord(string name, string type, int length) { this.name = name; this.type = type; this.length = length; } public int Length { get { return length; } } } class PatchCords { PatchCord[] patchCords; public PatchCords(int size) { patchCords = new PatchCord[size]; } public PatchCord this[int index] { set { patchCords[index] = value; } get { return patchCords[index]; } } } class Program { static void Main(string[] args) { Console.WriteLine("Введите количество патч-кордов:"); int size = int.Parse(Console.ReadLine()); PatchCords A = new PatchCords(size); for (int i = 0; i < size; i++) { Console.WriteLine($"Введите название, тип и длину патч-корда {i + 1}:"); string name = Console.ReadLine(); string type = Console.ReadLine(); int length = int.Parse(Console.ReadLine()); A[i] = new PatchCord(name, type, length); } Console.WriteLine("Длины патч-кордов:"); for (int i = 0; i < size; i++) { Console.WriteLine(A[i].Length); } } } }
Теперь в программе пользователь может вводить количество патч-кордов и их данные, а затем программа выводит длины патч-кордов.
Проблема в вашем коде заключается в том, что вы не определили геттер для свойства PatchCord в классе PatchCords. Кроме того, в цикле for вы устанавливаете i < 2, вместо i < 5, поэтому вывод будет не для всех элементов массива.
Вот исправленный код:
using System;namespace OOP4
{
class PatchCord
{
private string name;
private string type;
private int length;
public PatchCord(string name, string type, int length)
{
this.name = name;
this.type = type;
this.length = length;
}
public int Length
{
get { return length; }
}
}
class PatchCords
{
PatchCord[] patchCords;
public PatchCords(int size)
{
patchCords = new PatchCord[size];
}
public PatchCord this[int index]
{
set { patchCords[index] = value; }
get { return patchCords[index]; }
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите количество патч-кордов:");
int size = int.Parse(Console.ReadLine());
PatchCords A = new PatchCords(size);
for (int i = 0; i < size; i++)
{
Console.WriteLine($"Введите название, тип и длину патч-корда {i + 1}:");
string name = Console.ReadLine();
string type = Console.ReadLine();
int length = int.Parse(Console.ReadLine());
A[i] = new PatchCord(name, type, length);
}
Console.WriteLine("Длины патч-кордов:");
for (int i = 0; i < size; i++)
{
Console.WriteLine(A[i].Length);
}
}
}
}
Теперь в программе пользователь может вводить количество патч-кордов и их данные, а затем программа выводит длины патч-кордов.