[Homework] Programming Basics - Primitive Data Types and Variables - Problem {8} - IsoscelesTriangle - търсено решение (цикъл)
Привет колеги,
Първо ще се обърна към модераторите - моля, НЕ заключвайте тази тема! Съгласно правилата използвах търсачката, прегледах всички (дублирани и незаключени теми) и най-прясната е ТАЗИ. Тя е от две страници, в които има различни кодове, предложения, хипотези и т.н. Пускайки това решение там смятам, че ще е объркващо за всеки новобранец да се рови из различните варианти и да разбере какво точно се случва (и малко код е много за нас, а много е ужасно МНОГО). В края на темата е зададен въпрос за решение с цикъл, но явно никой не го е направил, защото липсва отговор.
Още веднъж - най-учтиво Ви моля, с оглед на горното и с желание за дискусия да не заключвате темата ако предизвиква интерес. Обещавам, че в противен случай лично ще я заключа и ще си посипя главата с пепел (същият триъгълник, но с по-подходящи символи примерно). Надявам се, че 9-тата тема със същото заглавие ще се радва на липсата на катинар като останалите 8. Благодаря Ви предварително!
И така...
Видях, че хората са питали за решение с цикъл.
Е, аз така или иначе реших да се опитам да го направя по подобен начин, защото:
- Не познавам операторите и командите;
- Стори ми се интересно да може да се развива, тоест триъгълника да не е просто с 5 символа за основа, а с 15, 50 или колкото ми се струва забавно в момента;
- Мързи ме да пиша много и почти повтарящи се редове, които отговарят на т.2.
Кодът може да видите ТУК, като на всеки ред съм описал какво точно правя.
Ако на някой не му е ясно, алгоритъмът е следния:
- Задавам си символа, който ще принтвам (по условието на задачата е в случая, но може да си го смените с нещо интересно за Вас);
- Задавам си променливи "a","b" и "c", като използвам "a" за интервалите в триъгълника, "b" - за интервалите отляво на триъгълника, а "c" - за броя печатане на символи в основата. //Бонус за развитие- лесно можем да поискаме от потребителя от колко символа да е триъгълника. Проверка за числа и хоп - ето ти желано от него триъгълниЩЕ.
- Принтвам си върха ( в конкретния код ръчно е поставен на мястото си, но мога да го барна, така че да е автоматично поставен (n на брой интервали, в зависимост от броя редове), както правя с интервалите по-долу);
- Започвам цикъл, в който намалявам интервалите "b" вляво от триъгълника с по 1 (за да върви както трябва), увеличавам "а" с 2 (логично за да се разширява в двете посоки, тоест "a"=2 х стъпката на "b"). Печатам всеки ред, докато "a" не стане 11 (толкова съм си избрал като пример, но спокойно може да променяте стойностите "а" и "b" едновременно и до 1000000);
- След приключването на цикъла принтвам основата, като броя символи е с 2 повече от стойността на a (един отляво и един отдясно за да прилича на триъгълник изобщо);
- Потупвам се по рамото, самопрегръщам се и компилирам.
Ще ме прощавате за недотам добрия английски и вероятно нескопосания тип на решение, но ми се ще да прочета какво мислите за него и респективно как бихте го подобрили.
Бих възприел с удоволствие подобрения в стил "нулево ниво", тоест не преписваме, не крадем и използваме само "елементарни" и преподавани оператори. Високо ще оценя отделеното от Вас време и за по-сложни решения, но предупреждавам, че вероятно няма да ги разбера.
Благодаря предварително на всички отзовали се!
P.S. Хрумна ми и друго решение за цикъла, при което ще избегнем цикъл в цикъл. Печатаме половината триъгълник и огледалото му (триъгълника е равнобедрен, разделете го мислено по височината му - условно печатаме string a - лявата половина, който е зададен и string -a - дясната половина). За съжаление нямам нужните познания, това е само хипотеза.