Пятничные задачки
Added by Алексей Румянцев about 9 years ago
Если заинтересуетесь, то буду делать это регулярно.
Вообщем вот:
- есть такой кусок кода:
Action action = null; for (int i = 0; i < 3; i++) { action += () => Console.Write(i); } action();
Что будет выведено на консоль? - Наверно все знают, что у нас в LinearAlgebra есть класс Vector, у него есть конструкторы Vector(int size) и Vector(params double[] data) и свойтво Size, возвращающее размерность вектора. Что будет выведено на консоль?
Vector a = new Vector(4.0); Vector b = new Vector(1, 2, 3); Vector c = new Vector(2, 3); Vector d = new Vector(3); Console.Write("{0}{1}{2}{3}", a.Size, b.Size, c.Size, d.Size);
Ответы пишем тут в комментариях.
Replies (52)
RE: Пятничные задачки - Added by Мария Семёнова about 9 years ago
1. Странно, но напомнило конструкцию передачи аргументов в функцию в Maple. Мой ответ - "дырка":)
2. Может так:
Vector a = new Vector(4.0);
Vector b = new Vector(1, 2, 3);
Vector c = new Vector(2, 3);
Vector d = new Vector(3);
Console.Write(String.Format("{0}{1}{2}{3}", a.Size, b.Size, c.Size, d.Size));
Ответ - 1, 3, 2, 3.RE: Пятничные задачки - Added by Алексей Румянцев about 9 years ago
В Console.Write можно сразу писать строку форматирования и параметры, без String.Format. Так красивее и правильнее:)
Насчет правильности/неправильности ответов пока промолчу, пусть другие тоже чего-нибудь напишут.
RE: Пятничные задачки - Added by Anonymous about 9 years ago
1. Не понял, то есть я это не читал) но думаю что логично предположить 333, так как точно не 012, и точно будет работать и выдавать результат, так как Лёша не умеет писать не работающий код))
2. 1323
RE: Пятничные задачки - Added by Екатерина Чимитова about 9 years ago
А когда появятся правильные ответы? В следующую пятницу?
RE: Пятничные задачки - Added by Дёмин Виктор about 9 years ago
Блин, ну известно кто))) Я уже не в первый раз не логинюсь)
RE: Пятничные задачки - Added by Алексей Румянцев about 9 years ago
Екатерина Чимитова писал(а):
А когда появятся правильные ответы? В следующую пятницу?
Пусть будут, например, во вторник. Чтобы до следующей пятницы их можно было обсудить.
RE: Пятничные задачки - Added by Алексей Румянцев about 9 years ago
Ура, ответы:)
В первом задании будет выведено 333 (хотя часто отвечают 012), кстати кто-нибудь может объяснить почему?
Во втором задании - 1323. Тут все просто, главное не перепутать, что для Vector(4.0) и Vector(3) вызовутся разные конструкторы.
RE: Пятничные задачки - Added by Anonymous about 9 years ago
RE: Пятничные задачки - Added by Anonymous about 9 years ago
RE: Пятничные задачки - Added by Алексей Румянцев about 9 years ago
Ага, про замыкания все верно, полезно почитать и знать.
Вот еще пара задач. Что будет выведено в каждой из них?
1.
public class Point
{
}
public class ColorPoint : Point
{
}
public class Program
{
public static void Function(Point p, ColorPoint cp)
{
Console.WriteLine("Point, ColorPoint");
}
public static void Function(ColorPoint p, Point cp)
{
Console.WriteLine("ColorPoint, Point");
}
public static void Main(string[] args)
{
ColorPoint cp = new ColorPoint();
Function(cp, cp);
}
}
2.
char a = 'a';
int b = 100;
Console.WriteLine(true ? a : b);
RE: Пятничные задачки - Added by Anonymous about 9 years ago
1. Вообще хочется явное приведение типа поставить.
2. a
RE: Пятничные задачки - Added by Мария Семёнова about 9 years ago
1. Бывают sql-запросы, которыми можно убить. Этим куском кода можно нанести серьезные увечья. Я бы выдала ошибку или хоть предупреждение. Если все же что-нибудь выведется, то с вероятностью 50% - ColorPoint, Point.
2. Не просто 'a', а какой-нибудь код этого символа.
RE: Пятничные задачки - Added by Алексей Румянцев about 9 years ago
Сорри, немного припозднился с ответами.
Первая задача не скомпилируется, потому что вызов Function(cp, cp) подходит под обе сигнатуры и компилятор не знает какую именно выбрать.
Во второй будет выведен числовой код символа 'а', то есть 97, так как произойдет преобразование к общему типу int.
RE: Пятничные задачки - Added by Алексей Румянцев about 9 years ago
Вот пара задач на сегодня. Что будет выведено в каждой из них?
1.
public struct Struct
{
public int A;
public Struct(int a)
{
A = a;
}
}
public class Class
{
public int A;
public Class(int a)
{
A = a;
}
}
public class Program
{
public static void Main(string[] args)
{
Class c = new Class(1);
Struct s = new Struct(2);
object oc = c;
object os = s;
c.A = 3;
s.A = 4;
Console.Write("{0} {1}", ((Class)oc).A, ((Struct)os).A);
}
}
2.
try
{
Console.Write("A");
return;
}
finally
{
Console.Write("B");
}
Console.Write("C");
RE: Пятничные задачки - Added by Алексей Румянцев about 9 years ago
Все правильно, в первой 3 2, во второй AB.
Что-то нет ажиотажа среди отвечающих:)
Ладно, вот пара на сегодня:
1.
public class Factory<T>
{
public static T CreateInstance()
{
return new T();
}
}
public class Program
{
public static void Main(string[] args)
{
int i = Factory<int>.CreateInstance();
Console.Write(i);
}
}
2.
int j = 0;
for (int i = 0; i < 10; i++);
{
j++;
}
Console.Write(j);