Loading...
desislava777 avatar desislava777 165 Точки

Проблем със задача 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

Тагове:
0
Programming Basics
DilyanaGeorgieva avatar DilyanaGeorgieva 81 Точки

Бюджета е общ за всички лектори, т.е. бюджета се дели на броя лекции и се умножава по броя лекции на конкретния лектор. Всъщност това май е така  решението,

А във for цикъла може да е if-else конструкция и последното условие ще е само else. 

Има грешка в записването на:

 if (lector == "RoYal") rol++;

Трябва да е  if (lector == "RoYaL") rol++; - главно L

0
28/03/2017 21:19:01
desislava777 avatar desislava777 165 Точки

Този път се получи. Важното е, че идеята ми е била правилна. Благодаря много за помощта.

0
DilyanaGeorgieva avatar DilyanaGeorgieva 81 Точки

За нищо, понякога трябва много малко и решението се получава.

0
sevgin0954 avatar sevgin0954 557 Точки

Може да пробваш с switch по подходящо е за тази задача      https://pastebin.com/FQcXti6u 

1
28/03/2017 23:09:31
desislava777 avatar desislava777 165 Точки

Благодаря много на всички Ви! Бъдете живи и здрави! Да Ви се случват само хубави неща!

0
AleksandarGG avatar AleksandarGG 1 Точки

Привет,

виждам че решението ни е почти еднакво, уви на мен конзолата ми изкарва доста странен резултат който не мога да си обясня и ще помоля по-знаещите за помощ. Ето какво ми вади конзолата:

9
1500
Roli
Trofon
Sino
Bai Ivan Ivanov
Jelev
Trofon
Sino
Sino
RoYaL
Jelev salary: 166.666666666667 lv
RoYaL salary: 166.666666666667 lv
Roli salary: 166.666666666667 lv
Trofon salary: 333.333333333333 lv
Sino salary: 500 lv
Others salary: 166.666666666667 lv
Press any key to continue . . .

Ето и линк към решението ми:

https://pastebin.com/C1FacpVU

 

Благодаря на всички отзовали се.

0
ognyan.penkov avatar ognyan.penkov 49 Точки

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

0
26/08/2017 08:54:45
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.