Sanxion87 Ответов: 2

Как разобрать текстовый файл, чтобы сгруппировать все различные спряжения?


Всем привет

У меня есть текстовый файл, содержащий:

FIRST_WORD
Мальчик
Человек
Девочка

ВТОРОЕ СЛОВО
читающий
пишущий

ТРЕТЬЕ СЛОВО
книга
роман

Мне требуется следующий вывод - (каждое спряжение 3 групп слов):

Мальчик читает книгу
Мальчик читает роман
Мальчик пишет книгу
Мальчик пишет роман
Мужчина читает книгу

Любая помощь будет очень признательна.

Спасибо

Что я уже пробовал:

Я понимаю, что для разбора каждого урока требуется цикл, но я не знаю, как сгруппировать слова, чтобы сформировать полные предложения.

2 Ответов

Рейтинг:
0

OriginalGriff

Первое, что вам нужно сделать, это прочитать файл, а затем найти группы.
Читать его легко:

string[] lines = File.ReadAllLines(pathToFile);
Это даст вам массив строк, каждая из которых содержит строку из файла.
Найти группы сложнее, но способ, которым я бы это сделал-предполагая, что "заголовки групп" фиксированы, - состоял бы в том, чтобы создать массив строк, содержащих заголовки:
string[] groupHeadings = new string[] { "FIRST_WORD", "SECOND_WORD", "THIRD_WORD" };
И вам нужно будет где-то держать группы:
List<string>[] groups = new List<string>[groupHeadings.Length];
for (int i = 0; i < groupHeadings.Length; i++)
    {
    groups[i] = new List<string>();
    }
Это создает массив списков: по одному списку для каждой группы, которую вы ожидаете от файла.
Теперь вы можете посмотреть на каждую строку в файле, который Вы читаете, и разделить его на группы.
int currentGroup = -1;
foreach (string line in lines)
    {
    if (!string.IsNullOrWhiteSpace(line))
        {
        if (groupHeadings.Contains(line))
            {
            currentGroup = Array.IndexOf(groupHeadings, line);
            }
        else
            {
            if (currentGroup >= 0 && currentGroup < groups.Length)
                {
                groups[currentGroup].Add(line);
                }
            else
                {
                string err = string.Format("Data cannot be added to a group: Group number {0}, line = \"{1}\"", currentGroup, line);
                throw new ApplicationException(err);
                }
            }
        }
    }
После этого комбинации остаются за вами!


Sanxion87

Большое вам спасибо...Я обязательно попробую!

OriginalGriff

Пожалуйста!

Рейтинг:
0

Patrice T

Цитата:
но я не знаю, как сгруппировать слова вместе, чтобы сформировать полные предложения.
Для вывода вам нужно найти вложенные циклы.
Посмотрите на свой результат, каждое предложение сложите вместе по 1 части каждой категории и перечислите каждую возможность. Приговоры составляются в таком порядке 111, 112, 121, 122, 211, 212, 221 ...


Мы не делаем вашу домашнюю работу, поэтому никакого кода нет.
Домашнее задание предназначено не для того, чтобы проверить ваши навыки просить других людей сделать вашу работу, оно предназначено для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание курсов, которые вы прошли, а также проблем, с которыми вы сталкиваетесь при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по их исправлению.
Итак, попробуйте, перечитайте свои уроки и приступайте к работе. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.

Как программист, ваша задача-создавать алгоритмы это решает конкретные проблемы, и вы не можете полагаться на кого-то другого, чтобы вечно делать это за вас, поэтому есть время, когда вам придется научиться этому. И чем скорее, тем лучше.
Когда вы просто просите решение, это все равно что пытаться научиться водить машину, обучая кого-то другого.
Создание алгоритма-это в основном поиск математики и необходимая адаптация к вашей реальной задаче.