Advertisement
Tolyamba

OOP_LR9

Dec 3rd, 2016
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.50 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Програм_раб_9
  8. {
  9. class Program
  10. {
  11. public static void Vichetanie1(Money[] d)
  12. {
  13. Console.WriteLine("Количество созданных объектов: " + Money.count);
  14. Console.WriteLine("Вызов статического метода: ");
  15. string s;
  16. if (Vichetanie(d[0], d[1]) != null) Console.WriteLine(" Результат: {0}", Vichetanie(d[0], d[1]));
  17. else
  18. {
  19. s = "Ошибка при вычитании";
  20. Console.WriteLine(s);
  21. }
  22. /*Console.WriteLine("Вызов метода класса: ");
  23. if (d[0].Vichetanie(d[1]) != null) Console.WriteLine(" Результат: {0}", Vichetanie(d[0], d[1]));
  24. else
  25. {
  26. s = "Ошибка при вычитании ";
  27. Console.WriteLine(s);
  28. }*/
  29. }
  30. static Money Vichetanie(Money a, Money b)
  31. {
  32. if ((a.Znach_rub - b.Znach_rub) > 0 && (a.Znach_kop - b.Znach_kop) > 0)
  33. {
  34. Money d = new Money();
  35. d.Znach_rub = a.Znach_rub - b.Znach_rub;
  36. d.Znach_kop = a.Znach_kop - b.Znach_rub;
  37. return d;
  38. }
  39. else return null;
  40. }
  41. public static int menuArr()
  42. {
  43. int num;
  44. Console.WriteLine(@"Создание значений денег:
  45. 1 - Рандом
  46. 2 - Ручной ввод
  47. 0 - Выход в меню");
  48. do
  49. {
  50. try
  51. {
  52. Console.Write("Пункт№: ");
  53. num = Convert.ToInt32(Console.ReadLine());
  54. }
  55. catch
  56. {
  57. Console.WriteLine("Error!");
  58. num = -1;
  59. }
  60. } while (num > 2 || num < 0 || num == -1);
  61. return num;
  62. }
  63. public static void Dmass()
  64. {
  65. int num = menuArr();
  66. if (num == 0) System.Environment.Exit(0);
  67. else if (num == 1)
  68. {
  69. MoneyArray d = new MoneyArray();
  70. d.Show();
  71. Console.WriteLine("Максимальное значение: " + d.Max());
  72. }
  73. else if (num == 2)
  74. {
  75. int n;
  76. int Znach_rub = 0, Znach_kop = 0;
  77. do
  78. {
  79. Console.WriteLine("Количество значений: ");
  80. n = Convert.ToInt32(Console.ReadLine());
  81. } while (n < 0 || n > 15);
  82. MoneyArray d = new MoneyArray(n);
  83. for (int i = 0; i < n; i++)
  84. {
  85. Console.WriteLine(i + 1 + "-е значение: ");
  86. Console.WriteLine("Рубли: ");
  87. Znach_rub = Convert.ToInt32(Console.ReadLine());
  88. Console.WriteLine("Копейки: ");
  89. Znach_kop= Convert.ToInt32(Console.ReadLine());
  90. d[i] = new Money(Znach_rub, Znach_kop);
  91. }
  92. d.Show();
  93. Console.WriteLine("Максимальное значение: " + d.Max());
  94. }
  95. }
  96. public static void Types(Money[] d)
  97. {
  98. Console.WriteLine("Преведение типа данных:");
  99. Console.WriteLine("Целая часть суммы равна: " + (int)d[0]);
  100. Console.WriteLine("Копейки: 0," + (double)d[0]);
  101. Console.WriteLine("Для второй суммы:");
  102. Console.WriteLine("Целая часть суммы равна:: " + (int)d[1]);
  103. Console.WriteLine("Копейки: 0," + (double)d[1]);
  104. }
  105. public static void Peregruzka(Money[] d)
  106. {
  107. Console.WriteLine("Добавление копейки к "+d[0]+ "=" + ++d[0]);
  108. Console.WriteLine("Добавление копейки к " + d[1] + "=" + ++d[1]);
  109. Console.WriteLine("Вычитание копейки из "+d[0] +"="+ —d[0]);
  110. Console.WriteLine("Вычитание копейки из " + d[1] +"="+ —d[1]);
  111. Console.WriteLine("Изменение значения рублей\n(левосторонняя операция(из 7 вычитаем"+d[0]+"))\n= ");
  112. d[0] = 7 - d[0];
  113. Console.WriteLine(d[0].ToString());
  114. Console.WriteLine("Изменение значения рублей\n(левосторонняя операция(из 7 вычитаем"+d[1]+"))\n= ");
  115. d[1] = 7 - d[1];
  116. Console.WriteLine(d[1].ToString());
  117. Console.WriteLine("Изменение зничения рублей\n(правосторонняя операция(из"+d[0]+ "вычитаем 3))\n= ");
  118. d[0] = d[0] - 3;
  119. Console.WriteLine(d[0].ToString());
  120. Console.WriteLine("Изменение зничения рублей\n(правосторонняя операция(из" + d[1] + "вычитаем 3))\n= ");
  121. d[1] = d[1] - 3;
  122. Console.WriteLine(d[1].ToString());
  123.  
  124. }
  125. public static Money[] InputData(Money[] d, int i)
  126. {
  127. d[i] = new Money();
  128. bool ok;
  129. do
  130. {
  131. Console.Write("Рубли = ");
  132. try
  133. {
  134. ok = true;
  135. d[1].Znach_rub = Convert.ToInt32(Console.ReadLine());
  136. }
  137. catch
  138. {
  139. Console.WriteLine("Error!");
  140. ok = false;
  141. }
  142.  
  143. }
  144. while (!ok);
  145. do
  146. {
  147. Console.Write("Копейки = ");
  148. try
  149. {
  150. ok = true;
  151. d[1].Znach_kop = Convert.ToInt32(Console.ReadLine());
  152. }
  153. catch
  154. {
  155. ok = false;
  156. Console.WriteLine("\nError!");
  157. }
  158. if (d[1].Znach_kop>100 || !ok) Console.WriteLine("Неверное значение!");
  159. } while (!ok);
  160. return d;
  161. }
  162. public static void Menu(Money[] d)
  163. {
  164. int punkt;
  165. Console.WriteLine(@"Работа с классом Деньги:
  166. 1 - Вычитание
  167. 2 - Перегрузка операторов
  168. 3 - Приведение типа
  169. 4 - Массив
  170. 5 - Ввести новые значения
  171. 6 - Вывести текущие значения (не массив)
  172. 0 - Выход");
  173. do
  174. {
  175. try
  176. {
  177. Console.WriteLine("Пункт№: ");
  178. punkt = Convert.ToInt32(Console.ReadLine());
  179. }
  180. catch
  181. {
  182. Console.WriteLine("Error!");
  183. punkt = -1;
  184. }
  185. } while (punkt > 6 || punkt < 0 || punkt == -1);
  186. switch (punkt)
  187. {
  188. case 1:
  189. {
  190. Vichetanie1(d);
  191. break;
  192. }
  193. case 2:
  194. {
  195. Peregruzka(d);
  196. break;
  197. }
  198. case 3:
  199. {
  200. Types(d);
  201. break;
  202. }
  203. case 4:
  204. {
  205. Dmass();
  206. break;
  207. }
  208. case 5:
  209. {
  210. Main();
  211. break;
  212. }
  213. case 6:
  214. {
  215. Console.WriteLine(d[0].ToString());
  216. Console.WriteLine(d[1].ToString());
  217. break;
  218. }
  219. case 0:
  220. {
  221. System.Environment.Exit(0);
  222. break;
  223. }
  224. }
  225. Menu(d);
  226. }
  227. static void Main()
  228. {
  229. int n = 2, i = 1;
  230. Money[] d = new Money[n];
  231. d[0] = new Money(3, 70);
  232. Console.WriteLine("Первый диапазон создан автоматически(3,7)");
  233. d = InputData(d, i);
  234. Console.WriteLine(d[0].ToString());
  235. Console.WriteLine(d[1].ToString());
  236. Menu(d);
  237. }
  238. }
  239. }
  240.  
  241. using System;
  242. using System.Collections.Generic;
  243. using System.Linq;
  244. using System.Text;
  245. using System.Threading.Tasks;
  246.  
  247. namespace Програм_раб_9
  248. {
  249. class Money
  250. {
  251. protected int rubles = 0;
  252. protected int kopeks = 0;
  253. public static int count = 0;
  254. public Money(int rub1 = 0, int kop1 = 0)
  255. {
  256. this.rubles = rub1;
  257. this.kopeks = kop1;
  258. count++;
  259. }
  260. public int Znach_rub
  261. {
  262. get { return rubles; }
  263. set { rubles = value; }
  264. }
  265. public int Znach_kop
  266. {
  267. get { return kopeks; }
  268. set { kopeks = value; }
  269. }
  270. public override string ToString()
  271. {
  272. string s = rubles + "," + kopeks;
  273. return s;
  274. }
  275.  
  276. public Money Vichetanie(Money a)
  277. {
  278. if ((a.Znach_rub - this.Znach_rub) > 0 && (a.Znach_kop - this.Znach_kop) > 0)
  279. {
  280. Money d = new Money();
  281. d.Znach_rub = a.Znach_rub - this.Znach_rub;
  282. d.Znach_kop = a.Znach_kop - this.Znach_rub;
  283. return d;
  284. }
  285. else return null;
  286. }
  287.  
  288. public static Money operator(Money a)
  289. {
  290. Money d = new Money();
  291. d.kopeks = a.kopeks - 1;
  292. d.rubles = a.rubles;
  293. if (d.kopeks == 0)
  294. {
  295. d.kopeks = a.kopeks + 99;
  296. d.rubles = a.rubles - 1;
  297. if (d.rubles < 0)
  298. { Console.WriteLine("Вычитание невозможно");
  299. return null; }
  300. }
  301. return d;
  302. }
  303. public static Money operator ++(Money a)
  304. {
  305. Money d = new Money();
  306.  
  307. d.kopeks = a.kopeks +1;
  308. d.rubles = a.rubles;
  309. if(d.kopeks>100)
  310. {
  311. d.kopeks = a.kopeks - 99;
  312. d.rubles = a.rubles + 1;
  313. }
  314. return d;
  315. }
  316. public static Money operator -(Money a, int b)
  317. {
  318. Money d = new Money();
  319. d.rubles = a.rubles - b;
  320. d.kopeks = a.kopeks;
  321. return d;
  322. }
  323. public static Money operator -(int b, Money a)
  324. {
  325. Money d = new Money();
  326. d.rubles = b - a.rubles;
  327. d.kopeks = a.kopeks;
  328. return d;
  329. }
  330. public static explicit operator int (Money d)
  331. {
  332. return d.rubles;
  333. }
  334. public static implicit operator double (Money d)
  335. {
  336. return d.kopeks;
  337. }
  338. }
  339. }
  340.  
  341. using System;
  342. using System.Collections.Generic;
  343. using System.Linq;
  344. using System.Text;
  345. using System.Threading.Tasks;
  346.  
  347. namespace Програм_раб_9
  348. {
  349. class MoneyArray: Money
  350. {
  351. Random rnd = new Random();
  352. Money[] mas;
  353. public MoneyArray()
  354. {
  355. int n = rnd.Next(2, 10);
  356. mas = new Money[n];
  357. for (int i = 0; i < n; i++)
  358. {
  359. mas[i] = new Money();
  360. mas[i].Znach_rub = rnd.Next(0, 100);
  361. mas[i].Znach_kop = rnd.Next(1, 99);
  362. }
  363. }
  364. public MoneyArray(int n)
  365. {
  366. mas = new Money[n];
  367. }
  368. public void Show()
  369. {
  370. int i = 0;
  371. foreach (Money d in mas)
  372. {
  373. Console.WriteLine(d.ToString());
  374. i++;
  375. }
  376. }
  377. public Money this[int index]
  378. {
  379. set
  380. {
  381. mas[index] = value;
  382. }
  383. get
  384. {
  385. return mas[index];
  386. }
  387. }
  388. public Money Max()
  389. {
  390. Money max = new Money();
  391. max.Znach_rub = 0;
  392. max.Znach_rub = 0;
  393. foreach (Money d in mas)
  394. {
  395. if (d.Znach_rub > max.Znach_rub) max = d;
  396. if(d.Znach_rub == max.Znach_rub)
  397. {
  398. if (d.Znach_kop > max.Znach_kop)
  399. max = d;
  400. }
  401. }
  402. return max;
  403. }
  404. }
  405. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement