задача 21 деление без остатък
условието на задачата е:
Четвърта задача от междинния изпит на 26 март 2016. Тествайте решението си тук.
Дадени са n цели числа в интервала [1…1000]. От тях някакъв процент 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 реда стои по едно цяло число в интервала [1…1000] – числата които да бъдат проверени на колко се делят.
Изход
Да се отпечатат на конзолата 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 дава непълно решение
Ето един прост пример:
в условието на задачата пишеше, че трябва да има 2 цифри след запетаята в крайният резултат и затова използвах double, или бъркам?
Здравей,
Имам предвид числото, което ти показва колко числа ще имаш след него. Един вид 1вото число да е инт, вече другите n числа е правилно да са double.
EDIT: dilqna9 е права.
Поздрави!
Резултата ти може да е double, но на входа можеш да подадеш int. Във входа на задачата е пояснено, че числата, които ще се подават ще бъдат цели.
явно аз бъркам малко понеже дълго време четох джава, значи ако входното е int c# може сам да обърне резултата в double ли?
Входното число няма как да ти е 5.6, 6.9, тоест double, затова е int - цяло число 6, 8,12 то показва броиката на следващите double числа.
Здравей,
Ако го направиш както казва dilqna9, и всичко ти е int, в момента в който трябва да изчислиш процентите трябва да parsе-неш или да кастнеш едно от числата (или и 2те) към double, за да ти изчисли правилно всичко - http://pastebin.com/XM7U6J2q
В твоя случай, ти направо си ги създаваш double, което ти спестява парсването/кастването.
Чесно да ти кажа не знам как е правилно, но аз бих си ги оставил инт и след това бих парснал процентите.
Поздрави!
И аз блаодаря за хубавото обеснение, бях допуснала същата грешка и послсе прочетох във форума коментара ти.
Поздрави,