|
355 | 355 |
|
356 | 356 | ### Тестване в Judge системата
|
357 | 357 |
|
358 |
| -Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/517#4](https://judge.softuni.bg/Contests/Practice/Index/517#4). |
| 358 | +Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/1371#4](https://judge.softuni.bg/Contests/Practice/Index/1371#4). |
359 | 359 |
|
360 | 360 |
|
361 | 361 | ## Задача: комбинации от букви
|
|
389 | 389 |
|
390 | 390 | ### Насоки и подсказки
|
391 | 391 |
|
392 |
| -За последната задача имаме по условие входни данни на **3 реда**, които са представени от по един символ от **ASCII таблицата** ([http://www.asciitable.com/](http://www.asciitable.com/)). Бихме могли да използваме вече **дефинирана функция** в езика C++, като преобразуваме входните данни в тип данни **`char`** по следния начин: |
| 392 | +За последната задача имаме по условие входни данни на **3 реда**, които са представени от по един символ от **ASCII таблицата** ([http://www.asciitable.com/](http://www.asciitable.com/)). Бихме могли да използваме **cin** в езика C++, като преобразуваме входните данни в типa данни **`char`** по следния начин: |
393 | 393 |
|
394 |
| - |
| 394 | + |
395 | 395 |
|
396 | 396 | Нека помислим как бихме могли да стигнем до **крайния резултат**. В случай че условието на задачата e да се принтират всички от началния до крайния символ (с пропускане на определена буква), как бихме постъпили?
|
397 | 397 |
|
398 | 398 | Най-лесният и удачен начин е да използваме **цикъл**, като преминем през **всички символи** и принтираме тези, които са **различни** от **буквата**, която трябва да пропуснем. Едно от предимствата на езика C++, е че имаме възможност да използваме различен тип данни за циклична променлива:
|
399 | 399 |
|
400 |
| - |
| 400 | + |
401 | 401 |
|
402 | 402 | Резултатът от изпълнението на кода е всички букви от **а** до **z** включително, принтирани на един ред и разделени с интервал. Това прилича ли на крайния резултат от нашата задача? Трябва да измислим **начин**, по който да се принтират по **3 символа**, както е по условие, вместо по **1**. Изпълнението на програмата много прилича на игрална машина. Там най-често печелим, ако успеем да наредим няколко еднакви символа. Да речем, че на машината имаме места за три символа. Когато **спрем** на даден **символ** на първото място, на останалите две места **продължават** да се изреждат символи от всички възможни. В нашия случай **всички възможни** са буквите от началната до крайната такава, зададена от потребителя, а решението на нашата програма е идентично на начина, по който работи игралната машина.
|
403 | 403 |
|
404 | 404 | Използваме **цикъл**, който минава през **всички символи** от началната до крайната буква включително. На **всяка итерация** на **първия** цикъл пускаме **втори** със същите параметри (но **само ако** буквата на първия цикъл е валидна, т.е. не съвпада с тази, която трябва да изключим по условие). На всяка итерация на **втория** цикъл пускаме още **един** със **същите параметри** и същата **проверка**. По този начин ще имаме три вложени цикъла, като в тялото на **последния** ще принтираме символите.
|
405 | 405 |
|
406 |
| - |
| 406 | + |
407 | 407 |
|
408 | 408 | Нека не забравяме, че се изисква от нас да принтираме и **общия брой валидни комбинации**, които сме намерили, както и че те трябва да се принтират на **същия ред**, разделени с интервал.
|
409 | 409 |
|
410 | 410 | ### Тестване в Judge системата
|
411 | 411 |
|
412 |
| -Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/517#5](https://judge.softuni.bg/Contests/Practice/Index/517#5). |
| 412 | +Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/1371#5](https://judge.softuni.bg/Contests/Practice/Index/1371#5). |
0 commit comments