Софтуерно Инженерство
Loading...
+ Нов въпрос
Panglot avatar Panglot 22 Точки

Домашно Console Input Output. Грешни задачи.

Problem 1. Sum of 3 integers

Write a program that reads 3 integer numbers from the console and prints their sum. Examples:

a

b

c

sum

3

4

11

19

-2

0

3

1

5.5

4.5

20.1

30.1


На някого да му е направило впечатление, че първо 3+4+11 е 18 а не 19 и второ че в задачата пише 3 INTEGER numbers  а в последния ред от примера приема дробни числа? 

Problem 3.       Circle Perimeter and Area

Write a program that reads the radius r of a circle and prints its perimeter and area formatted with 2 digits after the decimal point. Examples:

 

 

r

perimeter

area

2

12.57

12.57

3.5

21.99

38.48

2*3.14*2=12.56 

2*3.14*3.5=21.98
3.14*3.5*3.5=38.47

 

 

parranormall avatar parranormall 3 Точки

Здравей и аз съм пред дилема - Aко направя задачата с float, примерите ще работят, но нарушавам условието, понеже нямам 3 integer стойности. Aко обаче го направя с int, последния пример няма да се смята. Няма невъзможни неща, просто нямам идея как трябва да стане :D

0
Masovski avatar Masovski 211 Точки

2*3.14*2=12.56 

2*3.14*3.5=21.98
3.14*3.5*3.5=38.47

Грешката не е в задачата, а в 3.14. Пи далеч не е само 3.14. Можеш да извадиш стойността на Пи чрез Math.PI в C#.

Сметни пак същите неща, само че използвай повече числа след десетичната запетая от числото Пи - 22/7.

След като закръглиш, ще се получат точно стойностите от примера.

2
Panglot avatar Panglot 22 Точки

Да тук си прав. Просто по презюмция сметнах, че няма нужда да ползвам по голяма прецизност за Пи тъй като сметките са училищни и взимах стойността използвана в училище която е 3.14. С по-голяма прецизност излизат точни. Моя грешка.

0
mantodeus avatar mantodeus 17 Точки

Мислех че на 5 задача също има грешка, но явно е някаква уловка - не може на първия ред при c = 0.5 хем да ни допълва с 0 до три знака след десетичната запетая, а при c = 10 000 да ни го оставя така. Ако се ползва форматирането Zero Padding от тип {0:0.000} не  се изпълнява условието. Ако пък се ползва Space Padding ще реже символите след третия знак и ако имаме цяло число ще го оставя така, но ако се въведат по малко от три знака след десетичната запетая няма да имаме нули като в първия пример. Същото е и с второто число. Няма да се мине без проверки за разделителен знак и различни сценарии :)

2
Fleshian avatar Fleshian 378 Точки

Здравей.
И аз доста се почудих какво да напрвя за това си вкарах един If else койото проверява дали числото е цяло или с десетична запетая и направих следното: 

if (c % 1 == 0) // whole number
{
Console.Write("|{0,-10:X}|{1}|{2,10:F2}|{3,-10}|", a, aBinary, b, c);
}
else
{
Console.Write("|{0,-10:X}|{1}|{2,10:F2}|{3,-10:F3}|", a, aBinary, b, c);
}

Разликата е там че в пъривя слуай му казвам да не слага знаци {3,-10}
а в другия да сложи 3 знака след запетаята {3,-10:F3} .

0
vgrozev avatar vgrozev 0 Точки

Съжалявам че толкова късно, ама ме нямаше дълго време.

Това е едно от решенията:

Console.WriteLine("|{0, -10:X}|{1}|{2, 10:0.##}|{3, -10:0.###}|", a, binaryA, b, c);

0