Loading...

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

ivocvetkov avatar ivocvetkov 0 Точки

задача 21 деление без остатък

условието на задачата е:

Четвърта задача от междинния изпит на 26 март 2016. Тествайте решението си тук.

Дадени са n цели числа в интервала [11000]. От тях някакъв процент p1 се делят без остатък на 2, друг процент p2 се делят без остатък на 3, друг процент p3 се делят без остатък на 4. Да се напише програма, която изчислява и отпечатва процентите p1, p2 и p3.

Пример: имаме n = 10 числа: 680, 2, 600, 200, 800, 799, 199, 46, 128, 65. Получаваме следното разпределение и визуализация:

Деление без остатък на:

Числа в диапазона

Брой числа

Процент

2

680, 2, 600, 200, 800, 46, 128

7

p1 = 7.0 / 10 * 100 = 70.00%

3

600

1

p2 = 1 / 10 * 100 = 10.00%

4

680, 600, 200, 800, 128

5

p3 = 5 / 10 * 100 = 50.00%

Вход

На първия ред от входа стои цялото число n (1 ≤ n ≤ 1000) – брой числа. На следващите n реда стои по едно цяло число в интервала [11000] – числата които да бъдат проверени на колко се делят.

Изход

Да се отпечатат на конзолата 3 реда, всеки от които съдържа процент между 0% и 100%, с точност две цифри след десетичната точка, например 25.00%, 66.67%, 57.14%.

  • На първият ред – процентът на числата които се делят на 2
  • На вторият ред – процентът на числата които се делят на 3
  • На третият ред – процентът на числата които се делят на 4

Примерен вход и изход

Вход

Изход

 

Вход

Изход

10

680

2

600

200

800

799

199

46

128

65

70.00%

10.00%

50.00%

3

3

6

9

 

33.33%

100.00%

0.00%

 

задачата я реших със следния код http://pastebin.com/CPnXFbXa - в случая само с if { } конструкции една след друга

а преди това я написах с if else и не работеше правилно - следния код -http://pastebin.com/BkNwpTej

може ли да ми обясните защо в тази задача работи правилно само с if във for цикъла, а if else дава непълно решение

Тагове:
0
Programming Basics
AntyfrizZz avatar AntyfrizZz 238 Точки

Здравей,

 

Ако напишеш if + 2 x else if, обхожда и спира при 1вото, което върне true.

При случая с 3 if-а, обхожда всеки независимо от резултата на другите.

Пример: подават ти числото 6. Ако използваш if else, то ще ти увеличи само брояча на тези, които се делят на 2 и ще приключи, без да провери дали числото се дели и на 3 и на 4. В случая на 3 if-а, ще мине през всеки един if и ако се дели без остатък ще увеличи съответния брояч.

И един съвет, number1 не е удачно име за променлива, а също така е добре да е int, а не double.

 

Поздрави!

1
btonew avatar btonew 43 Точки

Ето един прост пример:

int variable = 10;

if (variable > 5)
{
	Console.WriteLine ("variable > 5");
}
if (variable > 6)
{
	Console.WriteLine ("variable > 6");
}
if (variable > 7)
{
	Console.WriteLine ("variable > 7");
}
/* Изход:
* variable > 5
* variable > 6
* variable > 7
*/
int variable = 10;

if (variable > 5)
{
	Console.WriteLine ("variable > 5");
}
else if (variable > 6)
{
	Console.WriteLine ("variable > 6");
}
else if (variable > 7)
{
	Console.WriteLine ("variable > 7");
}
// Изход: variable > 5

 

1
ivocvetkov avatar ivocvetkov 0 Точки

в условието на задачата пишеше, че трябва да има 2 цифри след запетаята в крайният резултат и затова използвах double, или бъркам?

0
AntyfrizZz avatar AntyfrizZz 238 Точки

Здравей,

 

Имам предвид числото, което ти показва колко числа ще имаш след него. Един вид 1вото число да е инт, вече другите n числа е правилно да са double.

 

EDIT: dilqna9 е права.

 

Поздрави!

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