Loading...
ani99 avatar ani99 3 Точки

тип Double

Здаравейте! Имам проблем с входните данни. Задачите ми се чупят при въвеждане на реално число на конзолата. Аз не виждам  грешка при декларация или другаде...не знам защо става така. Чака ме изпит в края на тази седмиц на Основи на програмирането. Моля за помощ!!!

Тагове:
0
Programming Basics 14/06/2018 11:08:50
NikolayNeykov92 avatar NikolayNeykov92 617 Точки

Отиваш в Control Panel\Clock, Language, and Region

избираш Change date, time, or number formats

избираш Additional Settings...

след това променяш Decimal Symbol: на точка

Apply ok и е готово.

https://ibb.co/cwfHQJ

 

0
ani99 avatar ani99 3 Точки

Открих го преди малко, много благодаря!

0
ani99 avatar ani99 3 Точки

Ето тук се появи нещо друго, което не разбирам:

int students = int.Parse(Console.ReadLine());

            double group1 = 0;
            double group2 = 0;
            double group3 = 0;
            double group4 = 0;

            double marksGroup1 = 0;
            double marksGroup2 = 0;
            double marksGroup3 = 0;
            double marksGroup4 = 0;

 

            for (int i = 1; i <=students; i++)
            {
                double mark = double.Parse(Console.ReadLine());

             
                if (mark >= 2.00 && mark < 3.00)
                {
                    group1++;
                    marksGroup1 = marksGroup1 + mark;
                }

                else if (mark >= 3.00 && mark < 4.00)
                {
                    group2++;
                    marksGroup2 = marksGroup2 + mark;

                }
                else if (mark >= 4.00 && mark < 5.00)
                {
                    group3++;
                    marksGroup3 = marksGroup3 + mark;

                }
                else
                {
                    group4++;
                    marksGroup4 = marksGroup4 + mark;

                }
            }

            double percentsGroup1 = group1 * 100 / students;
            double percentsGroup2 = group2 * 100 / students;
            double percentsGroup3 = group3 * 100 / students;
            double percentsGroup4 = group4 * 100 / students;
            

            Console.WriteLine($"Top students: { percentsGroup4:F2}%");
            Console.WriteLine($"Between 4.00 and 4.99: {percentsGroup3:F2}%");
            Console.WriteLine($"Between 3.00 and 3.99: {percentsGroup2:F2}%");
            Console.WriteLine($"Fail: {percentsGroup1:F2}%");

            double average = (marksGroup1 + marksGroup2 + marksGroup3 + marksGroup4) / students;
            Console.WriteLine($"Average: {average:F2}");

 

group1, group2, group3 и group4 пазят броя на учениците в групи според оценките следователно са от целочислен тип данни. Когато ги декларирах като int обаче изходните данни не бяха точни. Реших, че щом оперирам с тези променливи и резултатът очаквам да е реално число, може би и променливите трябва да са от реален тип. В случая обаче това, струва ми се, няма логика, защото group1, group2, group3 и group4 винаги ще бъдат цели числа. Къде ми е грешката?

0
NikolayNeykov92 avatar NikolayNeykov92 617 Точки

Защото при челочислените типове числа се извършва целочислено деление (без остатък)

и съответно няма да има числа след десетичната запетая и резултата може да бъде

различен от очаквания. Например :

int group1 = 1;

int students = 200;

double percentsGroup1 = group1 * 100 / students;

percentsGroup1 ще бъде равно на 0;

а ако group1 и students са double pecentsGroup1 ще бъде равно на 0.5;

 

0
ani99 avatar ani99 3 Точки

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

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