Практикум C#

Коллеги, предлагаю к обсуждению в данной дискуссии вопросов связанных с практикумом C#.

http://skills.itvdn.com

Решил ли кто-то первую задачу из блока "Массивы и индексаторы"? Там нужно найти и исправить ошибки приведения типов массивов.

Одна из ошибок - попытка downcast массива. Как сказано в подсазке, это недопустимо.

Вторая - попытка вызова специального метода производного класса после приведения всего массива к базовому типу (интерфейсу).

Для их решения я выполнил необходимые приведения типов поэлементно. После этого программа, по-видимому, работает корректно - все методы, попытка вызвать которые была в исходном коде, вызываются и выполняются. Но исправленный код не принимается. Что не так?

Спасибо.

Прикладывайте скрины заданий .... так проще будет разобраться

Вопрос к администрации! Будет ли увеличиваться количество заданий по каждой из тем ? К примеру по С# в каждом разделе всего по 5 заданий, этого очень мало. Хотелось бы как минимум 20 как в практикуме по html и css. Чтобы задания более обхватывали все аспекты изученных тем.
Спасибо!

Здравствуйте, к сожалению, планов на дополнение уже записанных видео курсов нет. Но мы учли пожелание Ваше и многих других пользователей и большинство новых видео курсов будут иметь упор на практические навыки, в том числе будет добавлено более обширное домашнее задание. Желаем успехов в дальнейшем обучении!

Есть проблема с задачей 2 блока "Введение в ООП. Классы и объекты" практикума C# Essential. Не принимается решение:

class MyClass

{

private string name;

public string Name

{

get

{

if ((name == String.Empty) || (name == null))

return "Name is not defined";

else

return this.name;

}

set

{

name = value;

}

}

}

Почти все попытки на перебор вариантов потратил.

Добрый вечер, прохожу курс C# Starter. Внутри него пункт "Переменные и типы данных" и 3 задача: "Создайте две переменных типа double с именами op1 и op2 и начальными значениями 4.6 и -34.72 соответственно. Затем создайте переменные sum, dif, mul и div и присвойте им значения сумы, разницы, произведения и деления значений op1 и op2 соответственно. После этого выведите в консоль значения sum, dif, mul и div по очереди, каждое – с новой строки, в таком формате:

<операнд1> <знак операции> <операнд2> = <результат операции>. Используйте элементы форматирования."

Конкретно ссылка: http://skills.itvdn.com/#/examination/6c5fea45-22cd-485b-9614-3166bb2ee8b8

Вопрос в том, что не принимает никакой ответ по данному пункту, к примеру очевидный вариант не подходит, потерял много баллов, перепробовал все варианты, не понятно, что не так?

Вот мой ответ:

double op1 = 4.6;

double op2 = -34.72;

double sum = op1 op2;

double dif = op1 - op2;

double mul = op1 * op2;

double div = op1 / op2;

Console.WriteLine("{0} {1} = {2}", op1, op2, sum);

Console.WriteLine("{0} - {1} = {2}", op1, op2, dif);

Console.WriteLine("{0} * {1} = {2}", op1, op2, mul);

Console.WriteLine("{0} / {1} = {2}", op1, op2, div);

Метод string.IsNullOrEmpty(name) не проще использовать для проверки (тогда вообще тернарным оператором красиво пишется)? Попробуйте ещё this не указывать.

Действительно проще, и с тернарным оператором ответ принят. Спасибо!

Хорошо, что помогло. А глянь, пожалуйста, мой вопрос выше. Может твоё решение прошло.

Console.WriteLine("{0} {1} {2} = {3}", op1, ' ', op2, sum);

Спасибо большое! Странно, я такой же вариант пробовал...Наверное где-то что-то забыл указать)

Здравствуйте, никак не могу понять, почему система не принимает в практикуме C# / Ограничения универсальных шаблонов / 5 задание "Класс Dictionary":

Заполните словарь dict парами 1 – «one» .. 4 – «four» и выведите их на экран в формате «ключ-значение». Диапазон ключей для вывода – 0..10. В случае, если какому-то ключу не присвоено значение – вывести соответствующее сообщение "i has no value", где i - ключ

Дан изначальный код:

using System;
using System.Collections.Generic;

namespace Less11_task05
{
class Program
{
static void Main( string args )
{
Dictionary<int, string> dict = new Dictionary<int, string>();

		Console.ReadKey();
	}
}

}

Решение вроде же должно быть простым, уже использовал под 40 попыток, но уже из принципа хочу понять - что не так?

Вот мой код:

using System;
using System.Collections.Generic;

namespace Less11_task05
{
class Program
{
static void Main( string args )
{
Dictionary<int, string> dict = new Dictionary<int, string>();
dict.Add(1,"one");
dict.Add(2,"two");
dict.Add(3,"three");
dict.Add(4,"four");

		for(int i=0; i<=10;i  )
		    if (dict.ContainsKey(i))
		        Console.WriteLine("{0}-{1}",i,dict[i]);
		    else
		        Console.WriteLine("{0} has no value",i);

		Console.ReadKey();
	}
}

}

Ответ на вопрос Ковариантность и контрвариантность массивов

((MyClass)BaseArray[i]).Method2();

MyClass[] DerArray = (MyClass[])BaseArray;

Александр Евсеев, Этот вариант система уже принимает. А вот когда

Console.WriteLine(i "-" dict[i]);

почему-то нет.

using System;
using System.Collections.Generic;

namespace Less11_task05
{
class Program
{
static void Main(string[] args)
{
Dictionary dict = new Dictionary();

dict.Add(1, "one");
dict.Add(2, "two");
dict.Add(3, "three");
dict.Add(4, "four");


for (int i = 0; i <= 10; i )
{
if (dict.ContainsKey(i))
{
Console.WriteLine("{0}-{1}", i, dict[i]);
}
else Console.WriteLine("{0} has no value", i);
}

Console.ReadKey();
}
}
}

такой вариант тоже не принимается, только без операторных скобок на if, for

Как-то разрозненно тут немного. Может лучше создавать отдельный топик соответственно каждому уроку? Ну там, тег соответствующий ставить и название... А то наберётся тут и перемешается заданий с разных тем - пойди найди потом. Всю тему перечитывать придётся.

class Program
{
static void Main(string[] args)
{
Dictionary<int, string> dict = new Dictionary<int, string>();
dict.Add(1, "one");
dict.Add(2, "two");
dict.Add(3, "three");
dict.Add(4, "four");

        for (int i = 0; i <= 10; i++)
        {
            if (dict.ContainsKey(i))
            {
                Console.WriteLine("{0}-{1}", i, dict[i]);
            }
            else
            {
                Console.WriteLine("{0} has no value", i);
            }
        }

        Console.ReadKey();
    }
}