
Другие языки программирования и технологии
Программа на c#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp13
{
class Range< T > where T : IComparable
{
public T From;
public T Till;
public Range(T _From, T _Till)
{
From = _From;
Till = _Till;
}
public bool Between(T _Value)
{
int iFrom = _Value.CompareTo(From);
int iTill = _Value.CompareTo(Till);
return (iFrom > 0 || iFrom == 0) && (iTill < 0 || iTill == 0);
}
}
class Filter< T, F > where T : IComparable
{
private F DefaultValue;
private List< KeyValuePair< Range< T >, F >> Ranges = new List< KeyValuePair< Range< T >, F>>();
public void SetDefault(F _DefaultValue)
{
DefaultValue = _DefaultValue;
}
public void AddRange(T _From, T _Till, F _Value)
{
Ranges.Add(new KeyValuePair< Range< T >, F >(new Range< T >(_From, _Till), _Value));
}
public F GetFilterValue(T _Value)
{
foreach (KeyValuePair< Range< T >, F> a in Ranges)
if (a.Key.Between(_Value))
return a.Value;
return DefaultValue;
}
}
class Program
{
static void Main(string[] args)
{
Filter< int, int > MarkRanges = new Filter< int, int >();
MarkRanges.SetDefault(0);
MarkRanges.AddRange(91, 100, 5);
MarkRanges.AddRange(81, 90, 4);
MarkRanges.AddRange(71, 80, 3);
MarkRanges.AddRange(61, 70, 2);
MarkRanges.AddRange(51, 60, 1);
Console.Write("n=");
int n = Convert.ToInt32(Console.ReadLine());
Random r = new Random(DateTime.Now.Millisecond);
int cnt = 0;
for (int i = 0; i < n; i++)
{
int Points = r.Next(30, 100);
int Mark = MarkRanges.GetFilterValue(Points);
Console.WriteLine("{0} points are marked {1}", Points, Mark);
if (Mark == 5 || Mark == 4)
cnt++;
}
Console.WriteLine("Total 4 and 5 marks: {0}", cnt);
Console.ReadKey();
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp13
{
class Range< T > where T : IComparable
{
public T From;
public T Till;
public Range(T _From, T _Till)
{
From = _From;
Till = _Till;
}
public bool Between(T _Value)
{
int iFrom = _Value.CompareTo(From);
int iTill = _Value.CompareTo(Till);
return (iFrom > 0 || iFrom == 0) && (iTill < 0 || iTill == 0);
}
}
class Filter< T, F > where T : IComparable
{
private F DefaultValue;
private List< KeyValuePair< Range< T >, F >> Ranges = new List< KeyValuePair< Range< T >, F>>();
public void SetDefault(F _DefaultValue)
{
DefaultValue = _DefaultValue;
}
public void AddRange(T _From, T _Till, F _Value)
{
Ranges.Add(new KeyValuePair< Range< T >, F >(new Range< T >(_From, _Till), _Value));
}
public F GetFilterValue(T _Value)
{
foreach (KeyValuePair< Range< T >, F> a in Ranges)
if (a.Key.Between(_Value))
return a.Value;
return DefaultValue;
}
}
class Program
{
static void Main(string[] args)
{
Filter< int, int > MarkRanges = new Filter< int, int >();
MarkRanges.SetDefault(0);
MarkRanges.AddRange(91, 100, 5);
MarkRanges.AddRange(81, 90, 4);
MarkRanges.AddRange(71, 80, 3);
MarkRanges.AddRange(61, 70, 2);
MarkRanges.AddRange(51, 60, 1);
Console.Write("n=");
int n = Convert.ToInt32(Console.ReadLine());
Random r = new Random(DateTime.Now.Millisecond);
int cnt = 0;
for (int i = 0; i < n; i++)
{
int Points = r.Next(30, 100);
int Mark = MarkRanges.GetFilterValue(Points);
Console.WriteLine("{0} points are marked {1}", Points, Mark);
if (Mark == 5 || Mark == 4)
cnt++;
}
Console.WriteLine("Total 4 and 5 marks: {0}", cnt);
Console.ReadKey();
}
}
}
Игорь Евгеньевич
Спасибо большое за старание, правда я ещё не проходил столько команд :(
Игорь Аулов
Код избыточный и нарушает принципы ООП. Стиль ужасный. Зачем?
Похожие вопросы
- Программа на C++ в Windows Form
- Не могу настроить codeBlock для написания программ на c++.
- Проверти правильность программы на C++
- Написал программу в c++. Отправил на другой компьютер. Выдало ошибку потому
- Помогите с программой Dev C++
- Помогите написать программу на C/C++
- как написать такую программу для c++?
- Я зная C++ (уровень - днище) написал полноценную программу на C# за 7 дней. А программисты C# могут так же на C++?
- Помогите написать программу по C++
- Программа на C++