Софтуерно Инженерство
Loading...
martinml avatar martinml 261 Точки
Best Answer

Увеличават се, но трябва да зададеш result1 .. result5 след цикъла - ако го правиш преди това, промяната не им влияе. Освен това, трябва да cast-неш p1 .. p5 към double, иначе ги закръгля, или да ги направиш double още в самото начало.

Поправено решение

0
kamen971 avatar kamen971 1 Точки

Тръгна на 100% , но според мен няма логика p1...p5  да са double . Благодаря !

1
martinml avatar martinml 261 Точки

Когато вършиш операции с int и int, получаваш обратно int (дори и да го използваш, за да декларираш double, т.е. всичко след дес. запетая ще се загуби). Ако поне едното е double, получаваш double.

Това е един прост пример:

int a = 7;
int b = 2;
double result = a/b;
Console.WriteLine(result); // На конзолата се принтира 3

7 / 2 в математиката е 3.5, но тук и a, и b са int, следователно програмата трябва да върне int и получаваш 3.

Ако a или b са double, ще получиш double:

double a = 7;
int b = 2;
double result = a/b;
Console.WriteLine(result); // На конзолата се принтира 3.5

 Това вече е операция между int и double, затова няма закръгляне и получаваш точен отговор.

Кастването върши същата работа - превръща единия int в double, за да не се получи целочислено деление.

Можеш да видиш още информация тук в книгата на Наков (използвай ctrl + f и напиши целочислено деление)

1
21/08/2017 18:23:22