Перевести байты в килобайты или наоборот

Перевести число, введенное пользователем, в байты или килобайты в зависимости от его выбора.

В данной задаче пользователь должен ввести два значения: само число и как-либо указать, во что он хочет его перевести (в байты или килобайты). Пусть выбор способа перевода указывается с помощью одного из двух символов. Например, если пользователь введет букву «b», то число будет переводиться в байты, а если букву «k», то в килобайты. Тогда алгоритм решения задачи будет следующим:

  1. Ввести число.
  2. Указать направление перевода.
  3. Если выбран перевод в байты, то надо умножить число на 1024.
  4. Если выбран перевод в килобайты, то надо разделить число на 1024.

В данной задаче нельзя оставлять второй случай без проверки, т.е. использовать исключительно ветку else, т.к. пользователь может ввести что угодно. Поэтому надо использовать либо две отдельные ветки if, либо вложенную в else вторую проверку через if. С точки зрения наиболее оптимального кода второй вариант предпочтительнее, т.к. в случае срабатывания первого if второй проверяться не будет.

Данную задачу проще решить с помощью оператор выбора case, а не if.

Pascal

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Кб
Язык Си

#include

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:

#include

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 Кб
Python

n = int(input("Число: "))
c = input("Перевести в байты (b) или килобайты (k): ")
if c == 'b':
print("%dКб = %d байт" % (n, n*1024))
elif c == 'k':
print("%d байт = %.2fКб" % (n, n/1024))



Число: 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Кб
Basic-256

input n
input "Перевести в байты(б) или килобайты(к): ", c$
if c$ = "б" then
print n*1024 + "Б"
else
if c$ = "к" then print n/1024 + "Кб"
endif



34
Перевести в байты(б) или килобайты(к): б
34816Б

1000
Перевести в байты(б) или килобайты(к): к
0.976562Кб

Оцените статью
Добавить комментарий