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
ZvetanIG avatar ZvetanIG 907 Точки

Ето ви едно интересно решение на задача 4.  Използвам оператора за сравнение  "^".  Той работи на принципа:  ако са различни връща true.    Или казано в контекста на задачата ако знаците са различни връща  "-".

http://pastebin.com/3NUDfCs8

0
ZvetanIG avatar ZvetanIG 907 Точки

Може ли да обясниш с няколко думи идеята на твоя алгоритъм?

0
externo avatar externo 119 Точки

първата част първата й половина проверява всяко число дали е нула и го връща като събсет, ако да

първа част втора половина проверява всяко число дали е равно на сумата на всичките 5 числа, ако да, връща останалите 4 числа като събсет защото очевидно сумата им е 0

втора част първа половина проверява всеки две числа дали сборът им е = 0, ако да ги връща

втора част втора половина проверява всеки две числа дали сборът им е = сумата на всички числа, ако да връща останалите 3 числа като събсет

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

2
ZvetanIG avatar ZvetanIG 907 Точки

Наистина хитро!

Мерси!

0
ZvetanIG avatar ZvetanIG 907 Точки

В задачите за намиране на най-голямо число трябва да предвидиш и случай, когато някои от числата са равни.

За целта в условията на if  използвай  ">=". 

Тествай кода с такива случаи и ще разбереш какво имам предвид.

3
kiko144 avatar kiko144 795 Точки

Ще го поправя! Мерси за помощта!

0
Bosco avatar Bosco 3 Точки

Отдавна си го минал това, но все пак... - видях че на 4-та задача си го направил с пресмятане а в условието е указано че трябва да се напише без да се смятат. И аз по същия начин го бях написал но после се усетих че условието е друго ;)

0
dimipan avatar dimipan 30 Точки

Здравейте! Ето ги и моите решения на задачите от последното домашно. И аз забелязах някои противоречия в условието на някои задачи и примерите след тях. Според мен, важно е да се изпълни условието на задачата, а не всички примери.

Problem 1. Exchange If Greater

Problem 2. Bonus Score

Problem 3. Check for a Play Card - v.1

Problem 3. Check for a Play Card - v.2

Problem 4. Multiplication Sign

Problem 5. The Biggest of 3 Numbers

Problem 6. The Biggest of Five Numbers

Problem 7. Sort 3 Numbers with Nested Ifs

Problem 8. Digit as Word

Problem 9. Play with Int, Double and String

Problem 10. * Beer Time

В тази десета задача опитах различни методи за парсване на символния низ от конзолата във формат дата и време: DateTime.Parse, DateTime.ParseExact, Try.Parse, Try.ParseExact. Също така използвах и различни култури и езици. 

Problem 11. * Number as Words - v.1

Problem 11. * Number as Words (with Methods)

Problem 12. * Zero Subset

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

4
milen8204 avatar milen8204 296 Точки

@dimipan  при даденото от теб решение за  Problem 12. * Zero Subset  няма ли да се получат 32 резултата при 0 0 0 0 0?

0
Ventsislav avatar Ventsislav 343 Точки

браво един да е решил шеста задача както трябва smile

1
dim4o avatar dim4o 288 Точки

Porblem 4 може и да стане с по-малко if-ове - 4 зад.

0
bsdemon avatar bsdemon 348 Точки

@rosenrusev

Да добавя няколко неща.

Може да се съкрати малко първата задача .

Ето така:

if (a > b)
{ // XOR algorithm
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
Console.WriteLine(a + " " + b);

Ако първото ти число е по-малко, директно да ги пишеш в конзолата и няма смисъл от else. Ако е по-голямо вече си ги разменя.

 

За втората задача, if в default стейтмънта ти е излишен.

2
rosenrusev avatar rosenrusev 175 Точки

Благодаря за коментара :) Имаш право :)

0
beBoss avatar beBoss 507 Точки

Ето едно по-кратко решение на задача 11 - Number as words (pastebin repo)

3
ZvetanIG avatar ZvetanIG 907 Точки

Да решението ми хареса, но може би ще е по четлив и разбираем кода ако използваш вложени if-ове вместо ?: .

Това е моят вариант на задачата, като някои идеи съм ги взел от колегата beBoss.

http://pastebin.com/6jXTncdf

2
ViValDam avatar ViValDam 15 Точки

Кратко е , ама това още не сме го учили !

Но ще го имам  в предвид cool за в бъдеще !

 

Аз си го реших ,на много редове с доста if i switch , направих си точно и с мъки и малките и големи букви и съм доволна ,програмата прави всичко , каквото Наков иска от нас -  смятам,че решението ми отговаря точно на темата на домашното - кандишънал стейтментс !

2
milen8204 avatar milen8204 296 Точки

Тъкмо реших проблем 11 и бързам споделя моето решение . С две думи да обясня как съм разсъждавал. Естествено като нематематик и като пълен начинаещ разчитам само на това, което съм научил от лекциите, на Google и на кухото разстояние между ушите ми. Реших да създам 3 стрингови променливи, в които да се пазят думите за всяка цифра от числото, след това праснах една проверка дали втората цифра е по - малка от 2, с цел да обхвана специфичните случаи от 1  до 19, създадох един swich, в който съм поместил 20 case-а за писане на числата от 0 до 19. После с проверки си печатам различните комбинации.

0
Sitalk avatar Sitalk 9 Точки

  Rosenrusev,Problem.6 не дава никакъв резултат на проверка N4(0;-2,5;0;5;5).Прибави знака "=" към всеки"<>".При мен така се оправи.

1
beBoss avatar beBoss 507 Точки

Да, последния if трябва да го изтрие, т.е. да остане само else и ще работи. Всичко други си е правилно и не ти трябват = в задачата. tongue-out

4
rosenrusev avatar rosenrusev 175 Точки

Премахнах последния if и сега проверява коректно условието. Благодаря и на двама Ви за забележката.

0
beBoss avatar beBoss 507 Точки

Добре, това решение ми хареса!

3
TodorovH avatar TodorovH 216 Точки

Ето ви проблем 5 без if-ове и почти без код! хахах

The Biggest of 3 Numbers  cool

Редакция: имало решение на същия принцип по-натам!

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