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 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; // 몸무게 임시 저장
string btn = "n"; // 추가 자료 입력 여부 저장
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); // 리스트에 현제 입력된값 추가
Console.Write("입력(y), 종료(n) : ");
btn = Console.ReadLine().ToLower(); // 자료 추가 입력 여부 입력
} while (btn == "y" && lst.Count < 10); // 자료 추가 입력 여부 확인 & 최대 학생수 10명 확인
Console.Clear(); // 화면 전부 지우기
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);
}
} |