Напишите в комментарии к этой записи консольные приложения для решения этих задач, указав код задачи.
Решены задачи: 1-13. Не решены: 14-25.
Задачи
I6.1. Даны цифры двух целых чисел: двузначного a2a1 и однозначного b, где a1 — число единиц, a2 — число десятков. Получить цифры числа, равного разности заданных чисел (известно, что это число двузначное). Число-уменьшаемое и число-разность не определять.
I6.2. Даны цифры двух двузначных чисел, записываемых в виде a2a1 и b2b1 , где a1 и b1 — число единиц, a2 и b2 — число десятков. Получить цифры числа, равного разности заданных чисел (известно, что это число двузначное). Число-уменьшаемое, число-вычитаемое и число-разность не определять.
I6.3. Даны цифры двух десятичных целых чисел: трехзначного a3a2a1 и двузначного b2b1, где a1 и b1 — число единиц, a2 и b2 — число десятков, a3 — число сотен. Получить цифры, составляющие разность этих чисел (известно, что это число трехзначное). Число-уменьшаемое, число-вычитаемое и число-разность не определять.
I6.4. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 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).
Во всех задачах ответ проверить на шахматной доске или на клетчатой бумаге.
I6.5. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, e, f, каждое из которых не превосходит восьми. На поле (a, b) расположена белая фигура, на поле (c, d) — черная. Определить, может ли белая фигура пойти на поле (e, f), не попав при этом под удар черной фигуры. Рассмотреть следующие варианты сочетаний белой и черной фигур:
а) ладья и ладья;
б) ладья и ферзь;
в) ладья и конь;
г) ладья и слон;
д) ферзь и ферзь;
е) ферзь и ладья;
ж) ферзь и конь;
з) ферзь и слон;
и) конь и конь;
к) конь и ладья;
л) конь и ферзь;
м) конь и слон;
н) слон и слон;
о) слон и ферзь;
п) слон и конь;
р) слон и ладья;
с) король и слон;
т) король и ферзь;
у) король и конь;
ф) король и ладья.
Во всех задачах ответ проверить на шахматной доске или на клетчатой бумаге.
I6.6. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число — номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c, d, каждое из которых не превосходит восьми. Определить, являются ли поля (a, b) и (c, d) полями одного цвета. Ответ проверить на шахматной доске или на клетчатой бумаге.
I6.7. Даны вещественные положительные числа a, b, c. Выяснить, существует ли треугольник со сторонами a, b, c.
I6.8. Даны вещественные положительные числа a, b, c. Если существует треугольник со сторонами a, b, c, то определить, является ли он прямоугольным.
I6.9. Даны вещественные положительные числа a, b, c. Если существует треугольник со сторонами a, b, c, то:
а) определить его вид (прямоугольный, остроугольный или тупоугольный);
б) определить его вид (прямоугольный, остроугольный или тупоугольный) и особенности (равносторонний, равнобедренный, разносторонний).
I6.10. Дано целое число n (1 <= n <= 99), определяющее возраст человека (в годах). Для этого числа напечатать фразу «мне n лет», учитывая, что при некоторых значениях n слово «лет» надо заменить на слово «год» или «года».
I6.11. Для натурального числа k напечатать фразу «мы нашли k грибов в лесу», согласовав окончание слова «гриб» с числом k.
I6.12. История из 20 века. Дано натуральное число n (1 <= n <= 9999), определяющее стоимость товара в копейках. Выразить стоимость в рублях и копейках, например, 3 рубля 21 копейка, 15 рублей 5 копеек, 1 рубль ровно и т. п.
I6.13. Дано натуральное число n (1 <= n <= 1188), определяющее возраст человека (в месяцах). Выразить возраст в годах и месяцах, например, 21 год 10 месяцев, 52 года 1 месяц, 46 лет ровно и т. п.
I6.14. Известны год, номер месяца и день рождения человека, а также год, номер месяца и день сегодняшнего дня. Определить возраст человека (число полных лет).
I6.15. Известны год, номер месяца и день рождения каждого из двух человек. Определить, кто из них старше.
I6.16. Известны год и номер месяца рождения человека, а также год и номер месяца сегодняшнего дня. Определить возраст человека (число полных лет и число полных месяцев). При определении числа полных месяцев дни месяца не учитывать, а использовать разность между номерами месяцев. Например, если месяц рождения — февраль, а текущий (сегодняшний) месяц — май, то число полных месяцев равно трем независимо от дня рождения и сегодняшнего дня.
I6.17. Поезд прибывает на станцию в a часов b минут и отправляется в c часов d минут. Пассажир пришел на платформу в n часов m минут. Будет ли поезд стоять на платформе? Числа a, b, c, d, n, m — целые, 0 <= a <Б= 23, 0 <= b <= 59,
0 <= c <= 23, 0 <= d <= 59, 0 <= n <= 23, 0 <= m <= 59.
I6.18.0. Дата некоторого дня определяется двумя натуральными числами: m (порядковый номер месяца) и n (число). По заданным n и m определить:
а) дату предыдущего дня (принять, что n и m не определяют 1 января);
б) дату следующего дня (принять, что n и m не определяют 31 декабря).
Примечание. В обеих задачах принять также, что год не является високосным.
I6.18. Дата некоторого дня определяется тремя натуральными числами: g (год), m (порядковый номер месяца) и n (число). По заданным g, n и m определить:
а) дату предыдущего дня;
б) дату следующего дня.
В обеих задачах рассмотреть два случая:
1) заданный год не является високосным;
2) заданный год может быть високосным (см. задачу I3.25).
I6.19. Работа светофора для водителей запрограммирована следующим образом:
в начале каждого часа в течение трех минут горит зеленый сигнал, затем в течение одной минуты — желтый, в течение двух минут — красный, в течение трех минут — опять зеленый и т. д. Дано вещественное число t, означающее время в минутах, прошедшее с начала очередного часа. Определить, сигнал какого цвета горит для водителей в этот момент.
I6.20. Дано целое число k (1 <=k <= 365). Определить, каким будет k-й день года: субботой, воскресеньем или рабочим днем, если 1 января:
а) понедельник;
б) d-й день недели (если 1 января — понедельник, то d=1 , если вторник — d=2 , …, если воскресенье — d=7).
I6.21. Даны целое число k (1 <= k <= 180) и последовательность цифр 10111213…9899, в которой выписаны подряд все двузначные числа. Определить k-ю цифру.
Примечание. Величины строкового типа не использовать.
I6.22. Дана последовательность цифр, представляющая собой записанные подряд ноль и 20 первых натуральных чисел. Найти цифру с номером n в этой последовательности (1 <= n <= 32).
Примечание. Величины строкового типа не использовать.
I6.23. Даны целое число k (1 <= k <= 252) и последовательность цифр 505152…9899100101…149150, в которой выписаны подряд все натуральные числа от 50 до 250. Определить k-ю цифру.
Примечание. Величины строкового типа не использовать.
I6.24. Даны целое число k (1 <= k <= 222) и последовательность цифр 123…91011…9899100101…109110, в которой выписаны подряд все натуральные числа от 1 до 110. Определить k-ю цифру.
Примечание. Величины строкового типа не использовать.
I6.25. В подъезде жилого дома имеется n квартир, пронумерованных подряд, начиная с номера a. Определить, является ли сумма номеров всех квартир четным числом. Формулу суммы членов арифметической прогрессии не использовать.
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.
I6.4
byte a,b,c,d;
loop1:
System.Console.Write(«Enter coordinate: \n Cor1=»);
a = byte.Parse(Console.ReadLine());
System.Console.Write(» Cor2=»);
b = byte.Parse(Console.ReadLine());
if(a>8 || b>8){Console.WriteLine(«Error, enter number less than 8»); goto loop1;}
loop2:
System.Console.Write(«Enter 2nd coordinate: \n Cor1=»);
c = byte.Parse(Console.ReadLine());
System.Console.Write(» Cor2=»);
d = byte.Parse(Console.ReadLine());
if(c>8 || d>8)
{
Console.WriteLine(«Error, enter number less than 8»);
goto loop2;
}
if (a==c && b==d)
{
System.Console.WriteLine(«Error, your coorditanet are same, enter another»);
goto loop2;
}
if(c!=a && d!=b) System.Console.WriteLine(«Not threatening»);
else System.Console.WriteLine(«Threatens»); //это для ладьи
if(a>c && b>d) if(a-c==b-d) System.Console.WriteLine(«Threatens»);
if(a<c && b<d) if(c-a==d-b) System.Console.WriteLine(«Threatens»);
if(a<c && b>d) if(c-a==b-d) System.Console.WriteLine(«Threatens»);
if(a>c && b<d) if(a-c==d-b) System.Console.WriteLine(«Threatens»);
else System.Console.WriteLine(«Not Threatening»); //это для слогна
25 задача
using System;
class Program {
static void Main() {
Console.WriteLine(«Введите число квартир в доме: «);
int kolvo = Convert.ToInt32(Console.ReadLine());
int sum = 0;
for(int i = 0; i <= kolvo; i++) {
sum += i;
}
Console.WriteLine(sum % 2 == 0 ? «Сумма квартир четная» : «Сумма квартир нечетная»);
}
}
здесь был неправильный код
Не могу решить 23 и 24 — не понимаю их.
Задача I6.15
Такой вариантик, но корявый т.к ввод месяца обязательно должен быть 2-х цифр
Я когда публикую половина задачи пропадает
I6.15. Известны год, номер месяца и день рождения каждого из двух человек. Определить, кто из них старше.
Алексей В, опечатку исправили — вижу. Но алгоритм все еще не верен. Посмотрите свежим взглядом на ваши «WriteLine» — у вас нет случая, когда Персона 2 моложе, а он может быть :)
Странно, знаки поисчезали в if. Если их добавить все компилируется и работает
Алексей В, к сожалению не будет. Подсказки:
— первый «if» с опечатками имен переменных;
— условия должны быть сложнее;
— у вас если персона 2 моложе — ответ всегда не верный.
Проверьте свое решение. Начало движения в нем действительно логичное и правильное, но оно не полное.
I6.15. Известны год, номер месяца и день рождения каждого из двух человек. Определить, кто из них старше.
Алексей В, направление верное. Но код с ошибками и даже не выполнится и не скомпилируется. И есть логические ошибки тоже.
I6.21. Даны целое число k (1 <= k <= 180) и последовательность цифр 10111213…9899, в которой выписаны подряд все двузначные числа. Определить k-ю цифру. Примечание. Величины строкового типа не использовать.
Егор, можно так.
I6.19. Работа светофора для водителей запрограммирована следующим образом:
в начале каждого часа в течение трех минут горит зеленый сигнал, затем в течение одной минуты — желтый, в течение двух минут — красный, в течение трех минут — опять зеленый и т. д. Дано вещественное число t, означающее время в минутах, прошедшее с начала очередного часа. Определить, сигнал какого цвета горит для водителей в этот момент.
Владимир, верно.
16.10 Возраст (n лет)
Зададим метод:
Проверка:
Немного упростил Ваш алгоритм. Еще было решение Эда, смотрите выше.
Решение задач 15-25:
Хотелось бы отдельно остановиться на 18-й. Первое решение — лобовое, сначала написал код, потом он мне не понравился. Переписал, получилось компактнее, и еще заодно добавил валидацию вводимой даты. Вот только интересно, есть ли идея, как еще укоротить код?
В 17-й задаче сначала чуть не упустил вариант, когда поезд находится на станции при смене суток :)
И 25-я не сразу далась.
Анализ:
Задача I6.15 — верно.
Avtor Pidaras, napisal huitu v 24om number!!
I6.10 — 6.14. Написал в лоб код задачи 10, потом посмотрел на несколько следующих — аналогичные. Написал одну функцию склонения…
Эд сделал метод string Sklonenie() является локальным в Main(). Ведь он сам написал, что склонять годы, грибы, копейки-рубли каждый раз надоедает. Поэтому он и написал метод, который годится в разных случаях. Метод int Vvod_Chisla_Int(string info) он также использует многократно. То есть, их удобно использовать как статические методы класса Program, поэтому Sklonenie() я перенес (в его варианте) из Main() в класс Program. Оба варианта работоспособны, проверьте!
I6.9. Как заметил Павел, эта задача поглощает 7 и 8. Их отдельно выкладывать нет смысла. Выложу свой вариант 9-й. Основное отличие — по условию у нас стороны представлены вещественными числами, поэтому оперирую не int-переменными, а double. И тут появляется возможность определять «прямоугольность» треугольника с задаваемой точностью, а не только треугольников заданых Пифагоровыми числами. Может и не стоило огород городить, но все же:
Эд!
1)Если не возражаете, вместо A, B, C ввел массив abc[3] и использовал метод Array.Sort для его упорядочения по возрастанию (думаю, выглядит проще). Дальше — без изменений.
2) Насчет вещественных чисел — это правильная мысль.
3) Поскольку Math.Cos((90 — delta) * Math.PI / 180 мало при малых delta я бы все это выражение заменил на eps = 1e-10 или другое малое число.
В комментарии к тексту программы я бы указал, что используется школьная теорема о косинусе.
По п1. Сначала тоже думал про массив, но затем, так как, работаем по основам, решил отсортировать 3 числа вручную.
По п3. Если просто поставить малое число, то при вводе сторон, нужно будет печатать непонятно сколько знаков после запятой. А в таком варианте нагляднее. Например, вводим погрешность в 0,1 градуса, тогда при вводе таких значений сторон: 1;
1; 1,414 (корень из 2 до третьего знака ) треугольник будет признан прямоугольным. Если зададим погрешность 0,01 градуса, то уже нужно будет ввести 1,4142.
А вот где я пропустил, так это то, что делал лишние проверки на существование треугольника. Раз уж отсортировал стороны, то достаточно и одной… Спасибо, что подправили.
I6.1 — 3, 6.
Задачи I6.4 и I6.5 были в блоке L2. Их решение тут пропускаю.
Эд, верно.
Задача 9. Поглощает по сути 7ю и 8ю. Плюс я там пару ошибок допустил.
Павел! Зачет. Главное, что поняли, в чем громоздкость (в 7-й) и ошибка (в 8-й). А можно код сделать еще короче, например, если стороны сначала упорядочить по возрастанию?
Задача 8.
Треугольник со сторонами 3,4,5 — прямоугольный. Павел, ошибка в последнем операторе if.
Задача I6.7.
Павел! Более короткую проверку Вы использовали в задаче 8 и 9:
Причем укороченный && выполняется чаще быстрее, чем &.