0보다 크거나 5보다 큰 영역 수를 줄이려면 루프를 입력하려고하는데 do while 루프를 입력하려고했지만 여전히 다음 코드 블록도 실행합니다 잘못된 입력이 입력 된 경우 루프를 사용하여 섹션을 주석 처리했습니다. 도와 주시면 대단히 감사하겠습니다. 감사합니다.잘못된 입력에 올바른 루프 사용
const int MaxItems = 5; // max size of array needed
double[] itemCosts = new double[MaxItems];
int jobType; // valid values are 1=normal, 2=waterproofing, 3=skim
int nAreas;
int i;
string customer;
double totalCost = 0.0;
double averageCost;
const double discountPrice = 800; // price at which discount available
const double discountRate = 0.1; // discount rate
const double setupCostPerArea = 30.00;
// cost of moving furniture, carpets etc.
double discount, discountedTotal; // discount amount and discounted total
double width, height; // width and height of plaster area
double[] basePrices = { 0, 35.0, 30.0, 20.0 }; // added 0 as index placeholder, so 35 can be selected using 1, and so forth.
// prices per square metre for standard, plasterboard and skim, and skim only
Console.Write("enter name of customer: ");
customer = Console.ReadLine();
Console.Write("enter number of plaster areas to quote for: ");
nAreas = Convert.ToInt32(Console.ReadLine());
do
{
Console.WriteLine("Please Enter numbers of rooms between 1 and 5 only!!!!");
} while (nAreas < 1 && nAreas > 5); // loop
for (i = 0; i < nAreas; i++)
{
Console.WriteLine("Data entry for area {0}", i + 1);
Console.Write("enter 1 (standard), 2 (plasterboard and skim) or 3 (skim only): ");
jobType = Convert.ToInt32(Console.ReadLine());
Console.Write("enter width of area {0} in metres: ", i + 1);
width = Convert.ToDouble(Console.ReadLine());
Console.Write("enter height of area {0} in metres: ", i + 1);
height = Convert.ToDouble(Console.ReadLine());
// add base area cost to price based on area and type of plaster
itemCosts[i] = setupCostPerArea + (basePrices[jobType] * (width * height));
totalCost += itemCosts[i];
}
averageCost = totalCost/nAreas;
// main report heading
Console.WriteLine("\n");
Console.WriteLine("Plasterers R US Job Costing Report");
Console.WriteLine("===================================");
Console.WriteLine("\nName of customer: {0}\n", customer);
Console.WriteLine("No. of plaster areas: {0}", nAreas);
Console.WriteLine("Average Cost per area £{0:0.00}", averageCost);
// output subheadings
Console.WriteLine("Area\tCost\tDifference From Average");
for (i = 0; i < nAreas; i++)
{
Console.Write("{0}\t", i + 1);
Console.Write("£{0:0.00}\t", itemCosts[i]);
Console.WriteLine("£{0:0.00}", itemCosts[i] - averageCost);
}
Console.WriteLine("Total Cost £{0:0.00}", totalCost);
if (totalCost > discountPrice)
{
discount = totalCost * discountRate;
discountedTotal = totalCost - discount;
Console.WriteLine(" - Discount of £{0:0.00}", discount);
Console.WriteLine(" Discounted Total £{0:0.00}", discountedTotal);
}
Console.WriteLine("press enter to continue");
Console.ReadLine();
당신은 DO-while 루프 내부에 nAreas 변수를 증가해야합니다. like 'nAreas ++' –
숫자는 1보다 낮을 수는 없으며 동시에 5보다 높을 수 없습니다. –