как читать файл, и в этом файле много чисел, разделенных на "," и я хочу вычислить GCD и LCM - PullRequest
0 голосов
/ 08 июля 2020

У меня есть файл, в котором около 20 строк, и в каждой строке мне нужно ввести числа, и он разделен на ",", и я хочу знать их GCD и LCM, поэтому я не знаю алгоритмов 128,96 11,3 18,40 6,12 14,16 18,20 30,45 20,50 100,38 131,90 800,200 45,18 39,13 50,20 80,32 75,20 это числа в моем тексте file, и я хочу знать их LCM и GCM, и, во-первых, эта программа должна прочитать текстовый файл, а во-вторых, вычислить каждую строку и числа, а в-третьих, экспортировать его как выходной txt-файл в моем windows. Я хочу сделать все это в C# консоли или windows форме или python

Ответы [ 2 ]

1 голос
/ 09 июля 2020

вы можете использовать этот фрагмент кода для вычисления GCD и LCM:

//FYI ->   num1 * num2 = GCD(num1, num2) * LCM(num1, num2)

    static int GetGCD(int num1, int num2)
    {
        while (num1 != num2)
        {
            if (num1 > num2)
                num1 = num1 - num2;

            if (num2 > num1)
                num2 = num2 - num1;
        }
        return num1;
    }

    static int GetLCM(int num1, int num2)
    {
        return (num1 * num2) / GetGCD(num1, num2);
    }

Прочитать fileinput.txt и отобразить результат в fileouput.txt

        List<string> allLinesText = File.ReadAllLines(@"d:\\fileinput.txt").ToList();

        using (StreamWriter writer = new StreamWriter("d:\\fileouput.txt"))
        {

            foreach (var stringLine in allLinesText)
            {
                var numbers = stringLine.Split(',');
                var num1 = Int32.Parse(numbers[0]);// use Int32.TryParse to trap possible error
                var num2 = Int32.Parse(numbers[1]);
                var gcd = GetGCD(num1, num2);
                var lcm = GetLCM(num1, num2);

                writer.WriteLine($"num1: {num1,5} num2: {num2,5}  LCM: {lcm,7}  GCD: {gcd,7}");

            }
        }

результат в fileouput.txt:

num1:   128 num2:    96  LCM:     384  GCD:      32
num1:    11 num2:     3  LCM:      33  GCD:       1
num1:    18 num2:    40  LCM:     360  GCD:       2
num1:     6 num2:    12  LCM:      12  GCD:       6
num1:    14 num2:    16  LCM:     112  GCD:       2
num1:    18 num2:    20  LCM:     180  GCD:       2
num1:    30 num2:    45  LCM:      90  GCD:      15
num1:    20 num2:    50  LCM:     100  GCD:      10
num1:   100 num2:    38  LCM:    1900  GCD:       2
num1:   131 num2:    90  LCM:   11790  GCD:       1
num1:   800 num2:   200  LCM:     800  GCD:     200
num1:    45 num2:    18  LCM:      90  GCD:       9
num1:    39 num2:    13  LCM:      39  GCD:      13
num1:    50 num2:    20  LCM:     100  GCD:      10
num1:    80 num2:    32  LCM:     160  GCD:      16
num1:    75 num2:    20  LCM:     300  GCD:       5

fileinput.txt

128,96
11,3
18,40
6,12
14,16
18,20
30,45
20,50
100,38
131,90
800,200
45,18
39,13
50,20
80,32
75,20
1 голос
/ 08 июля 2020

Вы можете преобразовать строки в список с помощью этого кода:

если ваш текстовый файл похож на этот

128,96
11,3
18,40
6,12
14,16
18,20
30,45
20,50
100,38
131,90
800,200
45,18
39,13
50,20
80,32
75,20

пожалуйста, запустите этот код

List<string> allLinesText = File.ReadAllLines(@"FileAddress").ToList();
List<int> myNumbers = new List<int>();

foreach (var stringLine in allLinesText)
{
    foreach (var numbers in stringLine.Split(',').ToList())
    {
        myNumbers.Add(int.Parse(numbers));
    }
}

и выполните ваши расчеты.

но если ваш текстовый файл похож на этот

128,96 11,3 18,40 6,12 14,16 18,20 30,45 20,50 100,38 131,90 800,200 45,18 39,13 50,20 80,32 75,20

пожалуйста, запустите этот код

string txtFile = File.ReadAllText(@"I:\Test.txt");
    
foreach (var groupNumber in txtFile.Split(' '))
{
   foreach (var number in groupNumber.Split(','))
   {
       myNumbers.Add(int.Parse(number));
   }
}

Надеюсь, это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...