Loading...
eleon0ra.90 avatar eleon0ra.90 0 Точки

Задача 1. Bonus Scoring System от MidExam

Здравейте

явно допускам грешка или имам някакъв пропуск. Бихте ли погледнали решението ми, не мога да разбера защо не мога да получа стойност за 'totalBonus'. Колкото и да променям кода си, остава със стойност 0.

Тук е кода ми-> https://pastebin.com/X6BXNLLT

Условието се намира тук -> https://judge.softuni.bg/Contests/Practice/Index/2028#0

 

Благодаря предварително!

Тагове:
0
Fundamentals Module 05/04/2020 11:42:36
aydzhanrasim avatar aydzhanrasim 1 Точки

разбрах си грешката. При мен беше, че данните се подават като string а не като числа и трябваше да се преобразуват.

0
nickwork avatar nickwork 657 Точки

Проблема ти е в целочисленото делене...пробвай да делиш инт стойности и ще разбереш защо се получава така.

Или сменяй всичко на double или каствай там където делиш към double (...малък пример ако искаш да разделиш 5 /2 => въпреки,  че са два инта  няма как да запишеш резултата им, който е  2.5 в инт)

...даже ето ти направо едно решение

using System;
using System.Collections.Generic;
using System.Linq;

namespace Exam
{
    class Program
    {
        static void Main()
        {
            var studentCount = double.Parse(Console.ReadLine());
            var lecturesCount = double.Parse(Console.ReadLine());

            var courseBonus = double.Parse(Console.ReadLine());

            var studentWithMaxBonus = int.MinValue;
            int maxAtt = int.MinValue;


            if(studentCount == 0 || lecturesCount == 0)
            {
                Console.WriteLine($"Max Bonus: 0.");
                Console.WriteLine($"The student has attended 0 lectures.");
                return;
            }

            for (int i = 0; i < studentCount; i++)
            {
                int attendance = int.Parse(Console.ReadLine());

                double temp = Math.Ceiling(attendance / lecturesCount * (5 + courseBonus));

                if (temp > studentWithMaxBonus)
                {
                    studentWithMaxBonus = (int)temp;
                    maxAtt = attendance;
                }
            }

            Console.WriteLine($"Max Bonus: {studentWithMaxBonus}.");
            Console.WriteLine($"The student has attended {maxAtt} lectures.");


        }
    }
}

0
05/04/2020 12:10:13
JSuser avatar JSuser 215 Точки

Здравей,

Основния проблем в във формулата - там в началото делиш int на int и губиш стойност в някои случаи (умножих го по 1.0 за да стане double). Друго което промених е int maxAttendance = 0;(без тази корекция дава 90/100). Ето поправения код, сега дава 100/100:

https://pastebin.com/B3TQd6WS

Поздрави!

0
05/04/2020 12:16:59
eleon0ra.90 avatar eleon0ra.90 0 Точки

Много благодаря за бързите отговори! 

JSuser бях умножила целия израз по 1.0 за да го преобразувам в дабъл, но не разботеше. С твоя пример, след като умножих само стойностите, който се делят, поличух коректните отговори.

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

Отново много ви благодаря!

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