Ввод и чтение данных через метод - C#
Формулировка задачи:
делал прогу с готовым массивом в ней. теперь надо сделать через метод
установки/считывания полей (можно использовать свойства, в т.ч. автоматические);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace zadanie2_1
{
class Program
{
static void Main(string[] args)
{
bool f = true;// для сравнвания
Pokupka[] prod = new Pokupka[6];//
prod[0] = new Pokupka("limon", 4, 6);
prod[1] = new Pokupka("limon", 4, 2);
// SuperPokupka[] prod = new SuperPokupka[2]; далее объекты нового класса
prod[2] = new SuperPokupka("limon", 4, 8);
prod[3] = new SuperPokupka("limon", 4, 10);
// SuperPokupka[] prod = new UltraPokupka[2]; далее объекты нового класса
prod[4] = new UltraPokupka Chtenie();
prod[5] = new UltraPokupka();
foreach (var element in prod)
{
element.Chtenie();
}
Pokupka maxP = prod[0];// перемен. объект для нахождения макс покупки
for (int i = 0; i < prod.Length; i++)
{
Console.WriteLine(prod[i]);//вывод массива
if (maxP.GetCost() < prod[i].GetCost())// нахождение макс покупки
{
maxP = prod[i];
}
f &= prod[0].Equals(prod[i]); // сравниваем с первым все и через &= записывае значение в f, если хоть раз встретитя false то в f и останется false
};
Console.WriteLine();
Console.WriteLine("Все покупки равные? Ответ:" + f);
Console.WriteLine();
Console.WriteLine(" макс. покупкa : " + maxP);
Console.ReadKey();
}
}
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace zadanie2_1
{
class Pokupka
{
private string name;// название покупки
private double cena;//цена
private int kol;// количество
public Pokupka(string newName, double newCena, int newKol)//конструктор
{
Cena = newCena;
Name = newName;
Kol = newKol;
}
public Pokupka()//констр по умолч
{
}
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public double Cena
{
get
{
return cena;
}
set
{
cena = value;
}
}
public int Kol
{
get
{
return kol;
}
set
{
kol = value;
}
}
public virtual double GetCost()//вычисл стоимость покупки
{
return (Cena * Kol);
}
public void Chtenie()
{
System.Console.WriteLine("Enter name:");
Name = System.Console.ReadLine();
System.Console.WriteLine("Enter cena:");
string Cena = System.Console.ReadLine();
System.Console.WriteLine("Enter kol:");
string Kol = System.Console.ReadLine();
}
public override string ToString()//метод для вывода, больше переопределять не надо
{
return string.Format("{0};{1};{2};{3};", Name, Cena, Kol, GetCost());
}
/* public override bool Equals(object input) можно и так
{
Pokupka tempPokupka = (Pokupka)input;
if (Cena == tempPokupka.Cena && Name == tempPokupka.Name)
return true;
else
return false;
}
*/
public override bool Equals(object obj)//переопределяем метод для сравнивания по двум полям
{
var other = obj as Pokupka;
if (other == null) return false;
return name == other.name && Math.Abs(cena - other.cena) < 0.01;
}
}
}
данные в массив в коде вводить не нужно как у меня. иначе будет 2 раза перезаписываться
Решение задачи: «Ввод и чтение данных через метод»
textual
Листинг программы
public string Name
{
get
{
return name;
}
set
{
if(name != "")name = value;
}
}
public double Cena
{
get
{
return cena;
}
set
{
if(value >=0)cena = value;
}
}
public int Kol
{
get
{
return kol;
}
set
{
if(value >= 1)kol = value;
}
}