Построить программу для работы со структурами - правильными дробями - C#

Узнай цену своей работы

Формулировка задачи:

1) Построить программу для работы со структурами-правильными дробями.
Структура должна включать соответствующие поля: числитель, знаменатель (целые). Программа должна обеспечивать простейшие функции для работы с данными структурами: сложение, вычитание, умножение, деление, вывод дроби в удобной форме. Функции сделать внешними по отношению к структуре. Составить демонстрационную программу. Для реализации демонстрационной программы использовать отдельный модуль. Посмотреть работу программы в отладчике.
2) Модифицировать программу, используя функции-члены.
Примечание. У функций должна быть строгая специализация: расчетные только вычисляют, при этом не выводят на экран; функции ввода-вывода ничего не вычисляют.
Написать 2 версии программы:
  1. структуры и функции обработки вне структуры;
  2. структуры и функции обработки внутри структуры

Народ спасайте!

4 день сижу, мозг в кашу превратился... Спасибо!)
Вот, что смог напилить:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Struct
  7. {
  8. class Program
  9. {
  10. public static void Main(string[] args)
  11. {
  12. Struct a = new Struct(0, 0);//создание объекта структуры
  13. Console.Write("Числитель первой дроби= ");
  14. a.c = int.Parse(Console.ReadLine());
  15. Console.Write("Знаменатель первой дроби= ");
  16. a.z = int.Parse(Console.ReadLine());
  17. Struct b = new Struct(0, 0);//создание объекта структуры
  18. Console.Write("Числитель второй дроби= ");
  19. b.c = int.Parse(Console.ReadLine());
  20. Console.Write("Знаменатель второй дроби= ");
  21. b.z = int.Parse(Console.ReadLine());
  22. Struct x, z, c, v;
  23. x = a / b;
  24. z = a * b;
  25. v = a - b;
  26. c = a + b;
  27. Console.WriteLine("Проверка на сложение: " + a.ToString() + "+" + b.ToString() + "=" + c.ToString());
  28. Console.WriteLine("Проверка на вычитание: " + a.ToString() + "-" + b.ToString() + "=" + v.ToString());
  29. Console.WriteLine("Проверка на умножение: " + a.ToString() + "*" + b.ToString() + "=" + z.ToString());
  30. Console.WriteLine("Проверка на деление: " + a.ToString() + "*" + b.ToString() + "=" + x.ToString());
  31. Console.ReadKey();
  32. }
  33. }
  34. struct Struct
  35. {
  36. public double c;// Числитель
  37. public double z;//Знаменатель
  38. public Struct(int c, int z)//конструктор
  39. {
  40. this.c = c;
  41. this.z = z;
  42. }
  43. public override string ToString()//cтроковое представление
  44. {
  45. return "(" + c.ToString() + "/" + z.ToString() + ")";
  46. }
  47. public static Struct operator +(Struct a, Struct b)//сложение дробей
  48. {
  49. Struct t = new Struct(0, 0);//создание и инициализация новой дроби
  50. t.c = (a.c * b.z + a.z * b.c);//числитель новой дроби
  51. t.z = a.z * b.z;//знаменатель новой дроби
  52. Struct.SetFormat(t);//сокращаем дробь
  53. return t;//возвращаем результат
  54. }
  55. public static Struct operator -(Struct a, Struct b)//вычитание дробей
  56. {
  57. Struct t = new Struct(0, 0);//создание и инициализация новой дроби
  58. t.c = (a.c * b.z - a.z * b.c);//числитель новой дроби
  59. t.z = a.z * b.z;//знаменатель новой дроби
  60. Struct.SetFormat(t);//сокращаем дробь
  61. return t;//возвращаем результат
  62. }
  63. public static Struct operator *(Struct a, Struct b)//вычитание дробей
  64. {
  65. Struct t = new Struct(0, 0);//создание и инициализация новой дроби
  66. t.c = (a.c * b.c);//числитель новой дроби
  67. t.z = a.z * b.z;//знаменатель новой дроби
  68. Struct.SetFormat(t);//сокращаем дробь
  69. return t;//возвращаем результат
  70. }
  71. public static Struct operator /(Struct a, Struct b)//вычитание дробей
  72. {
  73. Struct t = new Struct(0, 0);//создание и инициализация новой дроби
  74. t.c = (a.c / b.c);//числитель новой дроби
  75. t.z = a.z / b.z;//знаменатель новой дроби
  76. Struct.SetFormat(t);//сокращаем дробь
  77. return t;//возвращаем результат
  78. }
  79. //процедура по сокращению дроби
  80. public static Struct SetFormat(Struct a)
  81. {
  82. double max = 0;
  83. //выбираем что больше числитель или знаменатель
  84. if (a.c > a.z)
  85. max = Math.Abs(a.z);//берем по модулю, что работало и с отрицательными числами
  86. else
  87. max = Math.Abs(a.c);
  88. //поиск от максимума до 2
  89. for (double i = max; i >= 2; i--)
  90. {
  91. //такого числа, поделив на которое бы делилось без
  92. //остатка и на числитель и на знаменатель
  93. if ((a.c % i == 0) & (a.z % i == 0))
  94. {
  95. a.c = a.c / i;
  96. a.z = a.z / i;
  97. }
  98. }
  99. //Определяемся со знаком
  100. //если в знаменателе минус, поднимаем его наверх
  101. if ((a.z < 0))
  102. {
  103. a.c = -1 * (a.c);
  104. a.z = Math.Abs(a.z);
  105. }
  106. return (a);//возращаем результат
  107. }
  108. }
  109. }
Но, нужно, чтобы класса не было, была только структура и функции... И функции должны быть не как функции-структуры, а отдельные функции. А в Main должны вызываться только функции вывода(сложение, вычитание...)

Решение задачи: «Построить программу для работы со структурами - правильными дробями»

textual
Листинг программы
  1.  public static void Main(string[] args)
  2.         {
  3.             MyStruct a = new MyStruct(0, 0);//создание объекта структуры
  4.             Console.Write("Числитель первой дроби= ");
  5.             a.c = int.Parse(Console.ReadLine());
  6.             Console.Write("Знаменатель первой дроби= ");
  7.             a.z = int.Parse(Console.ReadLine());
  8.             MyStruct b = new MyStruct(0, 0);//создание объекта структуры
  9.             Console.Write("Числитель второй дроби= ");
  10.             b.c = int.Parse(Console.ReadLine());
  11.             Console.Write("Знаменатель второй дроби= ");
  12.             b.z = int.Parse(Console.ReadLine());
  13.  
  14.             MyStruct c, v;
  15.             v = Program.RaznStruct(a,b);
  16.             c = Program.SummStruct(a,b);
  17.  
  18.             Console.WriteLine("Проверка на сложение: " + a.ToString() + "+" + b.ToString() + "=" + c.ToString());
  19.             Console.WriteLine("Проверка на вычитание: " + a.ToString() + "-" + b.ToString() + "=" + v.ToString());
  20.             Console.ReadKey();
  21.         }
  22.  
  23.         public static MyStruct SummStruct(MyStruct a, MyStruct b)//сложение дробей
  24.         {
  25.             MyStruct t = new MyStruct(0, 0);//создание и инициализация новой дроби
  26.             t.c = (a.c * b.z + a.z * b.c);//числитель новой дроби
  27.             t.z = a.z * b.z;//знаменатель новой дроби
  28.             return t;//возвращаем результат
  29.  
  30.         }
  31.         public static MyStruct RaznStruct(MyStruct a, MyStruct b)//вычитание дробей
  32.         {
  33.             MyStruct t = new MyStruct(0, 0);//создание и инициализация новой дроби
  34.             t.c = (a.c * b.z - a.z * b.c);//числитель новой дроби
  35.             t.z = a.z * b.z;//знаменатель новой дроби
  36.             return t;//возвращаем результат
  37.  
  38.         }
  39.         public struct MyStruct
  40.         {
  41.             public double c;// Числитель
  42.             public double z;//Знаменатель
  43.  
  44.             public MyStruct(int c, int z)//конструктор
  45.             {
  46.                 this.c = c;
  47.                 this.z = z;
  48.             }
  49.             public override string ToString()//cтроковое представление
  50.             {
  51.                 return "(" + c.ToString() + "/" + z.ToString() + ")";
  52.             }
  53.  
  54.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы