Loading...
AleksandraArabadzhieva avatar AleksandraArabadzhieva 0 Точки

Хистограма - изпитни задачи, цикли

Здравейте!

Моля, някой да ми каже къде бъркам, защото вече го виждам кръстосано тоя код :((( Излизат ми само нули като резултат.

https://pastebin.com/vD163m14

Условие: Дадени са n цели числа в интервала [1 … 1000]. От тях някакъв процент p1 са под 200, процент p2са от 200 до 399, процент p3 са от 400 до 599, процент p4 са от 600 до 799 и останалите p5процента са от 800 нагоре. Да се напише програма, която изчислява и отпечатва процентите p1p2p3p4 и p5.

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

0
Programming Basics
BaDJok3 avatar BaDJok3 2 Точки

Здравей,

 

https://pastebin.com/NivZjf9e това е работеща версия на твоят код.

Първо, когато се опитваш да намериш процент на нещо винаги трябва да пресмяташ с double или decimal. Виждам, че си опитала да го направиш с добавяне на .0 след 100, но уможението се извършва преди делението и p1Numbers / n пак остава целочислено деление.

Второ, за да може p1Numbers / n да не е  целочислено деление, трябва поне едната от променливите да е double или decimal. Тях ги промених горе при инициализирането.

Трето, при самото принтиране на конзолата, когато интерпулираме, между { и } трябва да са само променливите и форматирането им (ако има такова).

0
k.sevov avatar k.sevov 1077 Точки

Става целочислено деление при pxnumbers / n, тъй като са два int-a - резултатът винаги е 0.xx и тъй като е целочислено става нула. Ползвай double направо за едно от двете или си го направи с кастване - pxnumbers / (double) n. 

0
JolitaArnaudova avatar JolitaArnaudova 44 Точки

Идеята е, че трябва да умонжиш първо броя на числата по 100 и после да разделиш на n, техния общ брой. Иначе другата част от логиката ти е добре.

https://pastebin.com/yJR98Q5G

Поздрави и успех! :)

0
AleksandraArabadzhieva avatar AleksandraArabadzhieva 0 Точки

Благодаря и на трима ви! Супер отговори :) Много ми помогнахте!

0
traykova44 avatar traykova44 93 Точки

Здравейте,   код -https://pastebin.com/Nd1Tc1g0

Аз имам 100 точки на задачата, но имам два въпроса:

1- ви  Защо става само с ELSE IF ,  а c IF ако е на всяъде или поне на първете две места не?

Питам принципно да знам.

2-ри Защо става само с (number >= 600 ) , а с (number >= 600 && number < =799 ) не?

Питам принципно да знам.

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

0
boykopk avatar boykopk 147 Точки

Не става само с IF, защото в началото проверяваш дали е < 200 и после ако кажеш IF < 400 хващаш пак и тези дето са под 200. А с ELSE IF проверяваш само ако не е било под 200 в началото.

Това (number >= 600 && number < =799 ) би трябвало да работи също. Имаш един интервал между < =, може би затова не ти работи.

0
traykova44 avatar traykova44 93 Точки

Благодоря ,сега разбрах!

0
traykova44 avatar traykova44 93 Точки

А това е просто пример (number >= 600 && number < =799 ), принципно питам, в задачата е без растояние, но не работи правилно,  явно е друга Причината щом условието е вярно.

0
traykova44 avatar traykova44 93 Точки

Всъщност, въпрос, защо при подробна проверка (number >= 600 && number < =799 )  навсякъде не може само if-ове?

0
boykopk avatar boykopk 147 Точки

Така може само if-ове, но по удачно е със switch.

0
Tatevos avatar Tatevos 9 Точки

using System;

namespace ConsoleApp21
{
    class Program
    {
        static void Main(string[] args)
        {
            int counter = int.Parse(Console.ReadLine());
            double p1 = 0;
            double p2 = 0;
            double p3 = 0;
            double p4 = 0;
            double p5 = 0;
            double percent = counter/100;
            for (int i =0; i<counter; i++)
            {
                double number = double.Parse(Console.ReadLine());
                if(number < 200)
                {
                    p1++;

                }
                else if(number>= 200 && number <= 399)
                {
                    p2++;
                }
                else if(number >= 400 && number <= 599)
                {
                    p3++;
                }
                else if(number >= 600 &&  number <= 799)
                {
                    p4++;
                }
                else if(number >= 800)
                {
                    p5++;
                }
                
            }
           
            Console.WriteLine($"{p1/percent:f2}%");
            Console.WriteLine($"{p2/percent:f2}%");
            Console.WriteLine($"{p3/percent:f2}%");
            Console.WriteLine($"{p4/percent:f2}%");
            Console.WriteLine($"{p5/percent:f2}%");
        }
    }
}

 

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