(테스트) 체중 관리 프로그램
.NET프로그래밍/C# 3.5 SP1 2009. 8. 20. 10:54 |using System;
using System.Collections.Generic;
using System.Linq;
public class KG
{
public int Ban { get; set; }
public int Num { get; set; }
public int Kg { get; set; }
public int banAvg { get; set; }
public int SumBanKg { get; set; }
public int BanAvg { get; set; }
public int TotalKg { get; set; }
public int TotalAvg { get; set; }
public KG()
{
// Empty
}
public KG(int ban, int num, int kg)
{
this.Ban = ban;
this.Num = num;
this.Kg = kg;
}
}
public class 체중관리프로그램
{
public static void Main(string[] args)
{
int banTemp = 0;
int numTemp = 0;
int kgTemp = 0;
List<KG> lst = new List<KG>();
KG pi;
Console.WriteLine("자료를 입력하세요.");
do
{
pi = new KG();
Console.Write("반 : _\b");
banTemp = Convert.ToInt32(Console.ReadLine()); // 반정보 입력
if (banTemp > 9) // 반정보 9까지 인지 확인
{
Console.WriteLine("반은 1~9 사이의 값이여야 합니다."); // Error
return;
}
else
{
pi.Ban = banTemp;
}
Console.Write("번호 : __\b\b");
numTemp = Convert.ToInt32(Console.ReadLine()); // 번호 입력
if (numTemp > 10 || numTemp < 1) // 1~10 인지 확인
{
Console.WriteLine("번호는 1~10 사이의 값이여야 합니다."); // Error
return;
}
else
{
pi.Num = numTemp;
}
Console.Write("몸무게 : __\b\b");
kgTemp = Convert.ToInt32(Console.ReadLine()); // 몸무게 입력
if (kgTemp < 40 || kgTemp > 200) // 40 ~ 200 인지 확인
{
Console.WriteLine("몸무게는 40~200 사이의 값이여야 합니다."); // Error
return;
}
else
{
pi.Kg = kgTemp;
}
lst.Add(pi);
} while (lst.Count < 5); // 최대 학생수 10명 확인
IEnumerable<IGrouping<int, KG>> q = from p in lst group p by p.Ban; // 반별로 그룹핑
int countBan = q.Count(); // 반수 확인
foreach (IGrouping<int, KG> g in q) // 반별 출력
{
Console.WriteLine("\r\n" + g.Key + "반\t번호\t몸무게");
foreach (KG k in g)
{
Console.WriteLine("{0}\t {1}\t {2}", k.Ban, k.Num, k.Kg); // 개인 출력
}
IEnumerable<int> query = from p in lst where p.Ban == g.Key select p.Kg; // 몸무게만 선택
pi.SumBanKg = query.Sum(); // 몸무게 합산
pi.BanAvg = (int)((double)query.Sum() / (double)query.Count() + 0.5); // 반평균 계산 (반올림)
pi.TotalKg += pi.BanAvg; // 전체 합산
Console.WriteLine(g.Key + "반 평균 :" + pi.BanAvg); // 반평균 출력
}
pi.TotalAvg = (int)(((double)pi.TotalKg / (double)countBan) + 0.5); // 전체 평균 (반올림)
Console.WriteLine("전체평균 : " + pi.TotalAvg);
}
}
'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글
105. 파일처리 (0) | 2009.08.24 |
---|---|
90. 프로젝션 (0) | 2009.08.20 |
89. LINQ - 그룹알고리즘 (0) | 2009.08.19 |
88. LINQ - 병합 (0) | 2009.08.19 |
87. LINQ - 합계 카운트 평균 (0) | 2009.08.19 |