В данной задаче пользователь должен ввести два значения: само число и как-либо указать, во что он хочет его перевести (в байты или килобайты). Пусть выбор способа перевода указывается с помощью одного из двух символов. Например, если пользователь введет букву «b», то число будет переводиться в байты, а если букву «k», то в килобайты. Тогда алгоритм решения задачи будет следующим:
- Ввести число.
- Указать направление перевода.
- Если выбран перевод в байты, то надо умножить число на 1024.
- Если выбран перевод в килобайты, то надо разделить число на 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Кб