Всім привіт! Сьогодні попрактикуємось у програмуванні на мові Сі, а саме напишемо консольну програму для розрахунку добової норми білків. Така програма була б корисна людям, які тренуються, стежать за своїм харчуванням або просто хочуть краще розуміти, скільки білка потрібно їхньому організму протягом дня.
На перший погляд задача здається досить простою: користувач вводить необхідні дані, програма виконує певні обчислення і виводить результат. Але навіть така невелика програма дає нам можливість попрактикувати одразу кілька важливих речей у програмуванні на Сі: отримання даних від користувача, роботу зі змінними, математичними операціями, умовами та виведенням результату. При цьому ми не будемо одразу переходити до написання коду.
Спочатку спробуємо розкласти задачу на окремі кроки та визначити, які саме дані потрібні нашій програмі і як вона повинна їх обробляти. Такий підхід є важливою частиною програмування: перш ніж писати код, потрібно зрозуміти, яку саме проблему ми вирішуємо і за яким алгоритмом будемо це робити. Для початку продумаємо, що наша програма має робити, які дані отримувати від користувача та який результат повертати. А вже після цього поступово перенесемо наші ідеї в код і подивимося, як реалізувати їх засобами мови Сі.
Розрахунок денної норми білків
Денна норма білка розраховується множенням ваги тіла в кілограмах на коефіцієнт від 0,8 до 2,2 грама залежно від рівня активності та мети. Базові норми за цілями приблизно такі:
- Малорухливий спосіб життя: 0,8–1,0 г на 1 кг ваги (базова потреба здоров'я)
- Підтримка форми та легкі тренування: 1,2–1,6 г на 1 кг ваги
- Набір м'язової маси: 1,6–2,0 г на 1 кг ваги
- Схуднення (зі збереженням м'язів): 1,8–2,2 г на 1 кг ваги.
Приклад розрахунку для людини вагою 70 кг за умови помірних тренувань (1,6 г/кг):
70 * 1,6 = 112 грамів білка на день
Отже, наша майбутня програма має отримувати такі дані користувача: маса тіла в кілограмах і норму (грам білків на кілограм маси тіла) за якою буде рахуватись результат. Далі значення норми множиться на масу тіла і результат виводиться в консоль.
Реалізація
Для початку створимо кістяк нашої програми і просто виведемо текст привітання на екран:
#pragma warning(disable : 4996)#include <stdio.h>int main() {system("chcp 65001 > nul");printf("### ПРОГРАМА РОЗРАХУНКУ ДОБОВОЇ НОРМИ БІЛКІВ ###\n\n");return 0;}
Додамо після тексту привітання код для вводу користувачем маси тіла:
printf("Введіть масу вашого тіла: ");int body_mass;scanf("%d", &body_mass);printf("Введено масу: %d\n\n", body_mass);
Далі користувачу треба обрати базову норму для розрахунку. Для цього виводимо текст з роз'ясненнями, після чого очікуємо вводу від користувача:
printf("Можливі базові норми, в залежності від вашої мети:\n");printf(" a. Базова потреба здоров'я (малорухливий спосіб життя) 1.0 гр/кг\n");printf(" b. Підтримка форми та легкі тренування 1.6 гр/кг\n");printf(" c. Набір м'язової маси 2.2 гр/кг\n");printf(" d. Схуднення (зі збереженням м'язів) 1.8 гр/кг\n\n");printf("Оберіть базову норму (a, b, c або d): ");char rate;scanf(" %c", &rate);printf("Обрано норму: %c", rate);
Тут програма отримує від користувача символ, завдяки якому програма встановить необхідний коефіцієнт. Для цього скористаємось оператором if else ось так:
float koef;if (rate == 'a') {koef = 1.0f;}else if (rate == 'b') {koef = 1.6f;}else if (rate == 'c') {koef = 2.2f;}else if(rate == 'd') {koef = 1.8f;}printf(", що дорівнює %.2f грам білка на кілограм маси тіла.\n", koef);
Ми створили змінну для зберігання коефіцієнту розрахунку і в залежності від обраного режиму записали в неї значення. Тепер ми маємо всі необхідні дані для того, щоб розрахувати результат, що і робимо:
float intake = body_mass * koef;printf("РЕЗУЛЬТАТ: %.2f грам білка на день.", intake);
Повний код програми виглядає ось так:
#pragma warning(disable : 4996)#include <stdio.h>int main() {system("chcp 65001 > nul");printf("### ПРОГРАМА РОЗРАХУНКУ ДОБОВОЇ НОРМИ БІЛКІВ ###\n\n");printf("Введіть масу вашого тіла: ");int body_mass;scanf("%d", &body_mass);printf("Введено масу: %d\n\n", body_mass);printf("Можливі базові норми, в залежності від вашої мети:\n");printf(" a. Базова потреба здоров'я (малорухливий спосіб життя) 1.0 гр/кг\n");printf(" b. Підтримка форми та легкі тренування 1.6 гр/кг\n");printf(" c. Набір м'язової маси 2.2 гр/кг\n");printf(" d. Схуднення (зі збереженням м'язів) 1.8 гр/кг\n\n");printf("Оберіть базову норму (a, b, c або d): ");char rate;scanf(" %c", &rate);printf("Обрано норму: %c", rate);float koef;if (rate == 'a') {koef = 1.0f;}else if (rate == 'b') {koef = 1.6f;}else if (rate == 'c') {koef = 2.2f;}else if(rate == 'd') {koef = 1.8f;}printf(", що дорівнює %.2f грам білка на кілограм маси тіла.\n", koef);float intake = body_mass * koef;printf("РЕЗУЛЬТАТ: %.2f грам білка на день.", intake);return 0;}
Наша програма готова, можна компілювати і запускати ;-)
