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
dilqna9 avatar dilqna9 44 Точки

Резултата ти може да е double, но на входа можеш да подадеш int. Във входа на задачата е пояснено, че числата, които ще се подават ще бъдат цели.

0
04/08/2016 13:02:49
ivocvetkov avatar ivocvetkov 0 Точки

явно аз бъркам малко понеже дълго време четох джава, значи ако входното е int c# може сам да обърне резултата в double ли?

0
borislav9212 avatar borislav9212 745 Точки

Входното число няма как да ти е 5.6, 6.9, тоест double, затова е int - цяло число 6, 8,12 то показва броиката на следващите double числа.

0
AntyfrizZz avatar AntyfrizZz 238 Точки

Здравей,

 

Ако го направиш както казва dilqna9, и всичко ти е int, в момента в който трябва да изчислиш процентите трябва да parsе-неш или да кастнеш едно от числата (или и 2те) към double, за да ти изчисли правилно всичко - http://pastebin.com/XM7U6J2q

В твоя случай, ти направо си ги създаваш double, което ти спестява парсването/кастването.

Чесно да ти кажа не знам как е правилно, но аз бих си ги оставил инт и след това бих парснал процентите.

 

Поздрави!

0
anna.ilieva avatar anna.ilieva 6 Точки

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

 

Поздрави,

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