Перевод между разными единицами измерения (доработать программу) - PascalABC.NET

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

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

Всем привет, сделала практику, столкнулась с одной проблемой, когда программа спрашивает кол-во ед. для перевода, нужно чтобы она писала чего именно переводить, пыталась сделать сама, не как не получается. Вот исходник:
Листинг программы
  1. uses
  2. crt;
  3. var
  4. c: real;
  5. p, z: integer;
  6. //18 номер
  7. //1 фингер =11.4 см = 4.5 дюймов;
  8. procedure fin;
  9. var
  10. a: real;
  11. begin
  12. a := (11.4 * c) / 1;
  13. writeln('Результат : ', a, 'см');
  14. end;
  15. procedure фиHов;
  16. var
  17. a: real;
  18. begin
  19. a := (4.5 * c) / 1;
  20. writeln('Результат : ', a, 'Дюймов');
  21. end;
  22. procedure cм;
  23. var
  24. a: real;
  25. begin
  26. a := (4.5 * c) / 11.4;
  27. writeln('Результат : ', a, 'дюймов');
  28. end;
  29. procedure cm;
  30. var
  31. a: real;
  32. begin
  33. a := (1 * c) / 11.4;
  34. writeln('Результат: ', a, 'фингеров');
  35. end;
  36. procedure дюймоB;
  37. var
  38. a: real;
  39. begin
  40. a := (11.4 * c) / 4.5;
  41. writeln('Результат:', a, 'см');
  42. end;
  43. procedure дюймoв;
  44. var
  45. a: real;
  46. begin
  47. a := (1 * c) / 4.5;
  48. writeln('Результат:', a, 'фингер');
  49. end;
  50. //17
  51. //1 чейн строительный = 30.48 М = 100 футов
  52. procedure чейн;
  53. var
  54. a: real;
  55. begin
  56. a := (30.48 * c) / 1;
  57. writeln('Результат:', a, 'м');
  58. end;
  59. procedure чейнов;
  60. var
  61. a: real;
  62. begin
  63. a := (100 * c) / 1;
  64. writeln('Результат:', a, 'фут');
  65. end;
  66. procedure метров;
  67. var
  68. a: real;
  69. begin
  70. a := (1 * c) / 30.48;
  71. writeln('Результат:', a, 'чейн строительный');
  72. end;
  73. procedure фут;
  74. var
  75. a: real;
  76. begin
  77. a := (1 * c) / 100;
  78. writeln('Результат:', a, 'чейн строительный');
  79. end;
  80. procedure футов;
  81. var
  82. a: real;
  83. begin
  84. a := (100 * c) / 30.48;
  85. writeln('Результат:', a, 'м');
  86. end;
  87. procedure м;
  88. var
  89. a: real;
  90. begin
  91. a := (30.48 * c) / 100;
  92. writeln('Результат:', a, 'фут');
  93. end;
  94. //19
  95. //1 нейл = 5.7 см = 2.25 дюймов;
  96. procedure Нейл;
  97. var
  98. a: real;
  99. begin
  100. a := (5.7 * c) / 1;
  101. writeln('Результат:', a, 'см');
  102. end;
  103. procedure Нейлов;
  104. var
  105. a: real;
  106. begin
  107. a := (1 * c) / 2.25;
  108. writeln('Результат:', a, 'дюйм');
  109. end;
  110. procedure Сантиметров ;
  111. var
  112. a: real;
  113. begin
  114. a := (5.7 * c) / 1;
  115. writeln('Результат:', a, 'нейл');
  116. end;
  117. procedure См;
  118. var
  119. a: real;
  120. begin
  121. a := (2.25 * c) / 5.7;
  122. writeln('Результат : ', a, 'дюймов');
  123. end;
  124. procedure Дюйм;
  125. var
  126. a: real;
  127. begin
  128. a := (5.7 * c) / 2.25;
  129. writeln('Результат:', a, 'см');
  130. end;
  131. procedure Дюймob ;
  132. var
  133. a: real;
  134. begin
  135. a := (2.25 * c) / 1;
  136. writeln('Результат:', a, 'нейл');
  137. end;
  138. procedure menuxa;
  139. begin
  140. writeln('Обмен');
  141. writeln('1) Фингер - см ');
  142. writeln('2) Фингер - дюйм ');
  143. writeln('3) см - дюйм ');
  144. writeln('4) см - фингер ');
  145. writeln('5) дюйм - см ');
  146. writeln('6) дюйм - фингер');
  147. writeln('7) чейн строительный - м ');
  148. writeln('8) чейн строительный - фут ');
  149. writeln('9) м - чейн строительный ');
  150. writeln('10) м - фут ');
  151. writeln('11) фут - чейн строительный ');
  152. writeln('12) фут - м ');
  153. writeln('13) нейл - см ');
  154. writeln('14) нейл - дюйм ');
  155. writeln('15)см - нейл ');
  156. writeln('16) см - дюйм ');
  157. writeln('17) дюйм - см ');
  158. writeln('18) дюйм - нейл ');
  159. writeln;
  160.  
  161. end;
  162. procedure cassiopeya(var p:integer);
  163. begin
  164. repeat
  165. writeln('Введите пункт: ');
  166. readln(p);
  167. if (p < 1) or (p > 18) then
  168.  
  169. begin
  170. writeln('Ошибка, такого пункта нет');
  171. end else
  172. if (p >= 1) or (p <= 18) then
  173. begin
  174. write('Введите необходимое количество для перевода : ');
  175. readln(c);
  176. case p of
  177. 1:fin;
  178. 2:фиHов;
  179. 3:cм;
  180. 4:cm;
  181. 5:дюймоB;
  182. 6:дюймoв;
  183. 7: чейн;
  184. 8:чейнов;
  185. 9:метров;
  186. 10: фут;
  187. 11:футов;
  188. 12:м;
  189. 13:Нейл;
  190. 14:Нейлов;
  191. 15:Сантиметров;
  192. 16:См;
  193. 17:Дюйм;
  194. 18:ДюймoB;
  195. end;
  196. end;
  197. writeln('1) продолжить');
  198. writeln('2) закрыть');
  199. readln(z);
  200. until z > 1;
  201. end;
  202. begin
  203. menuxa;
  204. cassiopeya(p);
  205. end.
Можете просто запустить, она полностью рабочая, вот тут
Листинг программы
  1. write('Введите необходимое количество для перевода : ');
она должна спросить чего именно перевод. Если лень самим дописать код, накиньте просто идее как сделать это, буду благодарна!

Решение задачи: «Перевод между разными единицами измерения (доработать программу)»

textual
Листинг программы
  1. uses
  2.   crt;
  3.  
  4. var
  5.   c: real;
  6.   p, z: integer;
  7.   inUnit: array of string := ('Фингер', 'Фингер', 'см', 'см', 'дюйм', 'дюйм', 'чейн строительный', 'чейн строительный', 'м', 'м', 'фут', 'фут', 'нейл', 'нейл', 'см', 'см', 'дюйм', 'дюйм');
  8.   outUnit: array of string := ('см', 'дюйм', 'дюйм', 'фингер', 'см', 'фингер', 'м', 'фут', 'чейн строительный', 'чейн строительный', 'м', 'фут', 'см', 'дюйм', 'нейл', 'дюйм', 'см', 'нейл');
  9.  
  10. function convert: real;
  11. var a:real;
  12. begin
  13.   case p of
  14.     1: a := (11.4 * c) / 1;  
  15.     2: a := (4.5 * c) / 1;  
  16.     3: a := (4.5 * c) / 11.4;
  17.     4: a := (1 * c) / 11.4;  
  18.     5: a := (11.4 * c) / 4.5;
  19.     6: a := (1 * c) / 4.5;  
  20.     7: a := (30.48 * c) / 1;
  21.     8: a := (100 * c) / 1;  
  22.     9: a := (1 * c) / 30.48;
  23.     10: a := (1 * c) / 100;
  24.     11: a := (100 * c) / 30.48;  
  25.     12: a := (30.48 * c) / 100;
  26.     13: a := (5.7 * c) / 1;  
  27.     14: a := (1 * c) / 2.25;  
  28.     15: a := (5.7 * c) / 1;
  29.     16: a := (2.25 * c) / 5.7;  
  30.     17: a := (5.7 * c) / 2.25;  
  31.     18: a := (2.25 * c) / 1;  
  32.   end;
  33.   convert:=a;
  34. end;
  35.  
  36. procedure menuxa;
  37. begin
  38.   writeln('Обмен');
  39.   for var i := 0 to 17 do  
  40.     writeln(i+1, ') ', inUnit[i], ' - ', outUnit[i]);
  41.   writeln;  
  42. end;
  43.  
  44. begin
  45.   repeat
  46.     menuxa;
  47.     writeln('Введите пункт: ');
  48.     readln(p);
  49.     if (p < 1) or (p > 18) then writeln('Ошибка, такого пункта нет')
  50.      else
  51.         if (p >= 1) or (p <= 18) then
  52.     begin
  53.       writeln('Исходная величина (', inUnit[p-1], ')');
  54.       readln(c);
  55.       writeln('=',convert,' ',outUnit[p-1]);
  56.     end;
  57.     writeln('1) продолжить');
  58.     writeln('2) закрыть');
  59.     readln(z);
  60.   until z > 1;
  61. end.

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


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

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

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

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

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

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