- Автор темы
- #1
Практический пример. Перевод секунд в дни, часы, минуты и секунды.
Надеемся, что название примера говорит само за себя. Поэтому запускайте и разбирайтесь.
Практический пример. Нахождение самой длинной неубывающей цепочки случайных чисел.
Надеемся, что название примера говорит само за себя. Поэтому запускайте и разбирайтесь.
Практический пример. Перевод из десятичной дроби в простую.
****** разделитель целой и дробной части числа зависит от локальных настроек операционной системы, поэтому, скорее всего, вам придется вводить дробное число через запятую (например, 1,56). ******
Домашнее задание
Надеемся, что название примера говорит само за себя. Поэтому запускайте и разбирайтесь.
Код:
using System;
namespace CSharpApplication.ConvertSecondsExample
{
class ConvertSeconds
{
static void Main()
{
// Количество секунд в часе
const ulong SecondsInDay = 60 * 60 * 24;
ulong Seconds = 0;
// Ожидаем корректного ввода
while(Seconds == 0)
{
// Введите время в секундах в заданном диапазоне:
Console.Write("Введите время в секундах ");
Console.WriteLine("(от {0} до {1}):",
ulong.MinValue + 1, ulong.MaxValue);
try
{
// Считываем введенное время и преобразуем его в ulong
Seconds = Convert.ToUInt64(Console.ReadLine());
}
catch(Exception ex)
{
// Ошибка ввода
Console.WriteLine(ex.Message + " Попробуйте снова!!!\n");
}
}
// Вычисляем и выводим количество дней
Console.WriteLine("Дней = {0}", Seconds / SecondsInDay);
// Отбрасываем дни
Seconds %= SecondsInDay;
// Вычисляем и выводим количество часов
Console.WriteLine("Часов = {0}", Seconds / 3600);
// Отбрасываем часы
Seconds %= 3600;
// Вычисляем и выводим количество минут
Console.WriteLine("Минут = {0}", Seconds / 60);
// Вычисляем и выводим количество секунд
Console.WriteLine("Секунд = {0}", Seconds % 60);
// Ожидаем нажатия клавиши Enter
Console.Write("\nНажмите Enter...");
Console.Read();
}
}
}
Практический пример. Нахождение самой длинной неубывающей цепочки случайных чисел.
Надеемся, что название примера говорит само за себя. Поэтому запускайте и разбирайтесь.
Код:
using System;
class Sequence{
public static void Main(){
int i=0,cur,max=1,curmax=1;
int border;
int prev;
Console.WriteLine("Введите количество членов цепочки:");
// Весь блок алгоритма заключаем в try/catch для перехвата исключений
try{
// Ввод количества элементов и перевод их в int
border = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Ваш выбор {0} элементов последовательности",border);
// Создаём объект класса Random для генерации случайного числа
// Начальная точка основывается на системном времени
Random rand = new Random();
Console.WriteLine("Вот элементы последовательности:");
// Генерируется случайное число от 0 до 100
prev = rand.Next(0,100);
Console.WriteLine("{0}",prev);
do{
// Генерируется случайное число от 0 до 100
cur = rand.Next(0,100);
if (cur>=prev)
curmax++;
else{
if (curmax>max)
max = curmax;
curmax = 1;
}
prev = cur;
Console.WriteLine("{0}",cur);
i++;
}while(i<border-1);
if (curmax>max)
max = curmax;
// Показ полученного результата
Console.WriteLine("\n\nМаксимальная Длина = {0}\n\n",max);
}
// Обработка исключительной ситуации
catch(Exception ex){
Console.WriteLine(ex.Message+" Не повезло !!!\n");
}
// Задержка перед выходом
Console.Read();
}
}
Практический пример. Перевод из десятичной дроби в простую.
****** разделитель целой и дробной части числа зависит от локальных настроек операционной системы, поэтому, скорее всего, вам придется вводить дробное число через запятую (например, 1,56). ******
Код:
using System;
namespace CSharpApplication.ConvertDecimalFractionToSimpleFraction
{
class Fraction
{
static void Main()
{
// Ввод дроби
Console.Write("Введите число: ");
try
{
// Попытка преобразования введенной строки в decimal
DecimalToSimpleFraction(Convert.ToDecimal(Console.ReadLine()));
}
catch(FormatException error)
{
// Вывод сообщения об ошибки
Console.WriteLine(error.Message);
}
Console.WriteLine("Нажмите Enter...");
Console.Read();
}
// Функция перевода
static void DecimalToSimpleFraction(decimal Number)
{
// Сохранение знака числа
int Sign = 1;
if(Number < 0)
{
Sign = -1;
Number = -Number;
}
// Получение целой части числа
int WholePart = (int)Number;
// Получение дробной части числа
decimal DoublePart = Number - WholePart;
// Количество разрядов
int Count = 0;
// Пока дробное число не совпадет со своим целым эквивалентом
while (DoublePart - (ulong)DoublePart != 0)
{
// Считаем разряды
DoublePart *= 10;
++Count;
}
// Если дробная часть присутствовала
if(Count > 0)
{
// Вычисление знаменателя
decimal Denominator = Convert.ToDecimal(Math.Pow(10, Count));
// Вычисление наибольшего общего делителя
decimal N = NOD(DoublePart, Denominator);
// Сокращаем дробь
DoublePart /= N;
Denominator /= N;
// Вывод результата
if(WholePart != 0)
Console.WriteLine("{0} {1} / {2}",
WholePart * Sign, DoublePart, Denominator);
else
Console.WriteLine("{0} / {1}",
DoublePart * Sign, Denominator);
}
// Если дробная часть отсутствовала
else
Console.WriteLine("{0}", WholePart * Sign);
}
// Функция, вычисляющая наибольший общий делитель
static decimal NOD(decimal a, decimal b)
{
if(b == 0)
return a;
else
return NOD(b, a % b);
}
}
}
Домашнее задание
- Ввести с клавиатуры число в диапазоне от 100 до 100000000 (введенное число проверяется). Подсчитать количество четных и нечетных цифр в этом числе в процентном отношении.
- Ввести с клавиатуры номер трамвайного билета (6-значное число) и проверить является ли данный билет счастливым.
- Ввести с клавиатуры дату своего рождения и текущую дату. Необходимо вычислить разницу в днях между этими датами.
- Вывести на консоль изображение государственного флага Швейцарии (например, в виде звездочек). Размер стороны флага задается случайным числом в диапазоне от 21 до 41.