Суббота, 27 Апреля 2024, 18:26

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Задача (if-else)
Задача
rayman30011Дата: Пятница, 20 Ноября 2015, 08:53 | Сообщение # 1
был не раз
Сейчас нет на сайте
Вася работает программистом и получает 50$ за каждые 100 строк кода. За каждое третье опоздание Васю штрафуют на 20$. Реализовать меню:
- пользователь вводит желаемый доход Васи и количество опозданий, посчитать, сколько строк кода ему надо написать
- пользователь вводит количество строк кода, написанное Васей и желаемый объем зарплаты. Посчитать, сколько раз Вася может опоздать
- пользователь вводит количество строк кода и количество опозданий, определить, сколько денег заплатят Васе и заплатят ли вообще.

Ребят помогите, я въехать не могу. Заранее спасибо
GudleifrДата: Пятница, 20 Ноября 2015, 08:59 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
Цитата rayman30011 ()
Ребят помогите, я въехать не могу.
А не надо в интернетах вместо школы сидеть...
Откуда мы тут знаем, как Вам учитель объяснял, что надо делать? Какие средства велел использовать? В чем, наконец, проблема: в "меню" или в "Васе"?


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
rayman30011Дата: Пятница, 20 Ноября 2015, 09:13 | Сообщение # 3
был не раз
Сейчас нет на сайте
Gudleifr, проблема в "посчитать", хотя бы первое. Дальше сам разберусь.
Цитата
Какие средства велел использовать
что ты имел введу под этим?
Цитата
А не надо в интернетах вместо школы сидеть...
В школе Си не учат. Я учусь в вечерке.
GudleifrДата: Пятница, 20 Ноября 2015, 09:35 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
Цитата rayman30011 ()
проблема в "посчитать"

По условию задачи: Доход = 50 * Строки / 100 - 20 * Опоздания
1-я задача: Дано: Доход и Опоздания. Найти Строки.
Строки = 100 / 50 * (Доход - 20 * Опоздания).
Цитата rayman30011 ()
что ты имел введу под этим?

Ну, как бы, в этом задании сами расчеты очевидны, а, вот, как это вывести на дисплей, сильно зависит от того, какая у Вас учебная конфигурация компьютера.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
rayman30011Дата: Пятница, 20 Ноября 2015, 09:44 | Сообщение # 5
был не раз
Сейчас нет на сайте
Gudleifr, я тоже изначально так сделал, НО за каждое третье опоздание его штрафуют, а не за каждое. Вот в это я въехать не могу(почему я это в первом посте не написал? хз)

Добавлено (20 ноября 2015, 09:44)
---------------------------------------------
Gudleifr,

Цитата
По условию задачи: Доход = 50 * Строки / 100 - 20 * Опоздания
1-я задача: Дано: Доход и Опоздания. Найти Строки.
Строки = 100 / 50 * (Доход - 20 * Опоздания).
Если бы так...
GudleifrДата: Пятница, 20 Ноября 2015, 09:50 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
rayman30011, виноват, просмотрел.

По условию задачи: Доход = 50 * Строки / 100 - 20 * Опоздания / 3
1-я задача: Дано: Доход и Опоздания. Найти Строки.
Строки = 100 / 50 * (Доход - 20 * (Опоздания / 3)).

Спасибо FlyOfFly, в последней строке нужны скобки, чтобы не поделить (20 * Опоздания) / 3.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Пятница, 20 Ноября 2015, 11:58
rayman30011Дата: Пятница, 20 Ноября 2015, 10:05 | Сообщение # 7
был не раз
Сейчас нет на сайте
Gudleifr, по такой формуле ты считаешь какой штраф за одно опоздание(20 * опоздания / 3). Если я введу одно опоздание Васю оштрафуют на 6.66$. Но мне нужно выплачивать штраф именно за каждое 3 опоздание. То есть если я введу 2 опоздания - Васю не оштрафуют. Если введу 5 опозданий - Васю оштрафуют на 20$ и т.д.

Добавлено (20 ноября 2015, 10:05)
---------------------------------------------
Gudleifr, как то надо реализовать через if-else

GudleifrДата: Пятница, 20 Ноября 2015, 10:06 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
rayman30011, в языке C, если переменная объявлена как целочисленная (int), то при делении результат будет обрезаться (не округляться) до целого.
5 / 3 = 1.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Пятница, 20 Ноября 2015, 10:06
rayman30011Дата: Пятница, 20 Ноября 2015, 10:19 | Сообщение # 9
был не раз
Сейчас нет на сайте
Gudleifr,
Код
int main()
{
    int dohod;
    int opozdania;

    cin >> dohod;
    cin >> opozdania;

    cout << 100 / 50 * (dohod - 20 * opozdania / 3) << endl;

    system("PAUSE");
    return 0;
}

вводим доход 200, опоздания 2. По задаче мы должны получить 400 строк
Цитата
Строки = 100 / 50 * (Доход - 20 * Опоздания / 3).

по такой формуле я получаю 374.
Нужно как-то проверять, а я хз как можно проверить.


Сообщение отредактировал rayman30011 - Пятница, 20 Ноября 2015, 10:20
GudleifrДата: Пятница, 20 Ноября 2015, 10:25 | Сообщение # 10
почти ветеран
Сейчас нет на сайте
Цитата rayman30011 ()
По задаче мы должны получить 400 строк
Можно считать и в сотнях
strok = (strok + 99) / 100 * 100;

Цитата rayman30011 ()
а я хз как можно проверить.

Вывести все промежуточные результаты:

opozdania / 3
20 * opozdania / 3
dohod - 20 * (opozdania / 3)


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Пятница, 20 Ноября 2015, 11:59
rayman30011Дата: Пятница, 20 Ноября 2015, 10:51 | Сообщение # 11
был не раз
Сейчас нет на сайте
Gudleifr,
Цитата
opozdania / 3
20 * opozdania / 3
dohod - 20 * opozdania / 3
то, что надо. Ща будем будем разбираться как это работает.
FlyOfFlyДата: Пятница, 20 Ноября 2015, 11:38 | Сообщение # 12
заслуженный участник
Сейчас нет на сайте
Цитата Gudleifr ()
Строки = 100 / 50 * (Доход - 20 * floor(Опоздания / 3)).

может так, для floor надо math.h подключить


Сообщение отредактировал FlyOfFly - Пятница, 20 Ноября 2015, 11:39
GudleifrДата: Пятница, 20 Ноября 2015, 11:39 | Сообщение # 13
почти ветеран
Сейчас нет на сайте
FlyOfFly, нет, C сам умеет делить нацело.

Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
FlyOfFlyДата: Пятница, 20 Ноября 2015, 11:44 | Сообщение # 14
заслуженный участник
Сейчас нет на сайте
Цитата Gudleifr ()
FlyOfFly, нет, C сам умеет делить нацело.

все равно, floor нужен для округление в меньшею сторону, а то при 2/3=1 будет или ты про сам floor
GudleifrДата: Пятница, 20 Ноября 2015, 11:46 | Сообщение # 15
почти ветеран
Сейчас нет на сайте
FlyOfFly, целочисленная арифметика C не умеет округлять, она только обрезает. Это сделано для совместимости с %.

A = A / B * B + A % B

Точнее, так работают большинство процессоров, а C нагло пользуется.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Пятница, 20 Ноября 2015, 11:47
FlyOfFlyДата: Пятница, 20 Ноября 2015, 11:47 | Сообщение # 16
заслуженный участник
Сейчас нет на сайте
Цитата Gudleifr ()

A = A / B * B + A % B

а ясно, ну тогда можно просто написать
Цитата Gudleifr ()
Строки = 100 / 50 * (Доход - 20 * (int)(Опоздания / 3)).

на всякий случай, хотя может в C даже int не надо писать, ну все равно нужно Опаздание/3 нужно писать в скобках


Сообщение отредактировал FlyOfFly - Пятница, 20 Ноября 2015, 11:49
GudleifrДата: Пятница, 20 Ноября 2015, 11:58 | Сообщение # 17
почти ветеран
Сейчас нет на сайте
Цитата FlyOfFly ()
нужно Опаздание/3 нужно писать в скобках
Да, я так спешил признать ошибку, что забыл про них. Но (int) не нужен.
Исправил выше.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
Форум игроделов » Программирование » C/C++ » Задача (if-else)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг