Распределение кода по классам - C#
Формулировка задачи:
Всем привет. Недавно я закончил работу над написанием кода программы генерирования фраз(предложений), содержащих в себе теги: существительное, глагол, прилагательное, также для их составляющего были добавлены "функции" (число склонений, число для времен глаголов). И нужно распределить код по классам, где отдельно будут существительные, глаголы и прилагательные, учитывая число склонений и число для времен глаголов.
Сам код:
static int Main(string[] args)
{
int CountNouns = 3; //Число существительных
int CountAdject = 3; //Число прилагательных
int CountAct = 2; //Число глаголов
int CountSKL = 6; //Число склонений
int CountTime = 3; //Число времён для глагола (настоящее, будущее, прошлое)
// Именительный, Родительный, Дательный, Винительный, Творительный, Предложный, Род (ср,ж,м)
string[][] Nouns = new string[][]
{
new string[]{"дерево", "дерева", "дереву", "дерева", "деревом", "дереве", "0"},
new string[]{"бумага", "бумаги", "бумаге", "бумаги", "бумагой", "бумаге", "1"},
new string[]{"самолёт", "самолёта", "самолёту", "самолёта", "самолётом", "самолёте", "2"}
};
string[][][] Adject = new string[][][]
{
new string[][]
{
new string[]{"Красное", "У красного", "К красному", "У красного", "Красным", "На красном"}, //(0,0,0),(0,0,1),(0,0,6)
new string[]{"Красная", "У красной", "К красной", "У красной", "Красной", "На красной"}, //(0,1,0),(0,1,1),(0,1,6)
new string[]{"Красный", "У красного", "К красному", "У красного", "Красным", "На красном"}
},
new string[][]
{
new string[]{"Зелёное", "У зелёного", "К зелёному", "У зелёного", "Зелёным", "На зелёном"}, //(1,0,0),(1,0,1),(1,0,6)
new string[]{"Зелёная", "У зелёной", "К зелёной", "У зелёной", "Зелёной", "На зелёной"}, //(1,1,0),(1,1,1),(1,1,6)
new string[]{"Зелёный", "У зелёного", "К зелёному", "У зелёного", "Зелёным", "На зелёном"}
},
new string[][]
{
new string[]{"Красивое", "У красивого", "К красивому", "У красивого", "Красивым", "На красивом"}, //(1,0,0),(1,0,1),(1,0,6)
new string[]{"Красивая", "У красивой", "К красивой", "У красивой", "Красивой", "На красивой"}, //(1,1,0),(1,1,1),(1,1,6)
new string[]{"Красивый", "У красивого", "К красивому", "У красивого", "Красивым", "На красивом"}
}
};
// Настоящее, Прошлое, Будущее
string[][][] Action = new string[][][]
{
new string[][]
{
new string[]{"стоит", "стояло", "встанет"}, //Средний род
new string[]{"стоит", "стоялa", "встанет"}, //Женский род
new string[]{"стоит", "стоял", "встанет"}, //Мужской род
},
new string[][]
{
new string[]{"летит", "летело", "полетит"}, //Средний род
new string[]{"летит", "летела", "полетит"}, //Женский род
new string[]{"летит", "летел", "полетит"}, //Мужской род
}
};
// ====================================================
Random rand = new Random();
for (int jj = 0; jj < 100; jj++)
{
//1. Выбор существительного
int Noun_word = rand.Next(CountNouns);
int Noun_case = rand.Next(CountSKL);
//2. Ассоциируем с прилагательным
int Adj_word = rand.Next(CountAdject);
int Adj_case = Noun_case;
int Act_word = rand.Next(CountAct);
int Act_Case = rand.Next(CountTime);
//Если средний род
if (Nouns[Noun_word][CountSKL] == "0")
Console.Write("{0} {1} {2}", Adject[Adj_word][0][Adj_case], Nouns[Noun_word][Noun_case], Action[Act_word][0][Act_Case]);
//Если женский род
else if (Nouns[Noun_word][CountSKL] == "1")
Console.Write("{0} {1} {2}", Adject[Adj_word][1][Adj_case], Nouns[Noun_word][Noun_case], Action[Act_word][1][Act_Case]);
//Если мужской род
else if (Nouns[Noun_word][CountSKL] == "2")
Console.Write("{0} {1} {2}", Adject[Adj_word][2][Adj_case], Nouns[Noun_word][Noun_case], Action[Act_word][2][Act_Case]);
Console.ReadKey();
}
return 0;
}Буду очень благодарен за Вашу помощь!
Hares - большое спасибо!!!
Решение задачи: «Распределение кода по классам»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Phrase_generator_new
{
class Program
{
static int Main(string[] args)
{
int CountNouns = 3; //Число существительных
int CountAdject = 3; //Число прилагательных
int CountAct = 2; //Число глаголов
int CountSKL = 6; //Число склонений
int CountTime = 3; //Число времён для глагола (настоящее, будущее, прошлое)
// Именительный, Родительный, Дательный, Винительный, Творительный, Предложный, Род (ср,ж,м)
string[][] Nouns = new string[][]
{
new string[]{"дерево", "дерева", "дереву", "дерева", "деревом", "дереве", "0"},
new string[]{"бумага", "бумаги", "бумаге", "бумаги", "бумагой", "бумаге", "1"},
new string[]{"самолёт", "самолёта", "самолёту", "самолёта", "самолётом", "самолёте", "2"}
};
string[][][] Adject = new string[][][]
{
new string[][]
{
new string[]{"Красное", "У красного", "К красному", "У красного", "Красным", "На красном"}, //(0,0,0),(0,0,1),(0,0,6)
new string[]{"Красная", "У красной", "К красной", "У красной", "Красной", "На красной"}, //(0,1,0),(0,1,1),(0,1,6)
new string[]{"Красный", "У красного", "К красному", "У красного", "Красным", "На красном"}
},
new string[][]
{
new string[]{"Зелёное", "У зелёного", "К зелёному", "У зелёного", "Зелёным", "На зелёном"}, //(1,0,0),(1,0,1),(1,0,6)
new string[]{"Зелёная", "У зелёной", "К зелёной", "У зелёной", "Зелёной", "На зелёной"}, //(1,1,0),(1,1,1),(1,1,6)
new string[]{"Зелёный", "У зелёного", "К зелёному", "У зелёного", "Зелёным", "На зелёном"}
},
new string[][]
{
new string[]{"Красивое", "У красивого", "К красивому", "У красивого", "Красивым", "На красивом"}, //(1,0,0),(1,0,1),(1,0,6)
new string[]{"Красивая", "У красивой", "К красивой", "У красивой", "Красивой", "На красивой"}, //(1,1,0),(1,1,1),(1,1,6)
new string[]{"Красивый", "У красивого", "К красивому", "У красивого", "Красивым", "На красивом"}
}
};
// Настоящее, Прошлое, Будущее
string[][][] Action = new string[][][]
{
new string[][]
{
new string[]{"стоит", "стояло", "встанет"}, //Средний род
new string[]{"стоит", "стоялa", "встанет"}, //Женский род
new string[]{"стоит", "стоял", "встанет"}, //Мужской род
},
new string[][]
{
new string[]{"летит", "летело", "полетит"}, //Средний род
new string[]{"летит", "летела", "полетит"}, //Женский род
new string[]{"летит", "летел", "полетит"}, //Мужской род
}
};
// ====================================================
Random rand = new Random();
for (int jj = 0; jj < 100; jj++)
{
//1. Выбор существительного
int Noun_word = rand.Next(CountNouns);
int Noun_case = rand.Next(CountSKL);
//2. Ассоциируем с прилагательным
int Adj_word = rand.Next(CountAdject);
int Adj_case = Noun_case;
int Act_word = rand.Next(CountAct);
int Act_Case = rand.Next(CountTime);
//Если средний род
if (Nouns[Noun_word][CountSKL] == "0")
Console.Write("{0} {1} {2}", Adject[Adj_word][0][Adj_case], Nouns[Noun_word][Noun_case], Action[Act_word][0][Act_Case]);
//Если женский род
else if (Nouns[Noun_word][CountSKL] == "1")
Console.Write("{0} {1} {2}", Adject[Adj_word][1][Adj_case], Nouns[Noun_word][Noun_case], Action[Act_word][1][Act_Case]);
//Если мужской род
else if (Nouns[Noun_word][CountSKL] == "2")
Console.Write("{0} {1} {2}", Adject[Adj_word][2][Adj_case], Nouns[Noun_word][Noun_case], Action[Act_word][2][Act_Case]);
//Console.WriteLine();
Console.ReadKey();
}
return 0;
}
}
}