C#
Помогите написать программу на C# По задачнику PascalABC Case20
Вывести знак Зодиака, соответствующий этой дате: "Водолей" (20.1-18.2), "Рыбы" (19.2-20.3), "Овен" (21.3-19.4), "Телец" (20.4-20.5), "Близнецы" (21.5-21.6), "Рак" (22.6-22.7), "Лев" (23.7-22.8), "Дева" (23.8-22.9), "Весы" (23.9-22.10), "Скорпион" (23.10-22.11), "Стрелец", (23.11-21.12), "Козерог" (22.12-19.1)
using System;
using System.Globalization;
namespace Answer {
class Program {
static void Main() {
var zodiac = new Zodiac();
while (true) Console.WriteLine(zodiac.Find(SetDate()));
}
public struct Sign {
public string name;
public DateTime begin;
public DateTime last;
public Sign(string name, DateTime begin, DateTime last) {
this.name = name;
this.begin = begin;
this.last = last;
}
public bool Contains(DateTime dt) {
return dt >= begin && dt <= last;
}
}
static public DateTime SetDate() {
var date = new DateTime();
bool flag;
do {
flag = false;
var day = InputInt32("Число: ");
var month = InputInt32("Месяц: ");
try {
date = new DateTime(2020, month, day);
} catch (ArgumentOutOfRangeException e) {
Console.WriteLine(e.Message);
flag = !flag;
}
} while (flag);
return date;
}
public struct Zodiac {
public string Find(DateTime dt) {
var signs = new Sign[] {
new Sign( "Водолей", new DateTime(2020, 1, 20), new DateTime(2020, 2, 18)),
new Sign( "Рыбы", new DateTime(2020, 2, 19), new DateTime(2020, 3, 20)),
new Sign( "Овен", new DateTime(2020, 3, 21), new DateTime(2020, 4, 19)),
new Sign( "Телец", new DateTime(2020, 4, 20), new DateTime(2020, 5, 20)),
new Sign( "Близнецы", new DateTime(2020, 5, 21), new DateTime(2020, 6, 21)),
new Sign( "Рак", new DateTime(2020, 6, 22), new DateTime(2020, 7, 22)),
new Sign( "Лев", new DateTime(2020, 7, 23), new DateTime(2020, 8, 22)),
new Sign( "Дева", new DateTime(2020, 8, 23), new DateTime(2020, 9, 22)),
new Sign( "Весы", new DateTime(2020, 9, 23), new DateTime(2020, 10, 22)),
new Sign( "Скорпион", new DateTime(2020, 10, 23), new DateTime(2020, 11, 22)),
new Sign( "Стрелец", new DateTime(2020, 11, 23), new DateTime(2020, 12, 21)),
new Sign( "Козерог", new DateTime(2020, 12, 22), new DateTime(2020, 12, 31)),
new Sign( "Козерог", new DateTime(2020, 1, 1), new DateTime(2020, 1, 19))
};
foreach (var sign in signs) if (sign.Contains(dt)) return sign.name;
return "Неизвестная ошибка!";
}
}
static private int InputInt32(string message) {
int value;
do {
Console.Write(message);
} while (!int.TryParse(Console.ReadLine(), NumberStyles.Integer, new CultureInfo("ru-RU"), out value));
return value;
}
}
}
using System.Globalization;
namespace Answer {
class Program {
static void Main() {
var zodiac = new Zodiac();
while (true) Console.WriteLine(zodiac.Find(SetDate()));
}
public struct Sign {
public string name;
public DateTime begin;
public DateTime last;
public Sign(string name, DateTime begin, DateTime last) {
this.name = name;
this.begin = begin;
this.last = last;
}
public bool Contains(DateTime dt) {
return dt >= begin && dt <= last;
}
}
static public DateTime SetDate() {
var date = new DateTime();
bool flag;
do {
flag = false;
var day = InputInt32("Число: ");
var month = InputInt32("Месяц: ");
try {
date = new DateTime(2020, month, day);
} catch (ArgumentOutOfRangeException e) {
Console.WriteLine(e.Message);
flag = !flag;
}
} while (flag);
return date;
}
public struct Zodiac {
public string Find(DateTime dt) {
var signs = new Sign[] {
new Sign( "Водолей", new DateTime(2020, 1, 20), new DateTime(2020, 2, 18)),
new Sign( "Рыбы", new DateTime(2020, 2, 19), new DateTime(2020, 3, 20)),
new Sign( "Овен", new DateTime(2020, 3, 21), new DateTime(2020, 4, 19)),
new Sign( "Телец", new DateTime(2020, 4, 20), new DateTime(2020, 5, 20)),
new Sign( "Близнецы", new DateTime(2020, 5, 21), new DateTime(2020, 6, 21)),
new Sign( "Рак", new DateTime(2020, 6, 22), new DateTime(2020, 7, 22)),
new Sign( "Лев", new DateTime(2020, 7, 23), new DateTime(2020, 8, 22)),
new Sign( "Дева", new DateTime(2020, 8, 23), new DateTime(2020, 9, 22)),
new Sign( "Весы", new DateTime(2020, 9, 23), new DateTime(2020, 10, 22)),
new Sign( "Скорпион", new DateTime(2020, 10, 23), new DateTime(2020, 11, 22)),
new Sign( "Стрелец", new DateTime(2020, 11, 23), new DateTime(2020, 12, 21)),
new Sign( "Козерог", new DateTime(2020, 12, 22), new DateTime(2020, 12, 31)),
new Sign( "Козерог", new DateTime(2020, 1, 1), new DateTime(2020, 1, 19))
};
foreach (var sign in signs) if (sign.Contains(dt)) return sign.name;
return "Неизвестная ошибка!";
}
}
static private int InputInt32(string message) {
int value;
do {
Console.Write(message);
} while (!int.TryParse(Console.ReadLine(), NumberStyles.Integer, new CultureInfo("ru-RU"), out value));
return value;
}
}
}
sing System;
using System.Linq;
class Program
{
static void Main()
{
var zodiacs = new object[][] {
new object[] { "Водолей", 120},
new object[] { "Рыбы", 219 },
new object[] { "Овен", 321 },
new object[] { "Телец", 420 },
new object[] { "Близнецы", 521 },
new object[] { "Рак", 622 },
new object[] { "Лев", 723 },
new object[] { "Дева", 823 },
new object[] { "Весы", 923 },
new object[] { "Скорпион", 1023 },
new object[] { "Стрелец", 1123 },
new object[] { "Козерог", 1222 },
};
Console.Write("Введите месяц: ");
var code = int.Parse(Console.ReadLine());
Console.Write("Введите день: ");
code = code * 100 + int.Parse(Console.ReadLine());
Console.WriteLine("Выбраный знак: " + (zodiacs.LastOrDefault(x => (int)x[1] <= code)?[0] ?? zodiacs.Last()[0]));
Console.ReadKey(true);
}
}
using System.Linq;
class Program
{
static void Main()
{
var zodiacs = new object[][] {
new object[] { "Водолей", 120},
new object[] { "Рыбы", 219 },
new object[] { "Овен", 321 },
new object[] { "Телец", 420 },
new object[] { "Близнецы", 521 },
new object[] { "Рак", 622 },
new object[] { "Лев", 723 },
new object[] { "Дева", 823 },
new object[] { "Весы", 923 },
new object[] { "Скорпион", 1023 },
new object[] { "Стрелец", 1123 },
new object[] { "Козерог", 1222 },
};
Console.Write("Введите месяц: ");
var code = int.Parse(Console.ReadLine());
Console.Write("Введите день: ");
code = code * 100 + int.Parse(Console.ReadLine());
Console.WriteLine("Выбраный знак: " + (zodiacs.LastOrDefault(x => (int)x[1] <= code)?[0] ?? zodiacs.Last()[0]));
Console.ReadKey(true);
}
}
Похожие вопросы
- Помогите написать программу C#
- Помогите написать программу с массивом на C#
- Написать программу на C# вычисления стоимости покупки с учетом скидки.
- Помогите написать задачу на C#
- C#. Написать программу для нахождения периметра и площади треугольника. СТороны вводить с клавиатуры
- Счетчик нажатия кнопки Enter. Написал программу, но не работает. Winforms C#
- Помогите исправить сложную программу на C#
- Как сделать программу на C#?
- C# помогите написать простую прогу
- Помогите разобраться с заданием! C#