Перевод между разными единицами измерения (доработать программу) - PascalABC.NET
Формулировка задачи:
Всем привет, сделала практику, столкнулась с одной проблемой, когда программа спрашивает кол-во ед. для перевода, нужно чтобы она писала чего именно переводить, пыталась сделать сама, не как не получается. Вот исходник:
Можете просто запустить, она полностью рабочая, вот тут
она должна спросить чего именно перевод.
Если лень самим дописать код, накиньте просто идее как сделать это, буду благодарна!
Листинг программы
- uses
- crt;
- var
- c: real;
- p, z: integer;
- //18 номер
- //1 фингер =11.4 см = 4.5 дюймов;
- procedure fin;
- var
- a: real;
- begin
- a := (11.4 * c) / 1;
- writeln('Результат : ', a, 'см');
- end;
- procedure фиHов;
- var
- a: real;
- begin
- a := (4.5 * c) / 1;
- writeln('Результат : ', a, 'Дюймов');
- end;
- procedure cм;
- var
- a: real;
- begin
- a := (4.5 * c) / 11.4;
- writeln('Результат : ', a, 'дюймов');
- end;
- procedure cm;
- var
- a: real;
- begin
- a := (1 * c) / 11.4;
- writeln('Результат: ', a, 'фингеров');
- end;
- procedure дюймоB;
- var
- a: real;
- begin
- a := (11.4 * c) / 4.5;
- writeln('Результат:', a, 'см');
- end;
- procedure дюймoв;
- var
- a: real;
- begin
- a := (1 * c) / 4.5;
- writeln('Результат:', a, 'фингер');
- end;
- //17
- //1 чейн строительный = 30.48 М = 100 футов
- procedure чейн;
- var
- a: real;
- begin
- a := (30.48 * c) / 1;
- writeln('Результат:', a, 'м');
- end;
- procedure чейнов;
- var
- a: real;
- begin
- a := (100 * c) / 1;
- writeln('Результат:', a, 'фут');
- end;
- procedure метров;
- var
- a: real;
- begin
- a := (1 * c) / 30.48;
- writeln('Результат:', a, 'чейн строительный');
- end;
- procedure фут;
- var
- a: real;
- begin
- a := (1 * c) / 100;
- writeln('Результат:', a, 'чейн строительный');
- end;
- procedure футов;
- var
- a: real;
- begin
- a := (100 * c) / 30.48;
- writeln('Результат:', a, 'м');
- end;
- procedure м;
- var
- a: real;
- begin
- a := (30.48 * c) / 100;
- writeln('Результат:', a, 'фут');
- end;
- //19
- //1 нейл = 5.7 см = 2.25 дюймов;
- procedure Нейл;
- var
- a: real;
- begin
- a := (5.7 * c) / 1;
- writeln('Результат:', a, 'см');
- end;
- procedure Нейлов;
- var
- a: real;
- begin
- a := (1 * c) / 2.25;
- writeln('Результат:', a, 'дюйм');
- end;
- procedure Сантиметров ;
- var
- a: real;
- begin
- a := (5.7 * c) / 1;
- writeln('Результат:', a, 'нейл');
- end;
- procedure См;
- var
- a: real;
- begin
- a := (2.25 * c) / 5.7;
- writeln('Результат : ', a, 'дюймов');
- end;
- procedure Дюйм;
- var
- a: real;
- begin
- a := (5.7 * c) / 2.25;
- writeln('Результат:', a, 'см');
- end;
- procedure Дюймob ;
- var
- a: real;
- begin
- a := (2.25 * c) / 1;
- writeln('Результат:', a, 'нейл');
- end;
- procedure menuxa;
- begin
- writeln('Обмен');
- writeln('1) Фингер - см ');
- writeln('2) Фингер - дюйм ');
- writeln('3) см - дюйм ');
- writeln('4) см - фингер ');
- writeln('5) дюйм - см ');
- writeln('6) дюйм - фингер');
- writeln('7) чейн строительный - м ');
- writeln('8) чейн строительный - фут ');
- writeln('9) м - чейн строительный ');
- writeln('10) м - фут ');
- writeln('11) фут - чейн строительный ');
- writeln('12) фут - м ');
- writeln('13) нейл - см ');
- writeln('14) нейл - дюйм ');
- writeln('15)см - нейл ');
- writeln('16) см - дюйм ');
- writeln('17) дюйм - см ');
- writeln('18) дюйм - нейл ');
- writeln;
- end;
- procedure cassiopeya(var p:integer);
- begin
- repeat
- writeln('Введите пункт: ');
- readln(p);
- if (p < 1) or (p > 18) then
- begin
- writeln('Ошибка, такого пункта нет');
- end else
- if (p >= 1) or (p <= 18) then
- begin
- write('Введите необходимое количество для перевода : ');
- readln(c);
- case p of
- 1:fin;
- 2:фиHов;
- 3:cм;
- 4:cm;
- 5:дюймоB;
- 6:дюймoв;
- 7: чейн;
- 8:чейнов;
- 9:метров;
- 10: фут;
- 11:футов;
- 12:м;
- 13:Нейл;
- 14:Нейлов;
- 15:Сантиметров;
- 16:См;
- 17:Дюйм;
- 18:ДюймoB;
- end;
- end;
- writeln('1) продолжить');
- writeln('2) закрыть');
- readln(z);
- until z > 1;
- end;
- begin
- menuxa;
- cassiopeya(p);
- end.
Листинг программы
- write('Введите необходимое количество для перевода : ');
Решение задачи: «Перевод между разными единицами измерения (доработать программу)»
textual
Листинг программы
- uses
- crt;
- var
- c: real;
- p, z: integer;
- inUnit: array of string := ('Фингер', 'Фингер', 'см', 'см', 'дюйм', 'дюйм', 'чейн строительный', 'чейн строительный', 'м', 'м', 'фут', 'фут', 'нейл', 'нейл', 'см', 'см', 'дюйм', 'дюйм');
- outUnit: array of string := ('см', 'дюйм', 'дюйм', 'фингер', 'см', 'фингер', 'м', 'фут', 'чейн строительный', 'чейн строительный', 'м', 'фут', 'см', 'дюйм', 'нейл', 'дюйм', 'см', 'нейл');
- function convert: real;
- var a:real;
- begin
- case p of
- 1: a := (11.4 * c) / 1;
- 2: a := (4.5 * c) / 1;
- 3: a := (4.5 * c) / 11.4;
- 4: a := (1 * c) / 11.4;
- 5: a := (11.4 * c) / 4.5;
- 6: a := (1 * c) / 4.5;
- 7: a := (30.48 * c) / 1;
- 8: a := (100 * c) / 1;
- 9: a := (1 * c) / 30.48;
- 10: a := (1 * c) / 100;
- 11: a := (100 * c) / 30.48;
- 12: a := (30.48 * c) / 100;
- 13: a := (5.7 * c) / 1;
- 14: a := (1 * c) / 2.25;
- 15: a := (5.7 * c) / 1;
- 16: a := (2.25 * c) / 5.7;
- 17: a := (5.7 * c) / 2.25;
- 18: a := (2.25 * c) / 1;
- end;
- convert:=a;
- end;
- procedure menuxa;
- begin
- writeln('Обмен');
- for var i := 0 to 17 do
- writeln(i+1, ') ', inUnit[i], ' - ', outUnit[i]);
- writeln;
- end;
- begin
- repeat
- menuxa;
- writeln('Введите пункт: ');
- readln(p);
- if (p < 1) or (p > 18) then writeln('Ошибка, такого пункта нет')
- else
- if (p >= 1) or (p <= 18) then
- begin
- writeln('Исходная величина (', inUnit[p-1], ')');
- readln(c);
- writeln('=',convert,' ',outUnit[p-1]);
- end;
- writeln('1) продолжить');
- writeln('2) закрыть');
- readln(z);
- until z > 1;
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д