Loading...

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

stefism1 avatar stefism1 28 Точки

Задача 06. Graduation от While-Loop - Lab за C#

Моля за малко разяснение.
Ще пусна 2 кода, като първия е кода от презентацията, който работи и дава 100 от 100. Втория е моя код, който гърми на последния тест и дава 80 от 100. Според мен двата кода правят едно и също но написано по различен начин.
Моля за обяснение къде се дъни моя код и то само на последния тест?

1. Кода, който дава 100 от 100

------------------

using System;

namespace Graduation_RABOTI
{
    class Program
    {
        static void Main(string[] args)
        {
            string name = Console.ReadLine();
            double grades = 1;
            double sum = 0;

            while (grades <=12)
            {
                double grade = double.Parse(Console.ReadLine());

                if (grade >= 4.00)
                {
                    sum += grade;
                    grades++;
                }
            }
            double average = sum / 12;
            Console.WriteLine($"{name} graduated. Average grade: {average:F2}");
        }
    }
}


------------------------

МОЯ КОД:

-----------------------

using System;

namespace Graduation_Zavarsvane_
{
    class Program
    {
        static void Main(string[] args)
        {
            string nameStudent = Console.ReadLine();
            int counter = 0;
            double averageSuccess = 0;
            double sumSuccess = 0;

            while (true)
            {
                if (counter < 12)
                {
                    averageSuccess = double.Parse(Console.ReadLine());
                    sumSuccess = averageSuccess + sumSuccess;
                    counter++;
                }
                else if ((sumSuccess / 12) >= 4.00)
                {
                    Console.WriteLine($"{nameStudent} graduated. Average grade: {(sumSuccess / 12):F2}");
                    break;
                }
                //else
                //    break;
                
            }

        }
    }
}

 

Тагове:
0
Programming Basics
DimitarVlaev avatar DimitarVlaev 91 Точки
Best Answer

Здравей, 

Разликата между двете решения е че при оценка по-малка от 4, класът се повтаря и counter следва да не бъде повишаван. Затова ти трябва една проверка за оценката преди да повишиш counter (т.е. да се премине в следващ клас). Можеш да направиш това по следния начин примерно:

if (counter < 12)
                {
                    
                    averageSuccess = double.Parse(Console.ReadLine());
                    if (averageSuccess < 4) continue;
                    sumSuccess = averageSuccess + sumSuccess;
                    counter++;
                }

С continue, пропускаш кодът надолу (в конкретния случай, оценката не влиза към крайния успех и counter-ът за клас не се променя).

Успех!

0
Aforkldj avatar Aforkldj 1 Точки

 Много добър "шорткът". Благодарим!

0
stefism1 avatar stefism1 28 Точки

Благодаря!

Кратко и ясно обяснение!

Супер! Мерси!

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