Loading...
rosenrusev avatar rosenrusev 175 Точки

[Homework] C# Basics - Conditional Statements

Здравейте,

 

Отварям тема за новото домашно.

Решенията ми ще следват едно по едно след като съм готов с всяко от тях :)

1. Problem 1 - Exchange If Greater . Използвал съм  XOR алгоритъм за размяна на стойностите на две променливи без да е необходима трета. Повече инфо тук: XOR_swap_algorithm .

Така представено решението ми работи само за целочислен тип.

В тази задача третата проверка е объркана. Трябва резултата да е 4.5 5.5 (по условие). Втората грешка в условието е, че стойностите не са целочислени (третата проверка).

2. Problem 2 - Bonus Score . Използвал съм switch-case.

3. Problem 3 - Check for a Play Card. Използвал съм switch statement.

4. Problem 4 - Multiplication Sign. Допълнителна информация към задачата Subset_sum_problem . Така написана задачата обхваща 8 случая при комбинация на всички позиции с положителна и отрицателна стойност. Използвал съм if оператори.

5. Problem 5 - The Biggest of Three Numbers . Използвал съм if-else.

6. Problem 6 - The Biggest of Five Numbers. Използвал съм 5 условия if-else.

7. Problem 7 - Sort 3 Numbers with Nested Ifs . Използвал съм if-else.

8. Problem 8 - Digit As Word . Използвал съм switch statement.

9. Problem 9 - Play with Int, Double and String . Използвал съм switch statement.

10.//TODO. Как се парсва дата и време Инфо от msdn .

11.//TODO

12.//TODO

Тагове:
35
Programming Basics
scinetic avatar scinetic 40 Точки

http://pastebin.com/n33VPCeY

Ето моят опит на 12-та задача. Изкарва ги, но с повторения. Опитах се да направя всеки път когато стане да ги вкарва в масив и от масива вече да махам всичките, които са еднакви, но не ми се получи и си изтрих опитите..

0
dzt82 avatar dzt82 0 Точки

На 5, 6 и 7 задача мисля, че трябва сравнението да ти е навсякъде с ">=", а не само с  ">". Пробвай като въведеш две еднакви големи числа например: a=7 b=7 c=2. При това положение би трябвало да сработи само с ">=" .

0
RadkaGicheva avatar RadkaGicheva 37 Точки

Може би е малко късно за това домашно вече :) но все пак предлагам едно кратко и лесно четимо решение на Проблем 4  - Multiplication Sign със използване на флаг, който следи знака на произведението : http://pastebin.com/tHZnm3Vz  

1
nikola.ninov avatar nikola.ninov 4 Точки

class Program
{
static void Main()
{
float a = float.Parse(Console.ReadLine());
float b = float.Parse(Console.ReadLine());
float c = float.Parse(Console.ReadLine());
double mult;
mult = a * b * c;
   if (mult>0)
     {
        Console.WriteLine("+");
     }
      else
            if(mult == 0)
            {
                  Console.WriteLine("0");
            }
              else
           {
               Console.WriteLine("-");
           }
  }
  }

0
10/04/2015 17:17:11
v1ppers0nn avatar v1ppers0nn 234 Точки

Хораааа, забелязахте ли, че на 5-ти и 6-ти проблем (най-големите 3 и 5 числа), ако въведем две еднакви числа не излиза отговор. 
Погледнете на (най-големите 5) 4-тия пример е дадено:
a= 0 b=-2.5 c=0 d=5 e=5 biggest=5
И не ми изкарва отговор....

Ето моето решение

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

0
HPetrov avatar HPetrov 822 Точки

Е навярно се иска да се проверява дали числото не е ">=" вместо само по-голямо. Така или иначе ако имаш числата 5, 5, 3 -> 5 е най-голямото число.

0
v1ppers0nn avatar v1ppers0nn 234 Точки

Да но както съм го решил аз, не дава отговор :)

0
a.angelov avatar a.angelov 1316 Точки

Здравейте,

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

01. ExchangeIfGreater

02. BonusScore

03. CheckForAPlayCard

04. MultiplicationSign

05. TheBiggestOfFiveNumbers

06. TheBiggestOfFiveNumbers

07. Sort3NumbersWithNestedIfs

08. DigitAsWord

09. PlayWithIntDoubleAndString

10. BeerTime

11. NumberAsWords

12. ZeroSubset

 

Изпитните задачи:

13. Triangle

14. Pairs

15. House

16. MagicDates

17. BitKiller

 

 

1
Villy avatar Villy 1 Точки

Относно проблем 6: Някаква идея какво не му е наред на този код изащо при тест с отрицателни числа -3,-0.5,-1.1,-2,-0.1 ми дава грешен резултат.http://pastebin.com/H5FuFBiJ

0
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Villy, защото са използвани if-else вместо само if. При if-else се проверява първото условие дали е изпълнено и ако е изпълнено, то изобщо не преминава през останалите if-else. Ако не е изпълнено едва тогава преминава към следващия if-else. За да ти работи коректно програмата махни навсякъде else, така че да ти останат само if-ове. При този вариант програмата ще обходи всеки if.

2
boyanov avatar boyanov 65 Точки

На 4-та задача ако вкараш 2 0 2 не ти излиза 0 защото си сложил проверката за 0 след целия код, вместо да започнеш с нея.

0
anton_mironov avatar anton_mironov 19 Точки

Здравейте, за мен това беше най-лесната задача от всички домашни дотук.Ето го моето скромно решение:

namespace _04MultiplicationSign
{
   class MultiplicationSign
   {
     static void Main()
     {
         double a = double.Parse(Console.ReadLine());
         double b = double.Parse(Console.ReadLine());
         double c = double.Parse(Console.ReadLine());
         double d = a * b * c;
         if (d > 0)
         {
              Console.WriteLine("+");
         }
         else if(d < 0)
         {
              Console.WriteLine("-");
         }
         else if (d == 0)
         {
              Console.WriteLine("0");
         }



      }
   }
}

0
ph.kolarov avatar ph.kolarov 63 Точки

Моето решение на 11 задача . Понеже бая се озорих, някой може ли да ми даде съвет как би станала по-събрана, но решена с масив?

0
Filkolev avatar Filkolev 4482 Точки

Ами аз ползвах три switch-a така че вероятно не съм правилният човек да дава съвет как да я направиш по-събрана. Освен това не ползвам масиви, но пък съм пуснал цикъл да ги принтира всички числа (основно за да проверя дали всичко съм доизмислил, но реших така да я оставя). Ето моето решение ако искаш да го разгледаш - ЦЪК.

0
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Аз също съм го направил с 3 switch-a за да мога да я предам в този вид в домашното.  Понеже исках отговорите ми да съвпадат на 100% с примерите в домашното във всеки switch думите са винаги с главна буква. След това при принтирането им в конзолата ако се налага да са с малка буква то използвам .ToLower() Ето го и моето решение:

11. NumberAsWords

От горното решение замених 3-те swith-case с 3 масива:

11. NumbersAsWordsArrays

0
KStoilkov avatar KStoilkov 2 Точки

Ето едно решение с масиви от мен. Може да съм допуснал някои грешки, но съм още новак. 

0
KStoilkov avatar KStoilkov 2 Точки

Здравейте колеги, ето малко решения и от мен.

0
Extensa avatar Extensa 5 Точки

@rosenrusev Мисля че в задача 8 няма нужда от всички проверки, които правиш, след като променливата ти е от тип стринг и за всичко различно от 0-9 ще изпише no digit. :) 

Аз го направих така. Със сигурност не е най-правилното решение, затова ме поправете ако греша някъде.

 

0
RoYaL avatar RoYaL Trainer 6849 Точки

Това може да се направи и с един стрингов масив (например digits[]), който репрезентира от нулевия до 9тия ключ съответните думи. С try{}catch се пробваш да парснеш до число и да извадиш digits[n]. Ако не можеш да парснеш но интеджър n или не е в масива ще изгърми ексепшън, който хващаш и хвърляш Not a digit.

Т.е. при String[] digits = new String[] {"zero", "one", "two", "three" и т.н.};

при try{}catch в който пробваш digits[n] където n == 3, ще изпише "three". Ако n == 10 || n == "asd" ще хване ексепшън (out of range || parse) и ще изпише "not a digit" 

0
scr33nsh0o7 avatar scr33nsh0o7 61 Точки
Здравейте, това е моето решение за BeerTime задачата. Виждам, че останалите са я решили по по-сложен начин, според вас, това валидно решение ли е? http://pastebin.com/L0DcYQ02
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.