массив объектов класса, ресайз, сортировка (базовые задачи на классы с#, часть первая)
Primary tabs
Forums:
/* * условие 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 } } }
- Log in to post comments
- 9213 reads
vedro-compota
Thu, 12/19/2013 - 14:14
Permalink
спасибо) если будете
спасибо) если будете выкладывать несколько частей создайте страницу из которой поставите ссылки на все части) (обратные на коренную тему появятся автоматически)
_____________
матфак вгу и остальная классика =)
baton
Thu, 12/19/2013 - 15:30
Permalink
блин, я думал, вы обо мне лучшего мнения)
сир, вы не раз говорили это.
конечно я это сделаю.