5 / 5 / 1
Регистрация: 12.08.2015
Сообщений: 57
1

Перевод единиц измерения информационного объема

17.09.2015, 19:22. Показов 1001. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Написал программу она переводит с больших единиц информационного объема в мелкие нормально ,а обратно не работает. Помогите найти решение. Буду всем благодарен (решения по сокращению кода тоже приветствуются).
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <locale.h>
 
int main(void)
{
    int sys, perv;
    double ch;
    
    setlocale(0, "");
    
    printf("1)Bit\n");
    printf("2)Byte\n");
    printf("3)Kbyte\n");
    printf("4)Mbyte\n");
    printf("5)Gbyte\n");
    printf("Введите число: ");
    scanf("%d", &ch);
    printf("Введите номер его единицы измерения информационного объема: ");
    scanf("%d", &sys);
    printf("Введите номер единицы измерения информационного объема для перевода числа: ");
    scanf("%d", &perv);
    
    if(sys <= perv) {
        for( ; sys<perv; sys++) {
            ch=ch/1024;
        }
        if(sys == 1) ch=(ch*1024)/8;
        printf("Ответ: %.3f", ch);
    }
    if(sys > perv) {
        for( ; sys>perv; sys--) {
            ch=ch*1024;
        }
        if(perv == 1) ch=(ch/1024)*8;
        printf("Ответ: %d", ch);
    }
    
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2015, 19:22
Ответы с готовыми решениями:

Перевод единиц измерения
Теоретическая часовая обьемная производительность компрессора определяется производительностью...

Перевод единиц измерения
Добрый день, Подскажите пожалуйста как организовать перевод единиц измерения. Есть таблица...

Перевод единиц измерения массы
Ребят, прошу помощи. Надо короче написать на C# : Единицы массы пронумерованы следующим образом: 1...

Перевод единиц измерения длины
Составить программу, которая бы по значению переменной Х, означающему некоторую длину в следующих...

5
18 / 11 / 8
Регистрация: 07.09.2013
Сообщений: 63
17.09.2015, 21:00 2
у тебя переменная ch типа double, а ты вводишь ее значение как целочисленное т.е. %d, а надо %f. из за этого не образуется остатка. вроде как то так
0
5 / 5 / 1
Регистрация: 12.08.2015
Сообщений: 57
18.09.2015, 02:53  [ТС] 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <locale.h>
 
int main(void)
{
    int sys, perv;
    int ch;
    
    setlocale(0, "");
    
    printf("1)Bit\n");
    printf("2)Byte\n");
    printf("3)Kbyte\n");
    printf("4)Mbyte\n");
    printf("5)Gbyte\n");
    printf("Введите число: ");
    scanf("%d", &ch);
    printf("Введите номер его единицы измерения информационного объема: ");
    scanf("%d", &sys);
    printf("Введите номер единицы измерения информационного объема для перевода числа: ");
    scanf("%d", &perv);
    
    if(sys < perv) { // Перевод из меньших единиц измерения в большие.
        double ch1 = ch;
        for( ; sys<perv; perv--) {
            ch1=ch1/1024;
        }
        if(sys == 1) ch1=(ch1*1024)/8;
        printf("Ответ: %.10f", ch1);
    }
    if(sys > perv) { // Перевод из больших единиц измерения в меньшие.
        for( ; sys>perv; sys--) {
            ch=ch*1024;
        }
        if(perv == 1)ch=(ch/1024)*8;
        printf("Ответ: %d", ch);
    }
    
    return 0;
}
Решил сам ,но советам по улучшению кода буду рад.
0
1287 / 880 / 254
Регистрация: 30.06.2015
Сообщений: 4,592
Записей в блоге: 51
18.09.2015, 12:11 4
Цитата Сообщение от Гриневич Кирилл Посмотреть сообщение
советам по улучшению кода буду рад.
С 11 по 16 строчку можно сократить так:
C
1
printf("1)Bit\n2)Byte\n3)Kbyte\n4)Mbyte\n5)Gbyte\nВведите число: ");
Но это не самое главное, конечно.
Самое интересное то, что выбран совершенно неверный подход к данной проблеме.
Приведу простой пример.
Запускаю данный код.
"Введите число:"
ввожу - "21" далее приглашение:
"Введите номер его единицы измерения информационного объема:"
Ввожу: "1", что значит - биты. Далее:
"Введите номер единицы измерения информационного объема для перевода числа:"
Ввожу: "2", что значит хочу в байты перевести.
Ответ вылазит такой: "2,625".
А теперь подумаем, а что данное число имеет общего с единицами представления обьёма информации? Правильно! Ничего общего.
Дело в том, что нельзя чисто целочисленную арифметику представлять с помощью чисел с плавающей точкой.
Правильный ответ должен быть такой: "2 байта, 5 битов."
1
5 / 5 / 1
Регистрация: 12.08.2015
Сообщений: 57
18.09.2015, 15:16  [ТС] 5
Конечно спасибо ,но в задача программы выводить именно так. А по поводу вашего примера сокращения кода хочу сказать спасибо(читается понятно в принципе).
0
1287 / 880 / 254
Регистрация: 30.06.2015
Сообщений: 4,592
Записей в блоге: 51
18.09.2015, 18:28 6
Цитата Сообщение от Гриневич Кирилл Посмотреть сообщение
но в задача программы выводить именно так
Просто, может произойти потеря точности при дальнейших преобразованиях вещественного числа и некоторые биты могут быть потеряны, что совершенно не допустимо, с точки зрения информатики, как науки. Потеря битов может привести к потери информации или краху программы.
1
18.09.2015, 18:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2015, 18:28
Помогаю со студенческими работами здесь

Перевод единиц измерения длины
составить программу перевода из мм в м,см,км,дм.или из дм в м,см,м,км.или из км в м,см,дм,мм (все...

Перевод единиц измерения длины в метры
Условие: Написать программу которая бы по введённому номеру единицы измерения(1-дециметр,...

Перевод единиц измерения через оператор switch
Нужно написать программу с использованием оператора Switch. Нужно ввести число, например 15, и...

Как преобразовать перевод единиц измерения в 2003 Excel ?
на скрине видно где надо сделать преобразования ... как преобразовать перевод единиц измерения в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru