Homework-Introduction-to-programming-Problem-15-Age-after-10-Years - Шантаво решение
Здравейте,
Преди да Ви покажа какво сътворих днес (с невероятната помощ на Пенка за първата част и Катя в продължението - благодаря Ви дами!) искам да уточня, че решението е далеч от зададеното.
Реших да си развинтя фантазията и си създадох мислен алгоритъм за различните ситуации. Казвам мислен и вероятно неясен, защото Пенка днес бая ококорено ме гледаше докато обяснявам, а Катя, която ми помагаше през останалото време каза (цитирам "Работи! Сега разбрах какво си имал предвид!").
Накратко програмката прави следното:
1. Поздравява потребителя и му задава дежурния въпрос за годинките му към днешна дата.
2. Прави проверка дали не е въвел текст и ако е така го връща с междинно текстово съобщение.
3. При въвеждане на число се правят няколко проверки:
- Ако е в диапазона от 0 до -39 извежда текстово съобщение А (с текст естествено, А е за да Ви е по-лесно да го разберете) и го връща за корекция.
- Ако е в диапазона от -40 до - колкото успее да понесе (не ми остана време да разуча как да не е int) извежда текстово съобщение Б и го връща за корекция.
- Ако е в диапазона от 1 до 7 извежда текстово съобщение В и го връща за корекция.
- Ако е в диапазона от 90 до 100 извежда текстово съобщение Г и го връща за корекция.
- Ако е над 101 извежда текстово съобщение Д и го връща за корекция.
4. След коректно зададено число за възрастта пита дали вече е имал ЧРД през текущата година. Задават се Y или N като коректни отговори.
- Прави се проверка дали е въведено Y или N и ако символа е различен го връща за корекция.
- Ако е въведено Y се задава стойност 0 на конкретна променлива.
- Ако е въведено N се задава стойност 1 на конкретна променлива.
Идеята на променливата е, че ако пресмятаме за след 10 години примерно, но потребителят ДНЕС все още не е имал ЧРД през тази година, то след тези 10 години той ще е на възраст X, но в края на годината ще е на (X+1). Реших да изведа и двете възможности като резултат - все пак човека одъртява и заслужава уважение, нали?
5. Пита се потребителят за какъв диапазон иска да пресметнем.
- Прави се проверка дали е число, извежда се текстово съобщение ако НЕ е така и го връща за корекция.
- Прави се проверка дали не е въвел число над 100 (примерно съм го избрал) и се извежда текстово съобщение ако е така (продължава напред).
6. Пресмятат се годините и се извеждат съобщения за:
- При вече празнуван ЧРД се извежда съобщение "Ще бъдете на Х години"
- При предстоящ ЧРД се извежда съобщение "Ще бъдете на (X+1) години"
7. Изпращаме го с блага дума и туй-то.
Недостатъци:
1. Не ми остана време да се заиграя и да избягам от int. В момента може а се въведе 7848745563.
2. След като добавих кода в pastein усетих, че съм пропуснал да направя проверка за отрицателни стойности да пресмятане "след колко години". В момента е възможно човек да се "подмлади".
3. Кода не е приемливо подреден по две причини. Веднъж, защото го писах в dotnetfiddle.net r го прехвърлях през уърд от комп на лаптоп, че санмо на лаптопа съм със 7-а и Visual) и втори път, защото съм новобранец и нямам достатъчно култура за да го правя грамотно. Вероятно в началото не съм упоменал всички променливи (търпяха развитие докато си играех и развивах идеята). Ще го поправя.
Първият недостатък ще го реша с Ваша помощ или ще се разровя за кодове, а вторият ще го оправя още утре (умирам за сън, но нямах търпение да го пусна и събера съвети).
И така - моето недоразумение можете да видите ТУК и Ви моля да тествате с:
1. "На колко години сте сега" - стойности като -41,-30,0,3,91,101 (има ограничения от минус безкрайност до -40, от нула до -40, от 0 до 7, от 7 до 90, от 90 до 99, над 100), текст вместо числа.
2. "Имахте ли вече рожден ден" - вместо Y или N каквото си изберете.
3. "Имахте ли вече рожден ден" - варианти Y и N и техните производни.
4. "След колко години искате да пресметна...?" - под 100, над 100 (подсещам, че отрицателните числа се приемат, а не трябва)
Приемам всякакви критики и съвети, защото както споменах по-горе - това ми е сефтето със C# и със сигурност има пропуски и недостатъци. Ако съм пропуснал нещо от описанието - извинявайте, бая е късничко, а и десетина часа пред компа в учене на новости със сигурност са ми дошли в повече.
Благодаря предварително на отзовалите се!
Благодаря за подсещането.
Използвах го, защото ми е познато (от преди пет петилетки) при "Правец 82", а и предполагам имаш идея колко е трудно/невъзможно да изговаряш правилни изречения, когато още сричаш и единичните думи. Не всичко става за един ден и горният код е абсолютно потв ърждение на максимата. Извън това, че съм доволен, че изобщо работи (факт е на 6-7 чаа заигравка и много помощ от гореспоменатите дами и без бъкел познания на материята от моя страна), ще ти бъда благодарен да споменеш и заместителите на "комунистическата команда" goto.
Със сигурност ще бъде полезно не само за мен, а и за останалите "нулокурсници".
Благодаря предварително.
всякаква логика която влияе на поведението на програмата замества goto :)
break, continue, if/else if/else, switch
Има лекция относно control-flow logic там е обяснено(мисля, че лекцията се казваше така)