LINUX.ORG.RU
решено ФорумTalks

Помогите двоечнику с математикой и C

 ,


0

1

Здрасьте. Помогите двоечнику, а то башка совсем ни бум-бум.

Есть две переменных: min_value, max_value. Даже нет, константы. Меняться они будут нечасто.

Есть третья переменная, условно current_value со значением между min_value и max_value.

Как узнать ПРОЦЕНТ, который current_value составляет в промежутке между min_value и max_value ?

Ну вот например, условно говоря, если min_value=200;max_value=400;current_value=300 - то это 50%

Алгоритм можно на любом языке, C, Пацкаль, Пых - пох.

P.S. если кому интересно - делаю датчик уровня топлива ;)

Спасибо :)

★★★★★

а теперь добавьте к комментам свои любимые ЯП. хоть поржем.

olelookoe ★★★
()
Ответ на: комментарий от peregrine

Константы вообще не меняются. Никогда.

Да ладно. Вот прямо сейчас взял и поменял значение константы.

Значит меняются.

windows10 ★★★★★
() автор топика
Ответ на: комментарий от peregrine

Оно не определяется на основе изменений.

А вот универсальная газовая постоянная и ряд других констант неоднократно меняли значение в результате новых уточнений.

grem ★★★★★
()
Ответ на: комментарий от peregrine

Поменяй как мне число пи.

Чувак, вот честно, ничто на протяжении истории человечества, не менялось так часто, как число пи )))

windows10 ★★★★★
() автор топика
Ответ на: комментарий от peregrine

Значит это не константа.

Пример №1

#!/bin/bash
c=17
while [[ 1 == 1 ]];do
v=$((1 + RANDOM % 10));
echo "Константа = $c, Переменная = $v"
sleep 1;
done

Пример №2

#!/bin/bash
c=25
while [[ 1 == 1 ]];do
v=$((1 + RANDOM % 10));
echo "Константа = $c, Переменная = $v"
sleep 1;
done

В обеих примерах, c - константа, потому что она неизменна в ходе задачи. Но это не значит что я не могу менять ее значение когда мне это необходимо.

windows10 ★★★★★
() автор топика
Ответ на: комментарий от Harald

Не не не, мил человек. Это мое собственное, родное ГБО так сказать. Просто не хочу ставить эти тупые четырехсветодиодные индикаторы. Хочу шоб с процентами, ETA итд, по-хипсторски.

windows10 ★★★★★
() автор топика
Ответ на: комментарий от bormant

Целесообразнее:

int perc=146;
if (low_value < high_value) {

по выводу «146%» можно будет понять, что что-то пошло не так ;-)

В таком случае если low_value будет равняться high_value будет падение программы. Смысл сравнения если min и max в том что если они равны, то current будет 100% по идеи.

V1KT0P ★★
()
Последнее исправление: V1KT0P (всего исправлений: 1)
Ответ на: комментарий от V1KT0P

если low_value будет равняться high_value будет падение программы

если low_value будет равняться high_value, то (low_value < high_value) == false и тело if не выполнится; perc останется 146.

Я понимаю, что время позднее, но не до такой же степени...

bormant ★★★★★
()
Ответ на: комментарий от bormant

Я понимаю, что время позднее, но не до такой же степени…

Заработался, бывает =).

V1KT0P ★★
()
Ответ на: комментарий от grem

Ну а как ты без каста хочешь получить верный результат?

turtle_bazon ★★★★★
()
Ответ на: комментарий от turtle_bazon

(627-355)/((629-355)/100)

ага, норм: сначала выполняем (629-355)/100 и получаем 2, затем (627-355) делим на полученное 2 и получаем 136

Ну а как ты без каста хочешь получить верный результат?

почувствуй разницу: ((627-355)*100)/(629-355) = 27200/274 = 99

он всё равно только целые значения выводит

grem ★★★★★
()
Ответ на: комментарий от reprimand

ответил мне но процитировал другого человека

Виноват.

Nervous ★★★★★
()
Ответ на: комментарий от grem

делим на полученное 2 и получаем 136

Но приоритет при этом ровно тот, который и должен быть.

почувствуй разницу

Но в том выражении, чтобы получить результат, нужно кастовать.

turtle_bazon ★★★★★
()
Ответ на: комментарий от turtle_bazon

Но приоритет при этом ровно тот, который и должен быть.

В данном случае нет.

Но в том выражении, чтобы получить результат, нужно кастовать.

Не нужно. Просто выполнится целочисленное деление без кастов в типы с плавающей точкой.

grem ★★★★★
()

офигеть, лор торт, две страницы обсуждали как считается пропорция :)

Morin ★★★★★
()

не делай датчик уровня топлива.

alwayslate ★★
()
Ответ на: комментарий от windows10

Но в этом коде нет констант. Я не вижу их объявления, подскажу в bash для этого есть специальное слово: readonly

peregrine ★★★★★
()
Ответ на: комментарий от grem

В данном случае нет.

В данном случае приоритет не поможет, даже если он правильный.

Не нужно. Просто выполнится целочисленное деление без кастов в типы с плавающей точкой.

Я же не спорю, что можно так выражения выполнить, чтобы итогово делилось целое на целое. Но это в данном случае можно. А в общем случае если захочется такое проводить, то нужно кастовать.

turtle_bazon ★★★★★
()
Ответ на: комментарий от windows10

Оно вообще никогда не менялось. Даже когда людей не было. Менялась лишь точность приближения к этому числу людьми.

peregrine ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.