массив объектов класса, ресайз, сортировка (базовые задачи на классы с#, часть первая)

/*
 * условие
4.	В магазине строительных материалов в продаже имеются стеновые панели,
которые характеризуются следующими величинами:
  ширина, длина, количество штук, цена за 1 м2.
 Вывести в порядке возрастания цены сведения о тех стеновых панелях, 
общая площадь которых не менее заданной. (я это понял как площадь панели умноженная на кол-во штук) 
*/

/
реализация: один класс "панели" наделяется свойствами "цена", "кол-во штук", "длинна", "ширина".
второй класс "список товаров" широким жестом наделяется полями: массив элементов типа "панели", "размер массива", "кол-во заполненных элементов", "значение пользователя";
методами: "добавить товар", "сортировка товаров" (по возрастанию), "вывод свойств товаров", "ввести пользовательское значение".
/
в майне запилен цикл фор, который автоматически заполняет массив элементов, дабы вручную не вводить. кривовато, но мне было лень гуглить и копаться с рандомными числами. как-нибудь потом исправлю (даааа, конечно исправлю ;D ).
/
код рабочий, вставляем и используем (не забываем только пространство имен свое поставить).
кому нужен подробный комментарий по коду \ помощь в подобной задаче - пишите

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

class panels
{
    private int amount;
    private int width;
    private int length;
    private int cost;
                          // свойства
    public int Cost { //цена
        get{
            return cost;
        }
        set{
            cost = (value);
        }
    }
    public int Amount { //кол-во штук
        get {
            return amount;
        }
        set  {
            amount = (value);
        }
    }
    public int Width { // ширина
        get{
            return width;
        }
        set {
            width = (value);
        }
    }
    public int Length { // длинна
        get {
            return length;
        }
        set {
            length = (value);
        }
    }

    public panels()  {
        Amount = 0;
        Width = 0;
        Length = 0;
        Cost = 0;
    } // конструктор
                                       // the end of class
}

class list_items{
    private panels []mass;
    private int users_value;
    private int size;
    private int s; // кол-во заполненных элементов 

    public list_items() //конструктор
    {
        panels[] mass1 = new panels[4];
        mass = mass1;
        users_value = 0;
        size = 4; 
        s = 0;
        users_value = 0;
    }

    public void get_users_value(int i){
        users_value = i;
    }

    public void add_item(int c, int a, int w, int l)  // добавить элемент
    {
        if (s < size){
            mass[s] = new panels();            
        }
        else // расширить массив и вписать
        {
            //Array.Resize<panels>(ref mass, size++);   //так  не работает
            size++;  // а так - работает, почему - буду разбираться
            Array.Resize<panels>(ref mass, size);
            mass[s] = new panels();
        }
        mass[s].Cost = c;        
        mass[s].Width = w;
        mass[s].Length = l;
        mass[s].Amount = a;
        s++;
    }

    public void sorting_items() {
        int o = 0;
        bool o2 = true;  // сортировка
        while (o2 != false){
            o = 0;
            for (int i = 0; i < s - 1; i++) // сортировка
            {
                if (mass[i].Cost > mass[i + 1].Cost){
                    o++;
                    panels a = mass[i + 1];
                    mass[i + 1] = mass[i];
                    mass[i] = a;
                }
            }
            if (o == 0)
                o2 = false;
        }
    }
    
    public void show_items(){
        for (int i = 0; i < s; i++) 
        {
             if(mass[i].Amount * mass[i].Length * mass[i].Width > users_value){
                 Console.WriteLine();
                 Console.Write("Cost ");
                 Console.WriteLine(mass[i].Cost);
                 Console.Write("Width ");
                 Console.WriteLine(mass[i].Width);
                 Console.Write("Length ");
                 Console.WriteLine(mass[i].Length);
                 Console.Write("Amount ");
                 Console.WriteLine(mass[i].Amount);
             }            
        }   
    }//
}

namespace c_sharp_task_5{
    class Program {
        static void Main(string[] args)
        {
            list_items A = new list_items();
            A.get_users_value(1500); 
// задание пользовательского значения. надо точно подбирать, тут оно слишком маленькое
            for (int i = 0; i < 10; i++) // заполнение
            {
                if((20 - i * i) > 1){
                    A.add_item(20 - i * i, 400 + i * i, 7 + i, 3 + i);
                }
                else
                    A.add_item(50 + i, 400 - i * i, 7 + i, 3 + i);
            }
            A.show_items();
            Console.WriteLine("sorting_items.........................................");
            A.sorting_items(); //работает            
            A.show_items();
            /////  the end of programm
        }
    }
}
vedro-compota's picture

спасибо) если будете выкладывать несколько частей создайте страницу из которой поставите ссылки на все части) (обратные на коренную тему появятся автоматически)

_____________
матфак вгу и остальная классика =)

baton's picture

сир, вы не раз говорили это.
конечно я это сделаю.