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

Задача

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

Пояснение к задаче и алгоритм решения

В данной задаче пользователь должен ввести два значения: само число и как-либо указать, во что он хочет его перевести (в байты или килобайты). Пусть выбор способа перевода указывается с помощью одного из двух символов. Например, если пользователь введет букву "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.

Пример(ы) выполнения программы на языке Pascal

Число: 5000
Перевести в байты(b) или килобайты(k): b
5000Кб = 5120000Б

Число: 5000
Перевести в байты(b) или килобайты(k): k
5000Б = 4.88Кб

Исходный код на языке программирования C

#include <stdio.h>
 
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 <stdio.h>
 
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");
}

Пример(ы) выполнения программы на языке C

Число: 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))

Пример(ы) выполнения программы на языке Python

Число: 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

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

Пример(ы) выполнения программы на языке Basic

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

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

Тема

Ветвления

Уровень сложности

Простой

Дата публикации