Професионална програма
Loading...
+ Нов въпрос
Kristianchooy avatar Kristianchooy 59 Точки

1.Day Of Week - Arrays (грешка при компилиране)

здравейте!

Първата задачка от Arrays не може да се компилира, подчертава ми първият ред целия , при положение че е 1:1 задачата от презентацията ? да не би случайно VS да е правил промени от май месец ?

http://pastebin.com/NViKfK25 - това е задачата и не тръгва

Тагове:
1
Programming Fundamentals
borislav9212 avatar borislav9212 746 Точки
Best Answer

Здравей,

Объркал си инициализирането на масива. Трябва скобите да са след типа данни, Ето така ->  string[] days = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Sathurday", "Sunday" }; При теб е така -> string days[] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Sathurday", "Sunday" };

0
vancho avatar vancho 430 Точки

Ти все едно правиш масив от тип days[], a трябва на стринга да сложиш скобите, string[]. Поздрави.

0
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

Реших да я напиша с речник, за разнообразие:
 

Dictionary<int, string> dayOfWeek = new Dictionary<int, string>();
        dayOfWeek.Add(1, "Monday");
        dayOfWeek.Add(2, "Tuesday");
        dayOfWeek.Add(3, "Wednesday");
        dayOfWeek.Add(4, "Thursday");
        dayOfWeek.Add(5, "Friday");
        dayOfWeek.Add(6, "Saturday");
        dayOfWeek.Add(7, "Sunday");

        int day = int.Parse(Console.ReadLine());
        bool isThereSuchADay = false;

        foreach (var item in dayOfWeek)
        {
            if (item.Key==day)
            {
                Console.WriteLine(item.Value);
                isThereSuchADay = true;
            }
        }
        if (!isThereSuchADay) Console.WriteLine("Invalid Day!");

 

0
kaloyannikov avatar kaloyannikov 531 Точки

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

Вместо това имаш метод .ContainsKey() .

Поздрави

0
19/09/2016 18:54:49
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

Целта ми беше да я реша с речник, защото вече имам решение с масив, а и в условието никъде не пише, че кодът трябва да се оптимизира за бързина. С нито една задача не го правя, ако Judge не го направи на проблем.
Ако си любител на решенията с един ред, можеш да замениш цикъла с:
 

if (dayOfWeek.ContainsKey(day)) Console.WriteLine(dayOfWeek[day]);

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

Отделно, при обхождането на речник със 7 записа, не съм сигурен за каква бързина говорим.

0
19/09/2016 19:18:38
kaloyannikov avatar kaloyannikov 531 Точки

Търсенето при речника е  константно дали ще са 7 елемента или ще са 1 милион. Това става благодарение на хеш функция , но това е друга тема.

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

Не става въпрос да се оптимизира , става въпрос , че не се ползва както е предвиден. И не става въпрос някой да се състезава просто в случая това ,че ползваш Dictionary е все 1  ползване на списък с key и value ,което всъщност е друга структура (Tuple) . 

0
19/09/2016 19:39:52
Leprikona avatar Leprikona 108 Точки

Винаги квадратните скоби, които показват че дадената променлива е масив, се пишат след променливата:

напр.: int[] input - то така се и чете - масив от числа ([] от input, за който е зададена стойността "int")

0
nasyotbm avatar nasyotbm 5 Точки

laughМисля че грешката е:

Saturday ,а не Sathurdaycrying

laugh

0
03/02/2020 21:28:11