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