Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as C# by iSohrab ( 13 years ago )
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DangDong
{
class member
{
public string name;
public double p;
}
class Program
{
static void Main(string[] args)
{
List<member> members=new List<member>();
Console.WriteLine("Enter number of Members");
int member_count = int.Parse(Console.ReadLine());
for (int i = 0; i < member_count; i++)
{
Console.WriteLine("Enter Payment of member {0}", i);
member m = new member();
m.name = "X" + i;
m.p = double.Parse(Console.ReadLine());
members.Add(m);
}
// Calculate Dong for each person
double d
Console.WriteLine("dong of members is: {0}", dong);
// minus Dong from payments
for (int i = 0; i < member_count; i++)
{
members[i].p -= dong;
}
/*// seprate creditors from deptors
List<member> creditors = new List<member>();
List<member> deptors = new List<member>();
for (int i = 0; i < member_count; i++)
{
if(members[i].p<0)
{
// he is deptor.. :(
deptors.Add(members[i]);
}
else
{
// he is creditor... :)
creditors.Add(members[i]);
}
}*/
while (zero(members))
{
member max_member = members[max(members)];
member min_member = members[min(members)];
if (-(min_member.p) < max_member.p)
{
Console.WriteLine(min_member.name + "---" + Math.Ceiling(min_member.p).ToString() + "--->" + max_member.name);
max_member.p += min_member.p;
min_member.p = 0;
}
else
{
Console.WriteLine(min_member.name + "---" + Math.Ceiling(max_member.p).ToString() + "--->" + max_member.name);
min_member.p += max_member.p;
max_member.p = 0;
}
}
Console.ReadLine();
}
public static double getDong(List<member> m)
{
double sum = 0;
for (int i = 0; i < m.Count; i++)
{
sum += m[i].p;
}
return sum / m.Count;
}
public static bool zero(List<member> m)
{
for(int i=0;i<m.Count;i++)
{
if(m[i].p!=0)
return true;
}
return false;
}
public static int max(List<member> m)
{
int index_max = 0;
double max_payment = 0;
for (int i = 0; i < m.Count; i++)
{
if (m[i].p > max_payment)
{
index_max = i;
}
}
return index_max;
}
public static int min(List<member> m)
{
int index_min = 0;
double min_payment = 0;
for (int i = 0; i < m.Count; i++)
{
if (m[i].p < min_payment)
{
index_min = i;
min_payment = m[i].p;
}
}
return index_min;
}
}
}
Revise this Paste
Children: 66291