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
vladeto87 avatar vladeto87 9 Точки

5-та задача нещо ме мъчи и погледнах твоята (Росен Русев) и не винаги работи. Например, ако въведа 1, 2 , 3, или 6, 5, 7, или 5, 5, 5, или  5, 5, 4, или 4, 5 , 5, не дава никакъв резултат. 

1
beBoss avatar beBoss 507 Точки

Да, защото не проверява, ако са еднакви числата, пример ако (a > b && (b > c || b == c)), така ще е различно, само трябва да го направи на още-две места, и вече ще работи ;)

4
petio.bs avatar petio.bs 50 Точки

А може да пробваш и по този начин :

if (a >= b && a >= c)
Console.WriteLine(a);
else if(b >= a && b >= c)
Console.WriteLine(b);
else
Console.WriteLine(c);

 Edit : Вместо >= бях писал >. Сега вече работи коректно :)

2
beBoss avatar beBoss 507 Точки

@petio.bs така няма да работи правилно, пример: 5,5,4.

5
bsdemon avatar bsdemon 348 Точки

Много хора са дали решение на задача 10. Но са забравили да правят проверка, дали е въведен час въобще или произволен стринг.

Доста се измъчих с това парсване на датата и самата проверка дали е въведена дата.

Ето моето решение:
Problem 10. Beer time

-1
beBoss avatar beBoss 507 Точки

То няма проблем, да се направи проверката и след това. Въвежда се string и се проверява дали string-а е time, ако не е: Invalid Time

2
presian avatar presian 223 Точки

Аз имам едно питане относно сравнението (за 3 или 5 цифри). Не трябва ли да се поставя и знак за равенство (<= или >=)? Така при въведени две или повече равни стойности по - големи от третата/останалите, резултат ще са и двете цифри. Ако се остави само сравнение без равенство и се въведат две равни стойности няма да изкара резултат според мен.

1
nikolay.dimov83 avatar nikolay.dimov83 143 Точки

Нека направим нещата интересни - отправям ви предизвикателство за 12-та задача (Zero subset):

Аз я реших с 2 for цикъла и 2 if-а давам вот + бест answer на всеки който я реши с толкова или по - малко цикли и условни оператори.

 

Време: До довечера - тогава ще пусна и моето решение.

0
kittenlina avatar kittenlina 9 Точки

nikolay.dimov83 заинтригува ме твоето решение с два цикъла и два if-statement-а

0
oconne avatar oconne 113 Точки

Аз съм я решил с един цикъл и един иф . ТУК

0
Masovski avatar Masovski 211 Точки

Моята 11 задача. Не съм слагал коментари. Ползвам 2 масива и поредица от if-else. 

2
Mkey5 avatar Mkey5 16 Точки

Здравей , колега, много ми хареса твоето решение. Имах точно същата идея с 2-та масива , а сега и видях как точно трябва да изглежда! :)) 

0
t.kanchev avatar t.kanchev 25 Точки

Здравей,

на 6 задача 6. Problem 6 - The Biggest of Five Numbers мисля, че няма нужда от всички проверки на следващите редове. Аз съм я направил с 4 if-a дори :) 

 

using System;

class TheBiggestOfFiveNumbers
{
static void Main()
{
Console.Write("a= ");
double a = double.Parse(Console.ReadLine());
Console.Write("b= ");
double b = double.Parse(Console.ReadLine());
Console.Write("c= ");
double c = double.Parse(Console.ReadLine());
Console.Write("d= ");
double d = double.Parse(Console.ReadLine());
Console.Write("e= ");
double e = double.Parse(Console.ReadLine());


if ((a > b) && (a > c) && (a > d) && (a > e))
{
Console.WriteLine(a);
return;
}
if ((b > c) && (b > d) && (b > e))
{
Console.WriteLine(b);
return;
}
if ((c > d) && (c > e))
{
Console.WriteLine(c);
return;
}
if ((d > e))
{
Console.WriteLine(d);
return;
}
else
{
Console.WriteLine(e);
}
}
}

0
vvulevv avatar vvulevv 51 Точки

На задачата - Problem 5 - The Biggest of Three Numbers може да се предвиди и случай, в който и трите въведени числа са равни. Ето и моето решение: 

Console.Write("a= ");
double a = double.Parse(Console.ReadLine());
Console.Write("b= ");
double b = double.Parse(Console.ReadLine());
Console.Write("c= ");
double c = double.Parse(Console.ReadLine());
if (a>b && a>c)
{
Console.WriteLine("The biggest number is \"a\": {0}", a);
}
else if (b>a && b>c)
{
Console.WriteLine("The biggest number is \"b\": {0}", b);
}
else if (c>a && c>b)
{
Console.WriteLine("The biggest number is \"c\": {0}", c);
}
else if (a == b && b== c)
{
Console.WriteLine("You've entered 3 equal numbers. :)");
}

0
RoYaL avatar RoYaL Trainer 6849 Точки

Когато и трите числа са равни (примерно 5), най-високо е 5. Няма по-високо :) Но иначе, да, може да се предвиди този случай и да се спомене. Иначе моето решение е

 

double[] input = new double[3];
for (int i = 0; i < input.Length; i++)
{
     Console.WriteLine("Write number " + (i + 1));
     input[i] = Convert.ToDouble(Console.ReadLine());
}
Console.WriteLine(input.Max());

1
Kolimnared avatar Kolimnared 9 Точки

Не обхващаш случаите, в които има 2 равни стойности и 3-тата да е по-малка и няма да ти влезне в никой иф...

0
Ivaylo.Il avatar Ivaylo.Il 226 Точки

Моля за малко помощ по 8ма задача. Написъл съм switch-a с това проблем нямам. Но уловката тук е като тестваме със стринг или double да излезе default случай, а не да изгърми. Забелязах, че някой вместо да напишат код, който да отговаря на условието просто за използвали някакъв трик, който не позволява въвеждането на различни данни от инт или пък просто не са си пуснали програмата със double или стринг  и не са забелязали, че гърми. Нарочно в примерните отговори са дали опции doble and string за да ви накарат да напишете код, който по някакъв начин конверита тези типове данни само в инт. Поне аз така си го обеснявам. 

Ще съм благодарен ако някои ми каже как да стане това. Пробвах с въвеждане на double данни в конзолата и после с конвертиране, но тогава винаги пропуска default (защото знаете как инт закръгля 1.3 = 1 или 0.3 = 0). Но при стринг не ми е ясно как да се конвертира в инт.

0
StanDimitroff avatar StanDimitroff 90 Точки

Ами чети входа като стринг и не конвертирай към друго.Ако подадеш друго освен стринг, който съвпада с някой от кейсовете, програмата отива в дифолта ЕтоПробвай така да въведеш каквото и да е освен цифрите от 0 до 9 и виж как влиза в дифолта:)

1
Ivaylo.Il avatar Ivaylo.Il 226 Точки

хахаха мерси. То колко лесно е. Аз сам си осложних решението като се опитах да прав2 някакви проверки за типа данни които подаваме и някакви конвертации ... Ясно мерси

0
RoYaL avatar RoYaL Trainer 6849 Точки

Гледам, че повечето сте ползвали if/switch за Check For Play Card. Видях и решение с масив, но ми се стори, че отново има overkill (foreach).

Ето го моето решение по въпроса:

string[] cards = new string[] { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };
string input = Console.ReadLine();
Console.WriteLine(cards.Contains(input) ? "yes" : "no");

4
coaster avatar coaster 412 Точки

Хитро решение, харесва ми. Тези от нас, които се сетят за този метод на масивите, ще спестят прилично количество редове код. Всъщност за всичко в С# си има методи и можем да си улесним работата доста, ако ги знаем, а ако не - пишем по 300 реда код за някакви все още малки задачки.. :)

Аз направих тази задача със switch case конструкцията, работи вярно, но е ненужно дълга: CheckForAPlayCard. Ще потърся и още начини, благодаря за тази "подсветка"!

0
djumi91 avatar djumi91 6 Точки

Ето и едно решение с Regex на задачата с картите.

string input = Console.ReadLine();
Regex r = new Regex("2|3|4|5|6|7|8|9|10|J|Q|K|A");
Console.WriteLine(r.IsMatch(input) ? "yes":"no");

0
vvulevv avatar vvulevv 51 Точки

А задачата с намирането на най-голямото число не забелязахте ли, че при въвеждане на 2 еднакви най-големи стойности и не се получава отговорът, понеже гледам всеки тук е поставил едно и също решение за нея, каквото е и моето, но с такава проверка нищо не се случва или аз бъркам някъде?
П.С. Като направих кода с проверка за >= и проверява вярно.

0
RoYaL avatar RoYaL Trainer 6849 Точки

Или нямаш равенство или нямаш else клауза. Иначе винаги може да викнеш Max() метода

 

По-горе бях коментирал с един код

 

double[] input = new double[3];
for (int i = 0; i < input.Length; i++)
{
     Console.WriteLine("Write number " + (i + 1));
     input[i] = Convert.ToDouble(Console.ReadLine());
}
Console.WriteLine(input.Max());

 

 

2
vvulevv avatar vvulevv 51 Точки

Да, ама нали целта е да е с if-oве, иначе видях кода ти и ми хареса. :)

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