Реализация меню в консоли - C#
Формулировка задачи:
Помогите пожалуйста разобраться с программой. У меня не получается реализация пунктов меню.
Вот код функции main:
Полный текст задания
public static void main(string[] args)
{
int p;
Console.Title = "Array";
do
{
Console.WriteLine("Menu:");
Console.WriteLine();
Console.WriteLine("1. One-dimensional array");
Console.WriteLine("2. Two-dimensional array");
Console.WriteLine("3. Jagged array");
Console.WriteLine("0. Quit");
Console.WriteLine();
p = int.Parse(Console.ReadLine());
switch (p)
{
case 1:
string s=" ";
int[] massiv=null;
do
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Enter the elements of the array is separated by a space");
Console.ResetColor();
string str=Console.ReadLine();
if (str.[B]trim[/B]()!='e') //"string" не содержит определения для trim и не был найден
//метод расширения trim...
s+=str+'!';
}while(str.trim()!='e'); //элемент "str" не существует в данном контексте
break;
Array(k);//элемент "k" не существует в данном контексте
case 2:
string st=" ";
int[,] Massiv=null;
do
{
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.WriteLine("Enter the elements of the row is separated by a space");
Console.ResetColor();
string str=Console.ReadLine();
if (str.trim()!='e')
st+=str+'!';
}while(str.trim()!='e');
break;
Array(k,l);
case 3:
string Das_Line=" ";
int[][] Das_Massiv=null;
do
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("Enter the elements of the row is separated by a space");
Console.WriteLine();
Console.WriteLine("Warning: no need to enter the same number of elements of jagged array for all rows");
Console.ResetColor();
string str=Console.ReadLine();
if (str.trim()!='e')
Das_Line+=str+'!';
}while(str.trim()!='e');
break;
if (k == l) Console.WriteLine("Error");
Array(k,l);
case 0:
Console.WriteLine("You decide to exit from program. Goodbye");
break;
default:
Console.WriteLine("You pressed the wrong button. Re-enter");
break;
}
Console.Write("\n\n\t\t\tEnter any key");
Console.ReadLine();
Console.Clear();
}
while (i != 3);
}
Console.WriteLine("Choose menu");//"Console.WriteLine()"является "метод", но используется как "тип"
Console.ReadLine();//"Console.ReadLine()"является "метод", но используется как "тип"
Разработать консольное приложение. Написать класс, содержащий только три открытых полиморфных метода. Первый работает с одномерным массивом, второй – с двумерным, третий – с вложенным. С каждым из массивов осуществить действие по варианту (см. ниже таблица 1). В методе Main (в основной программе) осуществить заполнение переменных-массивов с клавиатуры, а затем передать их как параметр в метод. То, с каким массивом следует работать, указывает пользователь, и в зависимости от этого заполняется переменная нужного типа. Организовать это в виде псевдографического меню с возможностью возврата к нему после выполнения действий из выбранного пункта. Выбранный пункт должен менять цвет и обводиться рамочкой, которая по клавишам «вверх-вниз» должна циклически перемещаться по пунктам. Ограничение на ввод вложенного массива: он не должен быть прямоугольным, т.е. разное количество элементов в разных строках должно проверяться программно. Затем происходит вызов метода вашего объекта, который выводит на экран исходный массив и результат своей работы. У пользователя запрещается спрашивать, сколько элементов будет в массиве – программа должна определять окончание ввода самостоятельно (например, по введенному ключевому символу).
Решение задачи: «Реализация меню в консоли»
textual
Листинг программы
using System;
namespace ConsoleApplication1
{
class MyArrayClass
{
public void OneDArray(int[] arr)
{
Console.WriteLine("Press any key...");
Console.ReadKey(true);
}
public void TwoDArray(int[,] arr)
{
Console.WriteLine("Press any key...");
Console.ReadKey(true);
}
public void JaggedArray(int[][] arr)
{
Console.WriteLine("Press any key...");
Console.ReadKey(true);
}
}
class Menu
{
private string[] _items;
public int SelectedItem { get; private set; }
public ConsoleColor ForegroundColor = ConsoleColor.White;
public ConsoleColor BackgroundColor = ConsoleColor.Black;
public ConsoleColor SelectedForegroundColor = ConsoleColor.Black;
public ConsoleColor SelectedBackgroundColor = ConsoleColor.White;
public Menu(string[] items)
{
_items = items;
SelectedItem = 0;
ShowMenu();
}
public void SelectUp()
{
SelectedItem--;
if (SelectedItem < 0)
SelectedItem = _items.Length - 1;
ShowMenu();
}
public void SelecDown()
{
SelectedItem++;
if (SelectedItem >= _items.Length)
SelectedItem = 0;
ShowMenu();
}
public void HideMenu()
{
Console.Clear();
}
public void ShowMenu()
{
Console.Clear();
Console.BackgroundColor = this.BackgroundColor;
Console.ForegroundColor = this.ForegroundColor;
for (int i = 0; i < _items.Length; i++)
{
if (i == SelectedItem)
{
Console.BackgroundColor = this.SelectedBackgroundColor;
Console.ForegroundColor = this.SelectedForegroundColor;
Console.WriteLine(_items[i]);
Console.BackgroundColor = this.BackgroundColor;
Console.ForegroundColor = this.ForegroundColor;
}
else Console.WriteLine(_items[i]);
}
}
}
class Program
{
public static void Main(string[] args)
{
Console.Title = "Array";
Menu m = new Menu(new string[] { "One-dimensional array", "Two-dimensional array", "Jagged array", "Quit" });
MyArrayClass mac = new MyArrayClass();
ConsoleKeyInfo ki;
bool flag = true;
do
{
ki = Console.ReadKey();
switch (ki.Key)
{
case ConsoleKey.DownArrow:
m.SelecDown();
break;
case ConsoleKey.UpArrow:
m.SelectUp();
break;
case ConsoleKey.Enter:
m.HideMenu();
switch (m.SelectedItem)
{
case 0:
Console.WriteLine("Enter the elements of the array is separated by a space");
string[] nums = Console.ReadLine().Split(' ');
int[] array = new int[nums.Length];
for (int i = 0; i < nums.Length; i++)
{
int n = 0;
int.TryParse(nums[i], out n);
array[i] = n;
}
mac.OneDArray(array);
break;
case 1:
//заполнение двухмерного массива и вызов соответствующего метода
break;
case 2:
//заполнение ступенчатого массива и вызов соответствующего метода
break;
case 3:
m.HideMenu();
flag = false;
break;
default:
break;
}
m.ShowMenu();
break;
default:
break;
}
} while (flag);
Console.WriteLine("You decide to exit from program. Goodbye");
Console.ReadKey();
}
}
}