Danyal Awan Ответов: 3

C программа для эквивалентности порядков


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

Две последовательности a и b эквивалентны порядку, если они имеют одинаковое количество элементов и
они содержат менее, чем двумя числами, или, если для всех, где N-длина последовательности

Примеры эквивалентных последовательностей порядка:

7 5 9 13 12 и 4 2 25 33 26
12 и 8


Программа должна принимать две последовательности без разделителя между ними. Если число принятых чисел равно n, то предполагается, что первые n / 2 числа находятся в первой последовательности, а остальные образуют вторую последовательность. Затем программа должна проверить последовательности на эквивалентность порядков и распечатать результат. Можно предположить, что максимальный размер двух последовательностей равен 100. Вы должны использовать 0 или любое отрицательное число, чтобы отметить конец последовательности.

У меня есть код C#, но я хочу, чтобы он был на c

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

Console.Write("input: ");
var input = Console.ReadLine();
var nums = input.Split(' ').Select(s => int.Parse(s)).ToList();
if (nums.Count % 2 != 0) {
    throw new InvalidOperationException("Length must be even.");
}
var seq1 = nums.GetRange(0, nums.Count / 2);
var seq2 = nums.GetRange(nums.Count / 2, nums.Count / 2);
Console.WriteLine("seq1: " + string.Join(" ", seq1));
Console.WriteLine("seq2: " + string.Join(" ", seq2));
bool areEquiv = true;
for (int i = 0; i < seq1.Count && areEquiv; i++) {
    for (int j = 0; j < seq2.Count && areEquiv; j++) {
        if ((seq1[i] <= seq1[j]) != (seq2[i] <= seq2[j])) {
            areEquiv = false;
        }
    }
}
Console.WriteLine(string.Format("Are {0}order equivalent", areEquiv ? string.Empty : "NOT "));

Mehdi Gholam

Похоже на домашнюю работу.

NotPolitcallyCorrect

Это ваша домашняя работа, а не наша, и мы не являемся службой перевода кода.

Danyal Awan

Спасибо

3 Ответов

Рейтинг:
2

CPallini

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


Рейтинг:
1

OriginalGriff

Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!
И не находите случайный код в интернете на другом языке и не предполагайте, что он будет идеальным (например) Н - не будет. Что хорошо работает как решение на одном языке, так это плохой код на другом. Например, вы обычно не используете указатели в C# - в C вы используете их много. В C# вы широко используете события, делегаты, исключения и Linq - ни один из них не существует в C.


Danyal Awan

Спасибо

OriginalGriff

Пожалуйста!

Рейтинг:
1

Patrice T

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


Danyal Awan

Спасибо