Консультация № 160345
12.02.2009, 23:22
0.00 руб.
0 11 1
Здравствуйте уважаемые эксперты!
Помогите решить задачу:
(Используется C# Microsoft Visual Studio 2008 или Microsoft Visual Studio 2005)
Разработать консольное приложение для учета результатов сдачи нормативов по физподготовке и вывода справочной информации. Участники соревнования сдают подъем переворотом и гимнастические упражнения на брусьях и перекладине, а также прыжок через коня. За каждый вид гимнастического упражнения выставляется оценка и вычисляется итоговая средняя оценка по гимнастике. Оценка за подъем переворотом выставляется по следующим критериям (N – число переворотов):
• Отлично – N ≥ 20
• Хорошо – N ≥ 15
• Удовлетворительно – N ≥ 10
• Неудовлетворительно – N < 10
Создать список результатов, показанных не менее 5-ю участниками. Исходные данные можно задать в программе в виде констант. Вывести информацию об оценках, полученных всеми участниками соревнований. Определить, кто выполнил наибольшее число подъемов переворотом.
При разработке программы использовать наиболее эффективные средства ООП.

Приложение:
Мы начали изучать C# но я не умею программировать вообще! (( Хотелось бы научиться хотя бы стандартным навыкам. Подскажите что нужно купить или где скачать (почитать в интернете) про C# консольные приложения!??? Заранее спасибо...

Обсуждение

Неизвестный
12.02.2009, 23:36
общий
Ну а как оцениваются другие виды упражнений?
Неизвестный
13.02.2009, 00:34
общий
Другие гимнастические выставляются в программе вручную как я понял. Нужно создать базовый класс-соревнования, класс-гимнастика и класс -подъем переворотом. А четвертый класс - это класс program
Неизвестный
13.02.2009, 00:41
общий
А зачем столько классов? Расскажите, что по Вашему должен делать каждый из них?
Неизвестный
13.02.2009, 00:43
общий
Если бы я знал..... можно и через один наверное...
Неизвестный
13.02.2009, 00:44
общий
Это преподаватель сказал чтобы было 4 класса, но это не обязательно)))
Неизвестный
13.02.2009, 00:51
общий
Спасибо Вам огромное что помогаете
Неизвестный
13.02.2009, 06:40
общий
Это я к тому, что достаточно 2 класса. Program, и класс спортсмен для решения этой задачи. Если же так как Вы предлагаете, то я не вижу, что будут делать эти классы, кроме того, что будут тупо ссылаться друг на друга.
Неизвестный
13.02.2009, 12:25
общий
Получится решить?
Неизвестный
13.02.2009, 17:16
общий
Да
Неизвестный
13.02.2009, 22:47
общий
это ответ
Здравствуйте, Сипан!
Пример работы:
Код:

Введите количество спортсменов:5
-----------------------------------------------------------------------
Введите имя спортсмена:Вася
Введите количество сделанных подъемов переворотом:40
Оценка за упражнения на брусьях:1
Введено неверное значение для оценки
Допускаются следующие значения:
Неудовлетворительно или 2
Удовлетворительно или 3
Хорошо или 4
Отлично или 5
Оценка за упражнения на брусьях:хорОШО
Оценка за упражнения на перекладине:3
Оценка за прыжок через коня:4
-----------------------------------------------------------------------
Введите имя спортсмена:Петя
Введите количество сделанных подъемов переворотом:20
Оценка за упражнения на брусьях:5
Оценка за упражнения на перекладине:4
Оценка за прыжок через коня:3
-----------------------------------------------------------------------
Введите имя спортсмена:Коля
Введите количество сделанных подъемов переворотом:10
Оценка за упражнения на брусьях:4
Оценка за упражнения на перекладине:4
Оценка за прыжок через коня:4
-----------------------------------------------------------------------
Введите имя спортсмена:Гриша
Введите количество сделанных подъемов переворотом:5
Оценка за упражнения на брусьях:3
Оценка за упражнения на перекладине:2
Оценка за прыжок через коня:3
-----------------------------------------------------------------------
Введите имя спортсмена:Сеня
Введите количество сделанных подъемов переворотом:40
Оценка за упражнения на брусьях:5
Оценка за упражнения на перекладине:5
Оценка за прыжок через коня:5
-----------------------------------------------------------------------
Имеются следующие спортсмены:
-----------------------------------------------------------------------
1.
Имя:Вася
Подъем переворотом:Отлично(40)
Упражнения на брусьях:Хорошо
Упражнения на перекладине:Удовлетворительно
Прыжок через коня:Хорошо
-----------------------------------------------------------------------
2.
Имя:Петя
Подъем переворотом:Отлично(20)
Упражнения на брусьях:Отлично
Упражнения на перекладине:Хорошо
Прыжок через коня:Удовлетворительно
-----------------------------------------------------------------------
3.
Имя:Коля
Подъем переворотом:Удовлетворительно(10)
Упражнения на брусьях:Хорошо
Упражнения на перекладине:Хорошо
Прыжок через коня:Хорошо
-----------------------------------------------------------------------
4.
Имя:Гриша
Подъем переворотом:Неудовлетворительно(5)
Упражнения на брусьях:Удовлетворительно
Упражнения на перекладине:Неудовлетворительно
Прыжок через коня:Удовлетворительно
-----------------------------------------------------------------------
5.
Имя:Сеня
Подъем переворотом:Отлично(40)
Упражнения на брусьях:Отлично
Упражнения на перекладине:Отлично
Прыжок через коня:Отлично
-----------------------------------------------------------------------
Максимальное количество подъемов переворотом(40) сделали следующие спортсмены:
-----------------------------------------------------------------------
1. Вася
2. Сеня
-----------------------------------------------------------------------


Приложение:
using System;

namespace _160345
{
/// <summary>
/// Главный класс программы
/// </summary>
class Program
{
static void Main(string[] args)
{
uint AthletesNum;
// Вводим количество спортсменов
while (true)
{
try
{
Console.Write("Введите количество спортсменов:");
AthletesNum = Convert.ToUInt32(Console.ReadLine());
break;
}
catch (FormatException)
{
PrintError("Должно быть введено целое число");
}
}
Line();
// Создаем массив
Athlete[] Athletes = new Athlete[AthletesNum];
// Вводим данные о спортсменах
for (uint i = 0; i < AthletesNum; i++)
{
Athletes[i] = GetAthlete();
Line();
}
Console.WriteLine("Имеются следующие спортсмены:");
Line();
// Выводим данные о спортсменах и сразу ищем максимальное количество подъемов переворотом
uint MaxRoll = 0;
for (uint i = 0; i < AthletesNum; i++)
{
Console.WriteLine("{0}.\n{1}", i + 1, Athletes[i]);
Line();
if (MaxRoll < Athletes[i].RollCounts) MaxRoll = Athletes[i].RollCounts;
}
Console.WriteLine("Максимальное количество подъемов переворотом({0}) сделали следующие спортсмены:", MaxRoll);
Line();
// Выводим имена чемпионов по подъемам переворотом
for (uint i = 0, count = 0; i < AthletesNum; i++)
{
if (MaxRoll == Athletes[i].RollCounts) Console.WriteLine("{0}. {1}", ++count, Athletes[i].Name);
}
Line();
Console.WriteLine("Нажмите любую клавишу для выхода");
Console.ReadKey();
}
/// <summary>
/// Функция печатает строку. Для ленивых:)
/// </summary>
static void Line()
{
ConsoleColor color = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("-----------------------------------------------------------------------");
Console.ForegroundColor = color;
}
static void PrintError(string Msg)
{
ConsoleColor color = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(Msg);
Console.ForegroundColor = color;
}
/// <summary>
/// Вводит данные о спортсмене
/// </summary>
/// <returns>Athlete-Класс с данными о спортсмене</returns>
static Athlete GetAthlete()
{
// Вводим имя
string name;
while (true)
{
Console.Write("Введите имя спортсмена:");
name = Console.ReadLine();
name.Trim();
if (name.Length == 0) Console.WriteLine("Вы не ввели имя");
else break;
}
// Количество подъемов переворотом
uint roll;
while (true)
{
Console.Write("Введите количество сделанных подъемов переворотом:");
try
{
roll = Convert.ToUInt32(Console.ReadLine());
break;
}
catch (FormatException)
{
PrintError("Неверное значение(ожидается целое число)");
}
}
return new Athlete(name, roll, GetRate("Оценка за упражнения на брусьях"),
GetRate("Оценка за упражнения на перекладине"),
GetRate("Оценка за прыжок через коня"));
}
/// <summary>
/// Ввод оценки за упражнения
/// </summary>
/// <param name="Msg">сообщение выводимое на экран</param>
/// <returns>Оценка</returns>
static Rate GetRate(string Msg)
{
while (true)
{
Console.Write(Msg + ":");
string rateStr = Console.ReadLine();
foreach (string str in Enum.GetNames(typeof(Rate)))
if (rateStr.ToLower() == str.ToLower())
return (Rate)Enum.Parse(typeof(Rate), rateStr, true);
try
{
Rate rate = (Rate)Convert.ToUInt32(rateStr);
foreach (Rate r in Enum.GetValues(typeof(Rate)))
if (r == rate) return rate;
}
catch (FormatException)
{
}
PrintError("Введено неверное значение для оценки");
PrintError("Допускаются следующие значения:");
foreach (Rate r in Enum.GetValues(typeof(Rate)))
PrintError(String.Format("{0} или {1}", r, (int)r));
}
}
/// <summary>
/// Оценка за упражнение
/// </summary>
enum Rate
{
Неудовлетворительно = 2,
Удовлетворительно = 3,
Хорошо = 4,
Отлично = 5
}
/// <summary>
/// Класс-спортсмен
/// </summary>
class Athlete
{
/// <summary>
/// Конструктор
/// </summary>
/// <param name="Name">Имя спортсмена</param>
/// <param name="Rolls">Количество подъемов переворотом</param>
/// <param name="Bars">Оценка за упражнения на брусьях</param>
/// <param name="Bar">Оценка за упражнения на перекладине</param>
/// <param name="Horse">Оценка за прыжок через коня</param>
public Athlete(string Name, uint Rolls, Rate Bars, Rate Bar, Rate Horse)
{
Name.Trim();
name = Name;
rolls = new RollCount(Rolls);
bars = Bars;
bar = Bar;
horse = Horse;
}
override public string ToString()
{
return "Имя:" + name + "\nПодъем переворотом:" + rolls + "\nУпражнения на брусьях:" + bars +
"\nУпражнения на перекладине:" + bar + "\nПрыжок через коня:" + horse;
}
public string Name
{
get
{
return name;
}
}
public uint RollCounts
{
get
{
return rolls.Count;
}
}
private string name;
RollCount rolls;
private Rate bars;
private Rate bar;
private Rate horse;
}
/// <summary>
/// Класс типа значение для хранения количества подъемов переворотом
/// </summary>
struct RollCount
{
public RollCount(uint Count)
{
this.count = Count;
}
public uint Count
{
get
{
return count;
}
}
public override string ToString()
{
Rate rate;
if (count >= 20) rate = Rate.Отлично;
else if (count >= 15) rate = Rate.Хорошо;
else if (count >= 10) rate = Rate.Удовлетворительно;
else rate = Rate.Неудовлетворительно;
return rate.ToString() + "(" + count.ToString() + ")";
}
private uint count;
}
}
}
Неизвестный
13.02.2009, 22:49
общий
Покажите программу преподавателю и если его что-либо не устроит пишите подправлю.
Форма ответа