Напишите в комментарии к этой записи консольные приложения для решения этих задач, указав код задачи.
Решены задачи: 1-3,5-7 Не решены: 4
Задачи
L2.1. Записать логические выражения, которые имеют значение «Истина» только при выполнении указанных условий:
а) x < 2 и у < 3;
б) неверно, что x < 2;
в) x < 1 или y < 2;
г) неверно, что x < 0 и x < 5;
д) x < 0 и у > 5;
е) 10 < x < 20;
ж) x > 3 или x < 1;
з) 0 < y < 4 и x < 5;
и) х > 3 и x < 10.
L2.2. Записать условие, которое является истинным, когда:
а) каждое из чисел А и В больше 100;
б) только одно из чисел А и В четное;
в) хотя бы одно из чисел А и В положительно;
г) каждое из чисел А, В, С кратно трем;
д) только одно из чисел А, В и С меньше 50;
е) хотя бы одно из чисел А, В, С отрицательно.
L2.3. Записать условие, которое является истинным, когда:
а) каждое из чисел X и Y нечетное;
б) только одно из чисел X и Y меньше 20;
в) хотя бы одно из чисел X и Y равно нулю;
г) каждое из чисел X, Y, Z отрицательное;
д) только одно из чисел X, Y и Z кратно пяти;
е) хотя бы одно из чисел X, Y, Z больше 100.
L2.4. Записать условие, которое является истинным, когда:
а) целое А кратно двум или трем;
б) целое А не кратно трем и оканчивается нулем.
L2.5. Записать условие, которое является истинным, когда:
а) целое N кратно пяти или семи;
б) целое N кратно четырем и не оканчивается нулем.
L2.6. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, каждое из которых не превосходит 8.
а) На поле (a, b) расположена ладья. Записать условие, при котором она угрожает полю (c, d).
б) На поле (a, b) расположен слон. Записать условие, при котором он угрожает полю (c, d).
в) На поле (a, b) расположен король. Записать условие, при котором он может одним ходом попасть на поле (c, d).
г) На поле (a, b) расположен ферзь. Записать условие, при котором он угрожает полю (c, d).
д) На поле (a, b) расположена белая пешка. Записать условие, при котором она может одним ходом попасть на поле (c, d):
— при обычном ходе;
— когда она «бьет» фигуру или пешку соперника.
Примечание. Белые пешки перемещаются на доске снизу вверх.
е) На поле (a, b) расположена черная пешка. Записать условие, при котором она может одним ходом попасть на поле (c, d):
— при обычном ходе;
— когда она «бьет» фигуру или пешку соперника.
Примечание. Черные пешки перемещаются на доске сверху вниз.
ж) На поле (a, b) расположен конь. Записать условие, при котором он угрожает полю (c, d).
L2.7. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, e, f, каждое из которых не превосходит 8. Записать условие, при котором белая фигура, расположенная на поле (a, b), может одним ходом пойти на поле (e, f), не попав при этом под удар черной фигуры, находящейся на поле (c, d). Рассмотреть следующие варианты сочетаний белой и черной фигур:
а) ладья и ладья;
б) ладья и ферзь;
в) ладья и конь;
г) ладья и слон;
д) ферзь и ферзь;
е) ферзь и ладья;
ж) ферзь и конь;
з) ферзь и слон;
и) конь и конь;
к) конь и ладья;
л) конь и ферзь;
м) конь и слон;
н) слон и слон;
о) слон и ферзь;
п) слон и конь;
р) слон и ладья;
с) король и слон;
т) король и ферзь;
у) король и конь;
ф) король и ладья.
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.
L2.6. С визуализацией небольшой)
private static char[,] ReadMap(string path)
{
string[] file = File.ReadAllLines(«map.txt»);
char[,] map = new char[GetMaxLengthOfLine(file), file.Length];
for (int x = 0; x < map.GetLength(0); x++)
for (int y = 0; y < map.GetLength(1); y++)
map[x, y] = file[y][x];
return map;
}
private static int GetMaxLengthOfLine(string[] lines)
{
int maxLength = lines[0].Length;
foreach (var line in lines)
if (line.Length > maxLength)
maxLength = line.Length;
return maxLength;
}
private static void DrawMap(char[,] map)
{
for (int y = 0; y < map.GetLength(1); y++)
{
for (int x = 0; x < map.GetLength(0); x++)
{
Console.Write(map[x, y]);
}
Console.Write(«\n»);
}
}
private static void ChessBoard(int x, int y, char[,] map)
{
char nextCell = map[x, y — 1];
if (y == 1) y = 7;
else if (y == 2) y = 6;
else if (y == 3) y = 5;
else if (y == 4) y = 4;
else if (y == 5) y = 3;
else if (y == 6) y = 2;
else if (y == 7) y = 1;
else if (y == 8) y = 0;
if (x == 1) x = 1;
else if (x == 2) x = 4;
else if (x == 3) x = 7;
else if (x == 4) x = 10;
else if (x == 5) x = 13;
else if (x == 6) x = 16;
else if (x == 7) x = 19;
else if (x == 8) x = 22;
Console.SetCursorPosition(x, y);
}
static void Main(string[] args)
{
int a, b, c, d, e = 1;
Random random = new Random();
a = random.Next(1, 9);
b = random.Next(1, 9);
c = random.Next(1, 9);
d = random.Next(1, 9);
bool result = false;
Console.CursorVisible = false;
char[,] map = ReadMap(«map.txt»);
DrawMap(map);
ChessBoard(a, b, map);
Console.Write(‘#’);
ChessBoard(c, d, map);
Console.Write(‘@’);
Console.SetCursorPosition(30, 0);
Console.Write($»# — Белая фигура на {a}, {b}»);
Console.SetCursorPosition(30, 1);
Console.Write($»@ — Чёрная фигура на {c}, {d}»);
Console.SetCursorPosition(0, 10);
Console.WriteLine($»На поле {a}, {b} расположена ладья.»);
if (a == c || b == d)
{
Console.WriteLine($»Ладья на {a}, {b}. Чёрная фигура под ударом.»);
}
else
{
Console.WriteLine(«Угрозы чёрной фигуре нет.»);
}
Console.WriteLine($»\nНа поле {a}, {b} расположен слон.»);
for (int i = 1; i <= 8; i++)
{
if (a + i == c && b + i == d || Math.Abs(a — i) == c && Math.Abs(b — i) == d || a + i == c && Math.Abs(b — i) == d ||
Math.Abs(a — i) == c && b + i == d)
{
Console.WriteLine($»Слон на {a}, {b}. Чёрная фигура под ударом.»);
result = false;
break;
}
else result = true;
}
if (result)
{
Console.WriteLine(«Угрозы чёрной фигуре нет.»);
}
Console.WriteLine($»\nНа поле {a}, {b} расположен Король.»);
if (Math.Abs(a — c) <= 1 && Math.Abs(b — d) <= 1)
{
Console.WriteLine($»Король может сходить на {c}, {d}.»);
}
else { Console.WriteLine($»Король НЕ может сходить на {c}, {d}.»); }
Console.WriteLine($»\nНа поле {a}, {b} расположен Ферзь.»);
for (int i = 0; i <= 8; i++)
{
if (a == c || b == d || a + i == c && b + i == d || Math.Abs(a — i) == c && Math.Abs(b — i) == d
|| a + i == c && Math.Abs(b — i) == d || Math.Abs(a — i) == c && b + i == d)
{
Console.WriteLine($»Ферзь на {a}, {b}. Чёрная фигура под ударом.»);
result = false;
break;
}
else result = true;
}
if (result)
{
Console.WriteLine(«Угрозы чёрной фигуре нет.»);
}
Console.WriteLine($»\nНа поле {a}, {b} расположена Белая пешка.»);
if (a == c && b + e == d || b == 8)
{
Console.WriteLine($»Белая Пешка НЕ может сходить на {c}, {d}.»);
}
else if (a != c || a == c && b + e != d)
{
Console.WriteLine($»Белая Пешка может сходить на {a}, {b + 1}.»);
}
else if (Math.Abs(a — c) == 1 && b + e == d)
{
Console.WriteLine($»Белая Пешка может ходит на {c}, {b}. Забирая при этом Чёрную фигуру»);
}
Console.WriteLine($»\nНа поле {a}, {b} расположена Чёрная пешка.»);
if (a == c && b — e == d || b == 1)
{
Console.WriteLine($»Чёрная Пешка НЕ может сходить на {c}, {d}.»);
}
else if (a != c || a == c && b — e != d)
{
Console.WriteLine($»Чёрная Пешка может сходить на {a}, {b — 1}.»);
}
else if (Math.Abs(a — c) == 1 && b — e == d)
{
Console.WriteLine($»Чёрная Пешка может ходит на {c}, {b}. Забирая при этом Белую фигуру»);
}
Console.WriteLine($»\nНа поле {a}, {b} расположен Конь.»);
if (a + e * 2 == c && b + e == d || a + e == c && b + e * 2 == d || a — e == c && b + e * 2 == d || a — e * 2 == c && b + e == d
|| a + e == c && b — e * 2 == d || a + e * 2 == c && b — e == d || a — e * 2 == c && b — e == d || a — e == c && b — e * 2 == d)
{
Console.WriteLine($»Конь угрожает фигуре на {c}, {d}.»);
}
else
{
Console.WriteLine($»Фигуре на {c}, {d}. Ни чего не угрожает»);
}
}
L2.4. Записать условие, которое является истинным, когда:
а) целое А кратно двум или трем;
б) целое А не кратно трем и оканчивается нулем.
int A = int.Parse(Console.ReadLine());
bool a = A % 2 == 0 | A % 3 == 0;
bool b = A % 3 != 0 & A % 10 == 0;// т.к. только числа заканчивающиеся на 0 могут дать при делении на 10 остаток 0.
Console.WriteLine($»a){a}\nb){b}»);
Console.ReadKey();
L2.6в) На поле (a, b) расположен король. Записать условие, при котором он может одним ходом попасть на поле (c, d).
Console.WriteLine(«Vvedite a b c d cherez enter «);
int a = Convert.ToInt32(Console.ReadLine());
int b = Convert.ToInt32(Console.ReadLine());
int c = Convert.ToInt32(Console.ReadLine());
int d = Convert.ToInt32(Console.ReadLine());
if (1 <= a && a <= 8 && 1 <= b && b <= 8 && 1 <= c && c <= 8 && 1 <= d && d <= 8)
{ Console.WriteLine(«Verno! vashi kletki : (» + a + «, » + b + » ) i (» + c + » ,» + d + «) » ); }
else {Console.WriteLine(«NE Verno»); }
if ((a + 1 == c && b + 1 == d)||(a + 1 == c && b == d)|| (a — 1 == c && b == d) || (a + 1 == c && b == d) ||
(a == c && b + 1 == d) || (a == c && b — 1 == d)|| (a + 1 == c && b -1 == d) || (a — 1 == c && b+1 == d))
{
Console.WriteLine(«угрожает полю c, d»);
}
else
{
Console.WriteLine(» на своем поле»);
}
if ((a — c) == 1 || (b — d) == 1)
да
можно было так…………………………………
гениальные мысли преследовали меня, но я была быстрее
б) На поле (a, b) расположен слон. Записать условие, при котором он угрожает полю (c, d).
Console.WriteLine(«Vvedite a b c d cherez enter «);
int a = Convert.ToInt32(Console.ReadLine());
int b = Convert.ToInt32(Console.ReadLine());
int c = Convert.ToInt32(Console.ReadLine());
int d = Convert.ToInt32(Console.ReadLine());
int i = Convert.ToInt32(Console.ReadLine());
if (1<=a && a<=8 && 1<=b && b<=8 && 1<=c && c<=8 && 1<=d && d<=8)
{
Console.WriteLine(«Verno! vashi kletki : (» + a + «, » + b + » ) i (» + c + » ,» + d + «) I kolvo kletok peremeshenija » +i);
}
else
{
Console.WriteLine(«NE Verno»);
}
if (a + i >= c && b + i >= d)
{
Console.WriteLine(«Ладья угрожает полю c, d»);
}
else
{
Console.WriteLine(«Ладья на своем поле»);
}
L2.6.a)На поле (a, b) расположена ладья. Записать условие, при котором она угрожает полю (c, d).
Console.WriteLine(«Vvedite a b c d cherez enter «);
int a = Convert.ToInt32(Console.ReadLine());
int b = Convert.ToInt32(Console.ReadLine());
int c = Convert.ToInt32(Console.ReadLine());
int d = Convert.ToInt32(Console.ReadLine());
if (1<=a && a<=8 && 1<=b && b<=8 && 1<=c && c<=8 && 1<=d && d<=8)
{
Console.WriteLine(«Verno » + a + » » + b + » » + c + » » + d);
}
else
{
Console.WriteLine(«NE Verno»);
}
if (a == c || b == d)
{
Console.WriteLine(«Ладья угрожает полю c, d»);
}
else
{
Console.WriteLine(«Ладья на своем поле»);
}
L2.4.
{
// Записать условие, которое является истинным, когда:
//а) целое А кратно двум или трем;
// б) целое А не кратно трем и оканчивается нулем.
bool a = false, b = false;
int A = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(«vvashi dannie » + A + » » + a + » » + b );
if (A % 2 == 0 || A % 3 == 0)
a = true;
if (A % 3 != 0 && A % 10 == 0)
b = true;
Console.WriteLine(«vvashi NEW dannie » + A + » » + a + » » + b );
}
L2.2{
// Записать условие, которое является истинным, когда:
//) каждое из чисел А и В больше 100;
//) только одно из чисел А и В четное;
//) хотя бы одно из чисел А и В положительно;
//) каждое из чисел А, В, С кратно трем;
//) только одно из чисел А, В и С меньше 50;
// f) хотя бы одно из чисел А, В, С отрицательно.
bool a = false, b = false, c = false, d = false, e = false, f = false;
int A = Convert.ToInt32(Console.ReadLine());
int B = Convert.ToInt32(Console.ReadLine());
int C = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(«vvashi dannie» + A + B + C + a + b + c + d + e + f);
if (A > 100 && B > 100)
a = true;
if ( (A%2) ==0 ||(B%2)==0)
b = true;
if ((A > 0) || (B > 0))
c = true;
if ((A % 3) == 0 && (B % 3) == 0 && (C % 3) == 0)
d = true;
if ((A <50) || (B <50) || ( C <50))
e = true;
if ((A < 0) || (B < 0) || (C < 0) )
f = true;
Console.WriteLine(«vvashi NEW dannie » + A + » «+ B + » » +C + » » + a + » » + b + » » + c + » » + d + » » + e + » » + f);
}
//L2.3.Записать условие, которое является истинным, когда:
//а) каждое из чисел X и Y нечетное;
//б) только одно из чисел X и Y меньше 20;
//в) хотя бы одно из чисел X и Y равно нулю;
//г) каждое из чисел X, Y, Z отрицательное;
//д) только одно из чисел X, Y и Z кратно пяти;
//е) хотя бы одно из чисел X, Y, Z больше 100.
double X, Y, Z;
double[] variables = new double[3];
bool result = true;
for (int i = 0; i < 3; i++)
{
if (i == 0)
Console.Write(«Введите значение числа X = «);
else if (i == 1)
Console.Write(«Введите значение числа Y = «);
else if (i == 2)
Console.Write(«Введите значение числа Z = «);
variables[i] = double.Parse(Console.ReadLine());
}
X = variables[0];
Y = variables[1];
Z = variables[2];
Console.WriteLine();
Console.WriteLine(«Выбирете одно из условий:» +
«\nа) каждое из чисел X и Y нечетное;» +
«\nб) только одно из чисел X и Y меньше 20;» +
«\nв) хотя бы одно из чисел X и Y равно нулю;» +
«\nг) каждое из чисел X, Y, Z отрицательное;» +
«\nд) только одно из чисел X, Y и Z кратно пяти;» +
«\nе) хотя бы одно из чисел X, Y, Z больше 100.»);
string s = Console.ReadLine();
Console.WriteLine();
switch (s)
{
case «а)»:
result = (X % 2 != 0) & (Y % 2 != 0);
break;
case «б)»:
result = (X < 20) ^ (Y < 20);
break;
case «в)»:
result = (X == 0) | (Y == 0);
break;
case «г)»:
result = (X < 0) & (Y < 0) & (Z < 0);
break;
case «д)»:
result = (X % 5 == 0) ^ (Y % 5 == 0) ^ (Z % 5 == 0);
break;
case «е)»:
result = (X > 100) | (Y > 100) | (Z > 100);
break;
default:
Console.WriteLine(«Неизвестное значение!»);
break;
}
Console.WriteLine(result);
Console.ReadLine();
//L2.3.Записать условие, которое является истинным, когда:
//а) каждое из чисел X и Y нечетное;
//б) только одно из чисел X и Y меньше 20;
//в) хотя бы одно из чисел X и Y равно нулю;
//г) каждое из чисел X, Y, Z отрицательное;
//д) только одно из чисел X, Y и Z кратно пяти;
//е) хотя бы одно из чисел X, Y, Z больше 100.
double X, Y, Z;
double[] variables = new double[3];
bool[] XYZ = { true, false };
bool result = true;
for (int i = 0; i < 3; i++)
{
if (i == 0)
Console.Write(«Введите значение числа X = «);
else if (i == 1)
Console.Write(«Введите значение числа Y = «);
else if (i == 2)
Console.Write(«Введите значение числа Z = «);
variables[i] = double.Parse(Console.ReadLine());
}
X = variables[0];
Y = variables[1];
Z = variables[2];
Console.WriteLine(«Выбирете одно из условий:» +
«\nа) каждое из чисел X и Y нечетное;» +
«\nб) только одно из чисел X и Y меньше 20;» +
«\nв) хотя бы одно из чисел X и Y равно нулю;» +
«\nг) каждое из чисел X, Y, Z отрицательное;» +
«\nд) только одно из чисел X, Y и Z кратно пяти;» +
«\nе) хотя бы одно из чисел X, Y, Z больше 100.»);
string s = Console.ReadLine();
foreach (bool x in XYZ)
foreach (bool y in XYZ)
foreach (bool z in XYZ)
switch (s)
{
case «a)»:
result = ((X % 2 != 0) && (Y % 2 != 0));
break;
case «б)»:
result = ((X < 0) ^ (Y < 0));
break;
case «в)»:
result = ((X == 0) || (Y == 0));
break;
case «г)»:
result = ((X < 0) && (Y < 0) && (Z < 0));
break;
case «д)»:
result = ((X % 5 == 0) ^ (Y % 5 == 50) ^ (Z % 5 == 0));
break;
case «е)»:
result = ((X > 100) || (Y > 100) || (Z > 100));
break;
default:
Console.WriteLine(«Неизвестное значение!»);
break;
}
Console.WriteLine(result);
Console.ReadLine();
L2.1 — L2.5 Вот такие решения
L.2.2
bool z;
Console.Write(«Введите число А: «);
int A = Convert.ToInt32(Console.ReadLine());
Console.Write(«Введите число B: «);
int B = Convert.ToInt32(Console.ReadLine());
Console.Write(«Введите число C: «);
int C = Convert.ToInt32(Console.ReadLine());
if (A > 100 && B > 100)
{
z = true;
Console.WriteLine($»{z} — а»);
}
if ((A % 2 == 0) ^ (B % 2 == 0))
{
z = true;
Console.WriteLine($»{z} — б»);
}
if ((A > 0) || (B > 0))
{
z = true;
Console.WriteLine($»{z} — в»);
}
if ((A % 3 == 0) && (B % 3 == 0) && (C % 3 == 0))
{
z = true;
Console.WriteLine($»{z} — г»);
}
if ((A < 50) ^ (B < 50) ^ (C < 50))
{
z = true;
Console.WriteLine($»{z} — д»);
}
if ((A < 0) || (B < 0) || (C < 0))
{
z = true;
Console.WriteLine($»{z} — е»);
}
L.2.6.
L2.4. Записать условие, которое является истинным, когда:
а) целое А кратно двум или трем;
б) целое А не кратно трем и оканчивается нулем.
L2.2. Записать условие, которое является истинным, когда:
а) каждое из чисел А и В больше 100;
б) только одно из чисел А и В четное;
в) хотя бы одно из чисел А и В положительно;
г) каждое из чисел А, В, С кратно трем;
д) только одно из чисел А, В и С меньше 50;
е) хотя бы одно из чисел А, В, С отрицательно.
Алексей, в целом — верно. Добавлю только, что:
— вам нужно использовать авто форматирование, что бы вставлялись пробелы куда нужно в коде и было более читаемо
— блоки if лучше заключать в фигурные скобки
— подразумевалось, что вы напишите одно условие, но большое и правильно его отформатируете переносами строк для читаемости, т.к. если одна из его веток верна, может быть нужно выполнить кучу действий.
L2.6. б) На поле (a, b) расположен слон. Записать условие, при котором он угрожает полю (c, d).
решение:
static void Main(string[] args)
{
int a = 0, b = 0, c = 0, d = 0;
a = Convert.ToInt32(Console.ReadLine());
b = Convert.ToInt32(Console.ReadLine());
c = Convert.ToInt32(Console.ReadLine());
d = Convert.ToInt32(Console.ReadLine());
if ((a > 8 || b > 8 || c > 8 || d > 8) || (a < 1 || b < 1 || c < 1 || d = 1; i—, q—)
True_Method(c, d, i, q);
Console.WriteLine(«»);
for (int i = a, q = b; q = 1; i—, q++)
True_Method(c, d, i, q);
Console.WriteLine(«»);
for (int i = a, q = b; i <= 8; i++, q—)
True_Method(c, d, i, q);
}
private static void True_Method(int c, int d, int i, int q)
{
if (i == c & q == d)
Console.Write("есть угроза!");
}
верно?
L2.6. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, каждое из которых не превосходит 8.
б) На поле (a, b) расположен слон. Записать условие, при котором он угрожает полю (c, d).
static void Main(string[] args)
{
int a = 0, b = 0, c = 0, d = 0;
a = Convert.ToInt32(Console.ReadLine());
b = Convert.ToInt32(Console.ReadLine());
c = Convert.ToInt32(Console.ReadLine());
d = Convert.ToInt32(Console.ReadLine());
if ((a > 8 || b > 8 || c > 8 || d > 8) || (a < 1 || b < 1 || c < 1 || d = 1; i—, q—)
True_Method(c, d, i, q);
Console.WriteLine(«»);
for (int i = a, q = b; q = 1; i—, q++)
True_Method(c, d, i, q);
Console.WriteLine(«»);
for (int i = a, q = b; i <= 8; i++, q—)
True_Method(c, d, i, q);
}
private static void True_Method(int c, int d, int i, int q)
{
if (i == c & q == d)
Console.Write("есть угроза!");
}
}
так верно?
L2.6. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, каждое из которых не превосходит 8.
б) На поле (a, b) расположен слон. Записать условие, при котором он угрожает полю (c, d).
using System;
class programm
{
static void Main(string[] args)
{
int a = 0, b = 0, c = 0, d = 0;
a = Convert.ToInt32(Console.ReadLine());
b = Convert.ToInt32(Console.ReadLine());
c = Convert.ToInt32(Console.ReadLine());
d = Convert.ToInt32(Console.ReadLine());
if ((a > 8 || b > 8 || c > 8 || d > 8) || (a < 1 || b < 1 || c < 1 || d = 1; i—, q—)
True_Method(c, d, i, q);
Console.WriteLine(«»);
for (int i = a, q = b; q = 1; i—, q++)
True_Method(c, d, i, q);
Console.WriteLine(«»);
for (int i = a, q = b; i <= 8; i++, q—)
True_Method(c, d, i, q);
}
private static void True_Method(int c, int d, int i, int q)
{
if (i == c & q == d)
Console.Write("есть угроза!");
}
}
так верно?
static void Main(string[] args)
{
// L2.1. Записати логічний вираз, котрі мають значення «істина» тільки при виконанні певних умов:
int x = int.Parse(Console.ReadLine());
int y = int.Parse(Console.ReadLine());
bool result;
// x < 2 и у< 3;
if (x < 2 && y < 3)
{
Console.WriteLine("a = "+(result = true));
}
// невірно, что x < 2;
if (!(x < 2))
{
Console.WriteLine("b = " + (result = true));
}
// x < 1 или y< 2;
if (x < 1 || y < 2)
{
Console.WriteLine("c = " + (result = true));
}
// неверно, что x< 0 и x< 5;
if (!(x < 0 && x < 5))
{
Console.WriteLine("d = " + (result = true));
}
// x 5;
if (x 5)
{
Console.WriteLine(«i = » + (result = true));
}
// 10 < x < 20;
if (10 < x && x 3 или x 3 || x < 1)
{
Console.WriteLine("g = " + (result = true));
}
// 0 < y < 4 и x < 5;
if ((0 < y && y < 4) && x 3 и x 3 && x < 10)
{
Console.WriteLine("k = " + (result = true));
}
}
Ну и налепил я тут каши :))
Записать условие, которое является истинным, когда:
а) каждое из чисел А и В больше 100;
б) только одно из чисел А и В четное;
в) хотя бы одно из чисел А и В положительно;
г) каждое из чисел А, В, С кратно трем;
д) только одно из чисел А, В и С меньше 50;
е) хотя бы одно из чисел А, В, С отрицательно.
int a = 0, b = 0, c = 0;
do
{
try
{
Console.Write(«ВВедите число a, не равное 0: «);
a = int.Parse(Console.ReadLine());
Console.Write(«ВВедите число b, не равное 0: «);
b = int.Parse(Console.ReadLine());
Console.Write(«ВВедите число c, не равное 0: «);
c = int.Parse(Console.ReadLine());
}
catch (FormatException ex)
{
Console.WriteLine(«Вы ввели не число. Попробуйте заново. {0} \n», ex.Message);
}
}
while (a == 0 || b == 0 || c == 0);
Console.WriteLine(«Значения переменных приняты.»);
// а) каждое из чисел А и В больше 100;
Console.Write(«Число а и b больше 100 — «);
string result1;
string t = «утверждение верно»;
string f = «утверждение ложно»;
result1 = (a > 100 && b > 100) ? t : f ;
Console.WriteLine(result1);
Console.ReadKey();
//б) только одно из чисел А и В четное;
Console.Write(«только одно из чисел А и В четное — «);
result1 = (a % 2 == 0 ^ ((b & 1) == 0)) ? t : f;
Console.WriteLine(result1);
Console.ReadKey();
//в) хотя бы одно из чисел А и В положительно
Console.Write(«хотя бы одно из чисел А и В положительно — «);
result1 = (a > 0 || b > 0) ? t : f;
Console.WriteLine(result1);
Console.ReadKey();
// г) каждое из чисел А, В, С кратно трем;
Console.Write(«каждое из чисел А, В, С кратно трем — «);
result1 = ((a%3 == 0) && (b%3 == 0) && (c%3 == 0)) ? t : f;
Console.WriteLine(result1);
Console.ReadKey();
// д) только одно из чисел А, В и С меньше 50;
Console.Write(«только одно из чисел А, В и С меньше 50 — «);
int i = 0;
/*if (a < 50)
++i;
*/
i = a < 50 ? ++i : i;
i = b < 50 ? ++i : i;
i = c < 50 ? ++i : i;
if (i == 1)
result1 = t;
else
result1 = f;
Console.WriteLine(result1);
Console.ReadKey();
// е) хотя бы одно из чисел А, В, С отрицательно.
Console.Write("хотя бы одно из чисел А, В, С отрицательно — ");
result1 = (((a < 0) || (b < 0)) || (c < 0)) ? t : f;
Console.WriteLine(result1);
Console.ReadKey();
}
}
}
L2.4. Записать условие, которое является истинным, когда:
а) целое А кратно двум или трем;
б) целое А не кратно трем и оканчивается нулем.
._. вроде так
Vlad! Тернарный оператор дает краткость записи, верно! А почему вроде?
L2.4 Записать условие, которое является истинным, когда:
а) целое А кратно двум или трем;
б) целое А не кратно трем и оканчивается нулем.
Выношу на всеобщий суд
Программа выполнит первое условие даже при вводе значения 10 или 20, потому что десятки тоже кратные двум. До второго условия эта программа не дойдет.
Никита, верно. Тут явно ошибка в условиях. Предложите свое решение?
Никита, в целом верно, но есть пара стоящих замечаний:
— я удалил лишний комментарий
— пишите в будущем номер задания в ответе
— «&» должен быть заменен на «&&» в условиях; ваш вариант хрупок и может сломаться при эволюции кода
— я бы продублировал второе условие в else верхнего уровня; так надежнее; что бы понять — подумайте как изменится ваше решение если я всего лишь в условии А заменю 2 на 7 — сложно будет не допустить тут ошибку
L2.3 Записать условие, которое является истинным, когда:
а) каждое из чисел X и Y нечетное;
б) только одно из чисел X и Y меньше 20;
в) хотя бы одно из чисел X и Y равно нулю;
г) каждое из чисел X, Y, Z отрицательное;
д) только одно из чисел X, Y и Z кратно пяти;
е) хотя бы одно из чисел X, Y, Z больше 100.
Максим! Хорошо, с небольшими поправками.
L2.7. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, e, f, каждое из которых не превосходит 8. Записать условие, при котором белая фигура, расположенная на поле (a, b), может одним ходом пойти на поле (e, f), не попав при этом под удар черной фигуры, находящейся на поле (c, d). Рассмотреть следующие варианты сочетаний белой и черной фигур:
а) ладья и ладья;
б) ладья и ферзь;
в) ладья и конь;
г) ладья и слон;
д) ферзь и ферзь;
е) ферзь и ладья;
ж) ферзь и конь;
з) ферзь и слон;
и) конь и конь;
к) конь и ладья;
л) конь и ферзь;
м) конь и слон;
н) слон и слон;
о) слон и ферзь;
п) слон и конь;
р) слон и ладья;
с) король и слон;
т) король и ферзь;
у) король и конь;
ф) король и ладья.
Первое решение от Эд: с использованием локальных функций (см. комментарий ниже):
Второе решение не использует локальные функции, а только функции класса:
Так как коды достаточно большие, прошу желающих протестировать программы (их можно просто скопировать с сайта) по всем пунктам от а) до ф).
Отмечу также, что без использования методов, созданных Эдом, код вообще был бы не читаемым. К этому Эд пришел, думаю, решив сначала задачу 6, которую затем переложил на методы. Иногда я делаю также, чтобы сделать простым код (разбить на отдельные подпрограммы), но чаще — сразу!
Теперь про локальные функции:
1) В С и С++ они были всегда.
2) В С# вплоть до версии 6.0 их в чистом виде не было, они снова появились в С# 7.0 (2017 год), поэтому я о них практически забыл (применительно к C#).
Зд, спасибо, что Вы их использовали в исходном варианте.
3) В VS 2017 b 2019 (с версией C# 7.0) локальные функции доступны.
L2.6
Эд! верно.
L2.5. Записать условие, которое является истинным, когда:
а) целое N кратно пяти или семи;
Макс, верно.
L2.1. Записать логические выражения, которые имеют значение «Истина» только при выполнении указанных условий:
ж) x > 3 или x < 1
Можно так.
L2.6. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, каждое из которых не превосходит 8.
д) На поле (a, b) расположена белая пешка. Записать условие, при котором она может одним ходом попасть на поле (c, d):
— при обычном ходе;
— когда она «бьет» фигуру или пешку соперника.
Примечание. Белые пешки перемещаются на доске снизу вверх.
е) На поле (a, b) расположена черная пешка. Записать условие, при котором она может одним ходом попасть на поле (c, d):
— при обычном ходе;
— когда она «бьет» фигуру или пешку соперника.
Примечание. Черные пешки перемещаются на доске сверху вниз.
Андрей! Ваше решение неполное. Например, (2,2) -> (1,3) — белая пешка бьет налево — где?
L2.6. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, каждое из которых не превосходит 8.
г) На поле (a, b) расположен ферзь. Записать условие, при котором он угрожает полю (c, d).
Андрей, верно.
L2.6. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, каждое из которых не превосходит 8.
а) На поле (a, b) расположена ладья. Записать условие, при котором она угрожает полю (c, d).
Андрей! В шахматы играете? Решение неверное! Ладья стоит на поле (a,b). Другая фигура на поле (c,d). Сможет ли ладья эту фигуру побить?
L2.2. Записать условие, которое является истинным, когда:
д) только одно из чисел А, В и С меньше 50;
Андрей! Немного исправил Ваше решение, заменив тип переменных на bool. Хорошо, что в C# (в отличие от С) они есть.
А дальше просто одно логическое условие! Повторите булеву алгебру.
L2.2. Записать условие, которое является истинным, когда:
б) только одно из чисел А и В четное;
Надеюсь правильно, а то тяжко даются bool-переменные.
Андрей! Переменные C и D объявили, но не использовали.
В задаче, по сути, требуется найти булеву функцию «Сложение по модулю 2» (отрицание эквивалентности). Например, так:
int A, B, C;
A = int.Parse(Console.ReadLine());
B = int.Parse(Console.ReadLine());
C = int.Parse(Console.ReadLine());
Console.WriteLine(A > 100 && B > 100 ? true : «»); // Выводит тру если каждое из чисел больше 100.
if (A % 2 == 0 || B % 2 == 0)// выводит тру если хотя бы одно из чисел четное
{
Console.WriteLine(«True»);
}
else { }
Console.WriteLine(A >= 0 || B >= 0 ? true : «»);// выводит тру если хотя бы одно из чисел положительно.
if (A % 3 == 0 && B % 3 == 0 & C % 3 == 0) //выводит тру если все выражения кратны 3м.
{
Console.WriteLine(«True»);
}
else { }
if (A < 50 || B < 50 || C < 50)// выводит тру если хотя бы одно из выражений верно.
{
Console.WriteLine("True");
}
else { }
Console.WriteLine(A < 0 || B < 0 || C < 0 ? true : ""); //выводит тру если хотя бы одно из выражений верно
Можно в принципе все эти выражения через метод вызова и тернарного оператора проверить, нет? (сделал разными способами просто чтобы было)
Надеюсь верно. Тут сразу все решения.