Проблем със задача 4 Trainers Salary Programming Basics 19 march 2017-Morning
Здравейте. От известно време се занимавам със следната задача Лекторски заплати:
Напишете програма, която да пресмятазаплатата на лекторите, които водят курсове в СофтУни. На входа програмата получава броят на лекции, които трябва да се проведат и бюджета отделен за лектори. За всяка лекция се въвежда името на лектора който ще я води. Бюджета се разпределя по равно за всяка лекция.Основните лектори са:"Jelev", "RoYaL", "Roli", "Trofon" и "Sino".Освен тях има и гост лектори. Накрая на програма трябва да се изпринтира информация колко пари ще вземе всеки от основните лектори и колко общоще вземат гост лекторите. Това е моят код:
...........................................................................
int lecture = int.Parse(Console.ReadLine());//брой лекции
double budjet = double.Parse(Console.ReadLine());//бюджет
var lector = Console.ReadLine();//лектор
int jel = 0;//лекции на Jelev
int rol = 0;//лекции на RoYal
int rol1 = 0;//лекции на Roli
int tro = 0;//лекции на Trofon
int sin = 0;//лекции на Sino
int others = 0;//лекции на други лектори
for (int i = 1; i <= lecture; i++)
{
lector = Console.ReadLine();
if (lector == "Jelev") jel++;
if (lector == "RoYal") rol++;
if (lector == "Roli") rol1++;
if (lector == "Trofon") tro++;
if (lector == "Sino") sin++;
if (lector != "Jelev" && lector != "RoYal" && lector != "Roli" && lector != "Trofon" &&
lector != "Sino")
others++;
}
Console.WriteLine("Jelev salary: {0:0.00} lv", budjet / lecture * jel);
Console.WriteLine("RoYal salary: {0:0.00} lv", rol * budjet / lecture);
Console.WriteLine("Roli salary: {0:0.00} lv", rol1 * budjet / lecture);
Console.WriteLine("Trofon salary: {0:0.00} lv", tro * budjet / lecture);
Console.WriteLine("Sino salary: {0:0.00} lv", sin * budjet / lecture);
Console.WriteLine("Others salary: {0:0.00} lv",others*budjet/lecture);
....................................................................................................................
Не съм сигурна дали начинът ми на решение е правилен или има грешки някъде в сметките, защото вместо да получа
Jelev salary: 166.67 lv
RoYaL salary: 166.67 lv
Roli salary: 166.67 lv
Trofon salary: 333.33 lv
Sino salary: 500.00 lv
Others salary: 166.67 lv
при въвеждане на
9
1500
Roli
Trofon
Sino
Bai Ivan Ivanov
Jelev
Trofon
Sino
Sino
RoYaL се получава
Jelev salary: 166.67 lv
RoYaL salary: 166.67 lv
Roli salary: 0.00 lv
Trofon salary: 333.33 lv
Sino salary: 500.00 lv
Others salary: 333.33 lv
Благодаря много на всички Ви! Бъдете живи и здрави! Да Ви се случват само хубави неща!
Привет,
виждам че решението ни е почти еднакво, уви на мен конзолата ми изкарва доста странен резултат който не мога да си обясня и ще помоля по-знаещите за помощ. Ето какво ми вади конзолата:
Ето и линк към решението ми:
https://pastebin.com/C1FacpVU
Благодаря на всички отзовали се.
AleksandarGG проблема при теб е, че запиsваш резултат от тип double във променлива от тип string
и поради товa нe може да ти закръгли до втроият знак след десетичнта точка. На стринг-а не може да му се приложи закръгляне. За да се оправи, смени си типа на променливите от string на double ето така:
double roli = 0;
double trofon = 0;
double sino = 0;
double jelev = 0;
double royal = 0;
double others = 0;
Освен това според мен не е нужно да правиш преброяване и после да извършваш всичкото смятане, промених ти малко кода като махнах броячите и направо в момента в който програмата провери, че даден лектор има/води лекция му добавя заплатата за текущата лекция. Ето линк https://pastebin.com/c8JfYtjL
Благодаря за корекциите.
Освен това според мен не е нужно да правиш преброяване и после да извършваш всичкото смятане, промених ти малко кода като махнах броячите и направо в момента в който програмата провери, че даден лектор има води лекция му добавя заплатата за текущата лекция. Ето линк https://pastebin.com/BecBFBit