Перевести байты в килобайты или наоборот
Перевести число, введенное пользователем, в байты или килобайты в зависимости от его выбора.
В данной задаче пользователь должен ввести два значения: само число и как-либо указать, во что он хочет его перевести (в байты или килобайты). Пусть выбор способа перевода указывается с помощью одного из двух символов. Например, если пользователь введет букву «b», то число будет переводиться в байты, а если букву «k», то в килобайты. Тогда алгоритм решения задачи будет следующим:
- Ввести число.
- Указать направление перевода.
- Если выбран перевод в байты, то надо умножить число на 1024.
- Если выбран перевод в килобайты, то надо разделить число на 1024.
В данной задаче нельзя оставлять второй случай без проверки, т.е. использовать исключительно ветку else , т.к. пользователь может ввести что угодно. Поэтому надо использовать либо две отдельные ветки if , либо вложенную в else вторую проверку через if . С точки зрения наиболее оптимального кода второй вариант предпочтительнее, т.к. в случае срабатывания первого if второй проверяться не будет.
Данную задачу проще решить с помощью оператор выбора case , а не if .
var
n : word ;
c : char ;
begin
write ( ‘Число: ‘ ) ;
readln ( n ) ;
write ( ‘Перевести в байты(b) или килобайты(k): ‘ ) ;
readln ( c ) ;
if c = ‘b’ then
writeln ( n , ‘Кб = ‘ , n * 1024 , ‘Б’ )
else
if c = ‘k’ then
writeln ( n , ‘Б = ‘ , n / 1024 : 3 : 2 , ‘Кб’ ) ;
end .
// 2-й вариант (через оператор case):
var
n : word ;
c : char ;
begin
write ( ‘Число: ‘ ) ;
readln ( n ) ;
write ( ‘Перевести в байты(b) или килобайты(k): ‘ ) ;
readln ( c ) ;
case c of
‘b’ : writeln ( n , ‘Кб = ‘ , n * 1024 , ‘Б’ ) ;
‘k’ : writeln ( n , ‘Б = ‘ , n / 1024 : 3 : 2 , ‘Кб’ ) ;
end ;
end .
Число: 5000
Перевести в байты ( b ) или килобайты ( k ) : b
5000 Кб = 5120000 Б
Число: 5000
Перевести в байты ( b ) или килобайты ( k ) : k
5000 Б = 4.88 Кб
main ( ) <
int n ;
char c ;
printf ( «Число: » ) ;
scanf ( «%d%*c» ,& n ) ;
printf ( «Перевести в байты (b) или килобайты (k): » ) ;
scanf ( «%c» ,& c ) ;
if ( c == ‘b’ ) printf ( «%d Кб = %d байт» , n , n * 1024 ) ;
else if ( c == ‘k’ ) printf ( «%d байт = %.2f Кб» , n , n / 1024.0 ) ;
printf ( » \n » ) ;
>
// С помощью оператора выбора switch:
main ( ) <
int n ;
char c ;
printf ( «Число: » ) ;
scanf ( «%d%*c» ,& n ) ;
printf ( «Перевести в байты (b) или килобайты (k): » ) ;
scanf ( «%c» ,& c ) ;
switch ( c ) <
case ‘b’ :
printf ( «%d Кб = %d байт» , n , n * 1024 ) ;
break ;
case ‘k’ :
printf ( «%d байт = %.2f Кб» , n , n / 1024.0 ) ;
break ;
>
printf ( » \n » ) ;
>
Число: 10
Перевести в байты ( b ) или килобайты ( k ) : b
10 Кб = 10240 байт
Число: 10000
Перевести в байты ( b ) или килобайты ( k ) : k
10000 байт = 9.77 Кб
Число: 10000
Перевести в байты ( b ) или килобайты ( k ) : k
10000 байт = 9.77 Кб
Число: 45
Перевести в байты ( b ) или килобайты ( k ) : b
45 Кб = 46080 байт
| Использование инструкции «если-иначе» :
алг байты
нач
цел n
сим c
вывод «Число: »
ввод n
вывод «Перевод в байты(б) или килобайты(к): »
ввод c
если c = «б» то
вывод n , «Кб = » , n * 1024 , «Б»
иначе
если c = «к» то
вывод n , «Б = » , n / 1024 , «Кб»
все
все
кон
| Использование инструкции «выбор» :
алг байты
нач
цел n
сим c
вывод «Число: »
ввод n
вывод «Перевод в байты(б) или килобайты(к): »
ввод c
выбор
при c = «б» : вывод n , «Кб = » , n * 1024 , «Б»
при c = «к» : вывод n , «Б = » , n / 1024 , «Кб»
все
кон
Число: 45
Перевод в байты ( б ) или килобайты ( к ) : б
45 Кб = 46080 Б
Число: 1045
Перевод в байты ( б ) или килобайты ( к ) : к
1045 Б = 1.020508 Кб
34
Перевести в байты ( б ) или килобайты ( к ) : б
34816 Б
1000
Перевести в байты ( б ) или килобайты ( к ) : к
0.976562 Кб