Skip to content

Commit eae8ff5

Browse files
Update chapter-02-simple-calculations-exam-problems.md
1 parent 3473ec5 commit eae8ff5

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

chapter-02-simple-calculations-exam-problems.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ string str = firstName + " " + lastName + " is " + to_string(age) + " years old"
140140

141141
В случая може да пробваме със следното търсене: "[***C++ get whole number part of double***](https://www.google.com/?q=c%2B%2B+get+whole+number+part+of+double)". Откриваме, че едната възможност е да използваме функцията **`trunc`**. Тъй като тя работи с променливи от тип **`double`**, за броя редици и колони създаваме променливи също от този тип.
142142

143-
![](/assets/chapter-2-2-images/study-hall-02.png)
143+
![](/assets/chapter-2-2-images/01.Training-Lab-02.png)
144144

145145
Втори вариант: както вече знаем, операторът за деление **`/`** има различно действие върху цели и реални числа. **При деление на целочислен с целочислен тип** (напр. **`int`**), **върнатият резултат е отново целочислен**. Следователно можем да потърсим как да преобразуваме реалните числа, които имаме като стойности за височината и широчината, в цели числа и след това да извършим делението.
146146

@@ -150,7 +150,7 @@ string str = firstName + " " + lastName + " is " + to_string(age) + " years old"
150150

151151
Със **`cout`** отпечатваме резултата на конзолата.
152152

153-
![](/assets/chapter-2-2-images/study-hall-03.png)
153+
![](/assets/chapter-2-2-images/01.Training-Lab-03.png)
154154

155155
### Тестване в Judge системата
156156

@@ -216,15 +216,15 @@ string str = firstName + " " + lastName + " is " + to_string(age) + " years old"
216216

217217
За да прочетем входните данни декларираме променливи, като внимаваме да използваме правилният тип данни и да ги именуваме по такъв начин, който да ни подсказва какви стойности съдържат променливите. Със **`cin`** четем стойностите от конзолата като типовете данни, които ще използваме ще бъдат **int** и **double**
218218

219-
![](/assets/chapter-2-2-images/vegetable-exchange-01.png)
219+
![](/assets/chapter-2-2-images/02.Vegetable-Market-01.png)
220220

221221
Извършваме необходимите изчисления:
222222

223-
![](/assets/old-images/chapter-2-2-images/vegetable-exchange-02.png)
223+
![](/assets/old-images/chapter-2-2-images/02.Vegetable-Market-02.png)
224224

225-
В условието на задачата не е зададено специално форматиране на изхода, следователно трябва просто да изчислим исканата стойност и да я отпечатаме на конзолата. Както в математиката, така и в програмирането делението има приоритет пред събирането. За задачата обаче трябва първо да **сметнем сбора** на двете получени стойности и след това да **разделим на 1.94**. За да дадем предимство на събирането, може да използваме скоби. Със **`cout`** отпечатваме изхода на конзолата.
225+
В условието на задачата не е зададено специално форматиране на изхода, но за да може **Judge** приеме решението ни, трябва да използваме **setprecision** заради неточностите, които се получават в сметките. Както в математиката, така и в програмирането делението има приоритет пред събирането. За задачата обаче трябва първо да **сметнем сбора** на двете получени стойности и след това да **разделим на 1.94**. За да дадем предимство на събирането, може да използваме скоби. Със **`cout`** отпечатваме изхода на конзолата.
226226

227-
![](/assets/chapter-2-2-images/vegetable-exchange-02.png)
227+
![](/assets/chapter-2-2-images/02.Vegetable-Market-03.png)
228228

229229
### Тестване в Judge системата
230230

@@ -297,15 +297,15 @@ string str = firstName + " " + lastName + " is " + to_string(age) + " years old"
297297

298298
Първото, което трябва да направим, е да разгледаме **входните данни** на задачата. Важно е да внимаваме за последователността, в която са дадени. Със **`cin`** четем стойностите от конзолата.
299299

300-
![](/assets/chapter-2-2-images/tile-repair-01.png)
300+
![](/assets/chapter-2-2-images/03.Change-Tiles-01.png)
301301

302302
След като сме инициализирали променливите и сме запазили съответните стойности в тях, пристъпваме към **изчисленията**. Тъй като стойностите на променливите **`n`**, **`a`** и **`b`**, с които работим, са запазени в променливи от тип **`int`**, за резултатите от изчисленията може да дефинираме **променливи също от този тип**.
303303

304304
![](/assets/old-images/chapter-2-2-images/03.Change-tiles-03.png)
305305

306306
Променливите **`w`** и **`h`** са от тип **`double`**, т.е. за **лицето на една плочка** създаваме променлива от същия тип. За финал **изчисляваме стойностите, които трябва да отпечатаме** на конзолата. **Броят** на необходимите **плочки** получаваме като **разделим площта, която трябва да се покрие, на площта на единична плочка**. При деление на две числа, от които **едното е реално**, резултатът е **реално число** с цяла и дробна част. Следователно, за да са коректни изчисленията ни, запазваме резултата в променлива от тип **`double`**. В условието на задачата не е зададено специално форматиране или закръгляне на изхода, затова просто отпечатваме стойностите със **`cout`**.
307307

308-
![](/assets/chapter-2-2-images/tile-repair-02.png)
308+
![](/assets/chapter-2-2-images/03.Change-Tiles-02.png)
309309

310310
### Тестване в Judge системата
311311

@@ -376,19 +376,19 @@ string str = firstName + " " + lastName + " is " + to_string(age) + " years old"
376376

377377
**Декларираме променливите**, които ще използваме, като отново внимаваме да изберем **смислени имена**, които подсказват какво съдържат те. Инициализираме техните стойности: със **`cin`** четем подадените числа на конзолата.
378378

379-
![](/assets/chapter-2-2-images/money-01.png)
379+
![](/assets/chapter-2-2-images/04.Money-01.png)
380380

381381
Извършваме необходимите изчисления:
382382

383-
![](/assets/chapter-2-2-images/money-02.png)
383+
![](/assets/chapter-2-2-images/04.Money-02.png)
384384

385385
![](/assets/old-images/chapter-2-2-images/04.Money-03.png)
386386

387387
Накрая **пресмятаме стойността на комисионната** и я **изваждаме от сумата в евро**. Нека обърнем внимание на начина, по който можем да изпишем това: **`euro -= commission * euro`** e съкратен начин за изписване на **`euro = euro - (commission * euro)`**. В случая използваме **комбиниран оператор за присвояване** (**`-=`**), който **изважда стойността от операнда вдясно от този вляво**. Операторът за умножение (**`*`**) има **по-висок приоритет** от комбинирания оператор, затова изразът **`commission * euro`** се изпълнява първи, след което неговата стойност се изважда. (повече за операторите може да прочетете на [Светлин Наков, Веселин Колев и колектив: "Въведение в програмирането със C++", стр. 150](http://www.introprogramming.info/intro-csharp-book/read-online/glava3-operatori-i-izrazi/#_Toc298863965))
388388

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

391-
![](/assets/chapter-2-2-images/money-03.png)
391+
![](/assets/chapter-2-2-images/04.Money-03.png)
392392

393393
Нека обърнем внимание на нещо, което важи за всички задачи от този тип: разписано по този начин, решението на задачата е доста подробно. Тъй като условието като цяло не е сложно, бихме могли на теория да напишем един голям израз, в който директно след получаване на входните данни да сметнем изходната стойност. Напр., такъв израз би изглеждал ето така:
394394

@@ -454,7 +454,7 @@ string str = firstName + " " + lastName + " is " + to_string(age) + " years old"
454454

455455
**Декларираме променливите**, които ще използваме, като отново се стараем да изберем **подходящи имена**. Със **`cin`** четем подадените числа на конзолата. Типовете данни, които ще използваме ще бъдат **`int`** или **`double`**
456456

457-
![](/assets/chapter-2-2-images/daily-profit-01.png)
457+
![](/assets/chapter-2-2-images/05.Daily-Earnings-01.png)
458458

459459
Извършваме изчисленията:
460460

@@ -464,7 +464,7 @@ string str = firstName + " " + lastName + " is " + to_string(age) + " years old"
464464

465465
Накрая остава да изведем резултата на конзолата. Забелязваме, че се **изисква форматиране на числената стойност до втория знак след десетичната точка**. За целта можем да използваме **placeholder, т.е. място, което ще бъде заместено с конкретна стойност при отпечатването**.За целта ще използваме **printf**, за да форматираме резултата коректно.
466466

467-
![](/assets/chapter-2-2-images/daily-profit-02.png)
467+
![](/assets/chapter-2-2-images/05.Daily-Earnings-03.png)
468468

469469
### Тестване в Judge системата
470470

0 commit comments

Comments
 (0)