Loading...
patrik avatar patrik 26 Точки

[Homework] Programming Basics - Conditional Statements - Problem {3} - Check for a Play Card

Здравейте, нещо се обърках с тази задача. Как да чета от конзолата едновременно стрингове и числа?

 

using System;

class CheckForPlayCard
{
static void Main()
{
Console.WriteLine("Enter card:");
string card= Console.ReadLine();
int value;
// value=Convert.ToInt32(card);
if (card == "A"||card == "K"||card == "D"||card == "Q"||card == "J")
{
Console.WriteLine("Yes");
}
value = Convert.ToInt32(card);
if (value > 10)
{
Console.WriteLine("Yes");
}
}
}

Тагове:
1
Programming Basics 06/04/2015 12:04:47
Darko avatar Darko 82 Точки

Здравей ето моето решение за тази задача цък

Иначе можеш да направиш един дълъг if числата също да ги слагаш в кавички пак ще се получи

5
patrik avatar patrik 26 Точки

Да и аз го направих така, но ми се искаше да стане с нещо от сорта:

ConsoleKeyInfo pressedKey = Console.ReadKey(true);
if (pressedKey.Key == ConsoleKey.A ||pressedKey.Key==ConsoleKey.Q || pressedKey.Key==ConsoleKey.J || pressedKey.Key==ConsoleKey.K)
{
Console.WriteLine("YES");
}

 

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

0
Lyubo avatar Lyubo 172 Точки

@patrik опитах се да е направя с четене на клавиш от клавиатурата, но срещнах проблем с въвежднето на "10". Иначе другите клавиши си работят без проблем, тук може да видиш решението ми. Ще трябва да го копираш на локалната си машина защото в .NED Fiddle дава грешка заради четенето на клавиша, пак повтарям "10" не може да се въвежда.

0
wintersun1993 avatar wintersun1993 114 Точки

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

 

 

 

using System;

   class CheckForPlayCard
   {
      static void Main(string[] args)
      {

         string s = Console.ReadLine();
         int k;

         if(s=="J"||s=="Q"||s=="K"||s=="A")
          {
             Console.WriteLine("Yes");
           }
          else
          {
             k = int.Parse(s);
             if(k>=2&&k<=10)
           {
               Console.WriteLine("Yes");
            }
             else
            {
                Console.WriteLine("no");
             }
           }


         }
      }

6
g.stoyanov avatar g.stoyanov 776 Точки

PasteBin

Тук можеш да постваш код дори без регистрация ;)

1
Christian_Tonev avatar Christian_Tonev 4 Точки

А защо изобщо си играеш да обръщаш в int?! Можеше и останалите символи да си ги сравниш като стринг. Иначе подхода ти ми харесва и от мен имаш един глас! :)

0
HPetrov avatar HPetrov 822 Точки

Нека input-а ти да бъде string и просто го прокарай през един switch.

3
mesechina avatar mesechina 112 Точки

@HPetrov благодаря! Сутринта доста време се мъчих да го направя със switch, но все не искаше да ми приеме числата от string-a... чак сега като прочетох коментара ти ми "светна" защо :)))
Няма да поствам решението само ще кажа за хората, които не са се досетили веднага като мен, че числата просто "трябва да се третират като string".

0
Lyubo avatar Lyubo 172 Точки

"Как да чета от конзолата едновременно стрингове и числа?", въведената стойност е записваш като string, а по-късно може да е кастнеш към int или друг тип.

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

И едно второ решение с четене на бутон от клавиатурата, "10" не може да се въвежда по-тази причина решението не е пълно. Ако някой знае как може да се прочете "10" от клавиатурата може да каже.

 

п.п. Знам че в задачата пише "Write a program that enters a STRING", просто реших да си поиграя малко, а също да се опитам да отговоря на въпроса на @patrik

0
ScreeM avatar ScreeM 19 Точки

Ето и моето решение: http://pastebin.com/quHBSCZs , надявам се, че съм помогнал. Ако имаш въпроси, може да попиташ.

-1
RoYaL avatar RoYaL Trainer 6849 Точки

Моето решение е подобно на колегата от последния пост

 

http://pastebin.com/axHiaPv7

 

1
remote87 avatar remote87 121 Точки

Здравей, RoYaL!

Много ми хареса това решение и аз мислех нещо такова да направя. Само едно допълнение:

string input = Console.ReadLine().ToUpper();

така ще е сигурно, че винаги ще го хване, иначе го вади, че не е от тестето, ако се въведе малък чар :)

Поне така си мисля!

0
02/09/2015 15:32:40
beBoss avatar beBoss 507 Точки

Тук може да разгледаш още варианти за решаване на задачата.

1
ZhelyazkoS avatar ZhelyazkoS 8 Точки

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

using System;
class CheckForPlayCard
{
static void Main()
{
Console.WriteLine("Enter card:");
string card = Console.ReadLine();
const string deck = "23456789JQKA";
double i = deck.IndexOf(card);
if (i == -1)
{
Console.WriteLine("no");
}
else
{
Console.WriteLine("yes");
}
}
}

1
Filkolev avatar Filkolev 4482 Точки

Проблемът е, че ако му подадеш 23 например (или каквато и да е комбинация от поредни сиволи от стринга) ще ти върне валиден индекс. Също така ти липсва десетката. Може вместо стринг да направиш масив от стрингове и да ползваш Array.IndexOf. Също така индекса няма смисъл да е double, няма как да е нещо различно от цяло число.

string[] deck = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
int i = Array.IndexOf(deck, card);
2
ZhelyazkoS avatar ZhelyazkoS 8 Точки

Благодаря! Забележките са напълно уместни. Поздрави!

0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравей Желязко,

Решението ти е оригинално и има начин да си го запазиш в сегашниия му вид - достатъчно е само да добавиш в началото една валидация за дължима на въведения стринг - за да си сигурен че после ще търсиш в deck-а индекса на точно един символ:

        string card;
        do
        {
            Console.WriteLine("Enter card:");
            card = Console.ReadLine();
            if (card.Length > 1)
            {
                Console.WriteLine("Please, enter one symbol only.");
            }
        } while (card.Length > 1);

а тука е целия код.

Решението ти е много оригинално, на твое място аз бих си го запазила.

0
LanceD avatar LanceD 1 Точки

Thank you for the valuable update that would be wise and helping as well. The people who need to learn the programming basics can grab help here and improve their skills at the same time. I just love that college-paper.org reviews update here that is pretty supportive please continue to solve other errors.

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