Loading...

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

JOHNY avatar JOHNY 196 Точки

[Homework] Programming Basics - Primitive Data Types and Variables - Problem {8} - IsoscelesTriangle - търсено решение (цикъл)

Привет колеги,

Първо ще се обърна към модераторите - моля, НЕ заключвайте тази тема! Съгласно правилата използвах търсачката, прегледах всички (дублирани и незаключени теми) и най-прясната е ТАЗИ. Тя е от две страници, в които има различни кодове, предложения, хипотези и т.н. Пускайки това решение там смятам, че ще е объркващо за всеки новобранец да се рови из различните варианти и да разбере какво точно се случва (и малко код е много за нас, а много е ужасно МНОГО). В края на темата е зададен въпрос за решение с цикъл, но явно никой не го е направил, защото липсва отговор. 

Още веднъж - най-учтиво Ви моля, с оглед на горното и с желание за дискусия да не заключвате темата ако предизвиква интерес. Обещавам, че в противен случай лично ще я заключа и ще си посипя главата с пепел (същият триъгълник, но с по-подходящи символи примерно). Надявам се, че 9-тата тема със същото заглавие ще се радва на липсата на катинар като останалите 8. Благодаря Ви предварително!

 

И така...

Видях, че хората са питали за решение с цикъл.

Е, аз така или иначе реших да се опитам да го направя по подобен начин, защото:

  1. Не познавам операторите и командите;
  2. Стори ми се интересно да може да се развива, тоест триъгълника да не е просто с 5 символа за основа, а с 15, 50 или колкото ми се струва забавно в момента;
  3. Мързи ме да пиша много и почти повтарящи се редове, които отговарят на т.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 - дясната половина). За съжаление нямам нужните познания, това е само хипотеза.

1
Programming Basics 08/04/2015 23:32:26
KatyaMarincheva avatar KatyaMarincheva 572 Точки

"Помощ за правилното изпълнение на алгоритъма ми ползвах" JOHNY

Искам да изкажа огромната си благодарност към JOHNY за идеите му за алгоритми!

Аз съм взела вече другаде изпита C#1 (отговарящ на C# в Basics SoftUni) с отличен, но покрай JOHNY за първи път имам чуството че реално се занимавам с програмиране - алгоритмите за решение, които предлага са светкавични, и до един са изпълними и работят! Покрай него започнах и аз да се престрашавам да измислям собствени алтернативни решения, и взе помалко да ми се получава :)

Предложи ми например да програмирам начертаването на само една половина от Isosceles Triangle, да я запазя, и после без нови изчисления да отпечатам огледално копие на първата половина - ами да, възможно е :)

Дотук стигнах до 3 различни варианта на решение:

http://pastebin.com/UVNdu1tB

http://pastebin.com/NWZsaiv3

http://pastebin.com/6ExqRke2

Това, което той прави е отвъд решаването на задачи, той измисля задачи - в което е самата същност на идеята за програмирането, да се намират нови приложения.

Background: впечатлена съм въз основа на 46 години живот сред програмисти - майка ми е програмистка от 1969 година, на историческия IBM System/360.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.