瀏覽代碼

Merge branch 'task4' of 23IS04/our-Console-App-lr14-15 into master

23IS04 1 月之前
父節點
當前提交
4ad094a14c
共有 2 個文件被更改,包括 71 次插入34 次删除
  1. 71 34
      ConsoleApp21/Program.cs
  2. 二進制
      ConsoleApp21/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache

+ 71 - 34
ConsoleApp21/Program.cs

@@ -1,47 +1,84 @@
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 
-namespace ConsoleApp21
+class Program
 {
-    internal class Program
+   
+    static void Main()
+    {
+        // Получаем входные данные от пользователя
+        int n = GetInput();
+
+        // Вычисляем сумму 1+2+...+n и значение n(n+1)/2
+        long sumResult = CalculateSum(n);
+        long formulaResult = CalculateFormula(n);
+
+        // Выводим результаты
+        DisplayResults(n, sumResult, formulaResult);
+    }
+
+    
+    static int GetInput()
     {
-        static void Main(string[] args)
+        int n;
+        Console.WriteLine("Программа проверяет равенство: 1+2+...+n = n(n+1)/2");
+
+        // Запрашиваем ввод, пока не будет введено корректное натуральное число
+        while (true)
         {
-            Console.WriteLine("Проверка равенства 1+2+...+n = n(n+1)/2");
             Console.Write("Введите натуральное число n: ");
+            string input = Console.ReadLine();
 
-            // Чтение ввода пользователя и преобразование в целое число
-            int n;
-            while (!int.TryParse(Console.ReadLine(), out n) || n <= 0)
-            {
-                Console.Write("Ошибка! Введите натуральное число (n > 0): ");
-            }
-            // Вычисление левой части равенства (сумма чисел от 1 до n)
-            int leftSum = 0;
-            for (int i = 1; i <= n; i++)
+            // Проверяем, является ли ввод целым числом и больше нуля
+            if (int.TryParse(input, out n) && n > 0)
             {
-                leftSum += i;
+                break;
             }
+            Console.WriteLine("Ошибка! Введите целое число больше нуля.");
+        }
 
-            // Вычисление правой части равенства (формула n(n+1)/2)
-            int rightSum = n * (n + 1) / 2;
-            // Вывод результатов
-            Console.WriteLine($"Сумма чисел от 1 до {n} (лев. часть): {leftSum}");
-            Console.WriteLine($"Результат формулы n(n+1)/2 (прав. часть): {rightSum}");
+        return n;
+    }
 
-            // Проверка равенства
-            if (leftSum == rightSum)
-            {
-                Console.WriteLine($"Равенство выполняется: {leftSum} = {rightSum}");
-            }
-            else
-            {
-                Console.WriteLine($"Ошибка! Равенство не выполняется: {leftSum} ≠ {rightSum}");
-            }
+    
+    static long CalculateSum(int n)
+    {
+        long sum = 0;
+
+        // Суммируем все числа от 1 до n
+        for (int i = 1; i <= n; i++)
+        {
+            sum += i;
         }
+
+        return sum;
     }
-}
-   
+
+  
+  
+    static long CalculateFormula(int n)
+    {
+        // Вычисляем по формуле (n*(n+1))/2
+        // Используем long для избежания переполнения при больших n
+        return (long)n * (n + 1) / 2;
+    }
+
+ 
+    static void DisplayResults(int n, long sumResult, long formulaResult)
+    {
+        Console.WriteLine($"\nРезультаты для n = {n}:");
+        Console.WriteLine($"Сумма 1+2+...+n = {sumResult}");
+        Console.WriteLine($"Значение по формуле n(n+1)/2 = {formulaResult}");
+
+        // Сравниваем результаты и выводим заключение
+        if (sumResult == formulaResult)
+        {
+            Console.WriteLine($"\nРавенство выполняется: {sumResult} = {formulaResult}");
+            Console.WriteLine("Таким образом, формула 1+2+...+n = n(n+1)/2 верна для данного n.");
+        }
+        else
+        {
+            Console.WriteLine($"\nОшибка! {sumResult} ≠ {formulaResult}");
+            Console.WriteLine("Формула не работает для данного n.");
+        }
+    }
+}

二進制
ConsoleApp21/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache