Cześć, moglibyście mi powiedzieć czy ten program jest dobrze napisany? Mam na studiach zrobić projekt o obliczaniu BMI i nie tylko, więc zrobiłem to tylko jestem kompletnie początkującym więc nie mam pewności czy jest to dobrze i w miarę optymalnie napisany program. Będę wdzięczny za pomoc.
Treść zadania:
Cel: Nauka implementacji prostych programów liniowych, nauka implementacji programów z warunkiem,
poznanie różnych typów zmiennych w języku C, opracowanie pierwszego użytkowego programu
BMI Body mass index – jest to wskaźnik pozwalający określić czy występuje zagrożenie chorobami związanymi z
nadwagą oraz otyłością (np. nowotwory, cukrzyca, nadciśnienie)
Formuła Mifflina-St Jeor’a pozwala obliczyć BMR (Basal Metabolic Rate) na podstawie masy ciała, informacji o płci,
wzroście i wieku użytkownika. W języku polskim BMR oznacza się jako PPM (Podstawowa Przemiana Materii) i
wskazuje on najmniejsze dzienne zapotrzebowanie kaloryczne, która pozwala na utrzymanie podstawowych funkcji
życiowych.
Szacuje się, że aż 25% energii PPM zużywane jest na pracę układu nerwowego, podczas gdy zaledwie niespełna 7%
zużywane jest na pracę serca.
BAF – współczynnik aktywności fizycznej jest czynnikiem skalującym BMR. Określa się go na podstawie dziennej
aktywności fizycznej. Jego wartości są następujące (źródło):
Sedentary = 1.2 (little or no exercise, desk job)
Lightly active = 1.375 (light exercise/ sports 1-3 days/week)
Moderately active = 1.55 (moderate exercise/ sports 6-7 days/week)
Very active = 1.725 (hard exercise every day, or exercising 2 xs/day)
Extra active = 1.9 (hard exercise 2 or more times per day, or training for
marathon, or triathlon, etc.
Dzienne zapotrzebowanie kaloryczne (TDEE) równe jest BMR x BAF
Żeby schudnąć bądź przytyć należy w pierwszym kroku odjąć lub dodać 7.5% zapotrzebowania kalorycznego, a
następnie po upływie dwóch tygodni należy wykonać ponowną kalkulację. Pamiętać należy, iż zdrowe tempo zmiany
wagi to różnica 0.5 kg/tydzień.
W zbilansowanej diecie należy spożywać pomiędzy 0.9g a 1.5g białka na kilogram masy ciała (przyjmij do obliczeń
1.1g/kg). Węglowodany powinny stanowić 50% zapotrzebowania energetycznego, a tłuszcze powinny stanowić
pozostałość.
Napisz program w języku C, który pozwoli obliczyć dzienne zapotrzebowanie energetyczne dla użytkownika według
wzoru Mifflina-St Jeor’a oraz wskazanego przez niego BAF (Basic Activity Factor). Program na podstawie wskaźnika
BMI użytkowania zdecyduje o tym, czy należy nie modyfikować TDEE lub czy należy odjąć/dodać 7.5%
zapotrzebowania energetycznego. Program ma wyświetlić w konsoli następujące informacje:
- Wartość wskaźnika BMI
- Informację tekstową z przedziałami BMI
- Notkę informującą o zależności pomiędzy nieprawidłowym BMI a zachorowaniem na nowotwory
- BMR w kcal
- TDEE w kcal w 3 wariantach (schudnięcie/utrzymanie wagi/przytycie)
- Podział na makroskładniki (podobnie jak w punkcie 6)
Mój projekt (z tego co widzę to źle mi oblicza BMI jednak nie wiem, gdzie popełniłem błąd, bo wzoru użyłem dobrego):
#include <stdio.h>
int main()
{
int masa;
int wzrost;
int wiek;
float BMI;
char plec;
float BMR;
float TDEE;
float bialka;
float weglowodany;
float tluszcze;
float bialkakcal;
float weglowodanykcal;
float tluszczekcal;
int tryb_zycia;
printf("Podaj mase ciala w kg:\n");
scanf_s("%i", &masa);
printf("Podaj swoj wzrost w cm:\n");
scanf_s("%i", &wzrost);
printf("Podaj swoj wiek:\n");
scanf_s("%i", &wiek);
BMI = masa / ((wzrost/100) * (wzrost/100));
printf("Twoje BMI wynosi: %f", BMI);
if (BMI < 16)
{
printf("\nTwoje BMI jest mniejsze niz 16\nMasz niedowage, jestes w kategorii wyglodzenia");
}
if (BMI >= 16 && BMI < 17)
{
printf("\nTwoje BMI jest mniejsze niz 17\n Jestes w kategorii wychudzenia");
}
if (BMI >= 17 && BMI < 18.5)
{
printf("\nTwoje BMI jest mniejsze niz 18,5\n Jestes w kategorii niedowagi");
}
if (BMI >= 18.5 && BMI < 25)
{
printf("\nTwoje BMI jest mniejsze niz 25 i wieksze lub rowne 18,5\n Masz pozadana mase ciala");
}
if (BMI >= 25 && BMI < 30)
{
printf("\nTwoje BMI jest wieksze lub rowne 25\n Masz nadwage");
}
if (BMI >= 30 && BMI < 35)
{
printf("\nTwoje BMI jest wieksze lub rowne 30\n Masz otylosc 1 stopnia");
}
if (BMI >= 35 && BMI < 40)
{
printf("\nTwoje BMI jest wieksze lub rowne 35\n Masz otylosc 2 stopnia");
}
if (BMI >= 40)
{
printf("\nTwoje BMI jest wieksze lub rowne 40\n Masz otylosc 3 stopnia");
}
printf("\nNadwaga i otylosc sa uznanymi czynnikami zwiekszajacymi ryzyko\n zachorowanie na choroby ukladu krazenia oraz narzadu ruchu.\n Badania ostatnich lat wykazaly, ze zwiekszaja takze ryzyko rozwoju chorob\n nowotworowych. Wiele badan prowadzonych w ostatnich latach udokumentowalo zwiazek miedzy otyloscia,\n a wystapieniem choroby nowotworowej. Wedlug raportu World Cancer Research Fund otylosc zwieksza\n ryzyko rozwoju wielu nowotworow przewodu pokarmowego, takich jak: rak jelita grubego, gruczolakorak\n przelyku i wpustu, rak trzustki i pecherzyka zolciowego oraz rak watroby. W celu zmniejszenia ryzyka\n wystapienia choroby nowotworowej nalezy zastosowac odpowiednia profilaktyke i leczenie otylosci.\n Najbardziej skuteczna metoda leczenia skrajnej otylosci jest chirurgia bariatryczna.");
printf("\nJestes kobieta, czy mezczyzna (Podaj odpowiedz K lub M)");
scanf_s(" %c", &plec);
if (plec == 'k' || plec == 'K')
{
BMR = ((9.99 * masa) + (6.25 * wzrost) - (4.92 * wiek) - 161);
printf("\nTwoje BMR wynosi %f kcal", BMR);
}
if (plec == 'm' || plec == 'M')
{
BMR = ((9.99 * masa) + (6.25 * wzrost) - (4.92 * wiek) + 5);
printf("\nTwoje BMR wynosi %f kcal", BMR);
}
printf("\nPodaj cyfre odpowiadajaca twojemu trybowi zycia:\n1.Siedzacy(Sedentary)- male ilosci lub calkowity brak cwiczen\n2.Lekko aktywny(Lightly active)- lekkie cwiczenia 1-3 razy na tydzien\n3.Umiarkowanie aktywny(Modarately active)- umiarkowane cwiczenia 6-7 razy w tygodniu\n4.Bardzo aktywny(Very active)- ciezkie cwiczenia kazdego dnia lub trenowanie 2 razy na dzien\n5.Ekstra aktywny(Extra active)- ciezkie cwiczenia 2 lub wiecej razy na dzien lub trenowanie do maratonu thriatlonu\n");
scanf_s("%i", &tryb_zycia);
if (tryb_zycia == 1)
{
TDEE = 1.2 * BMR;
}
if (tryb_zycia == 2)
{
TDEE = 1.375 * BMR;
}
if (tryb_zycia == 3)
{
TDEE = 1.55 * BMR;
}
if (tryb_zycia == 4)
{
TDEE = 1.725 * BMR;
}
if (tryb_zycia == 5)
{
TDEE = 1.9 * BMR;
}
printf("Twoje TDEE wynosi %f kcal\n", TDEE);
if (BMI < 18.5)
{
TDEE = TDEE + (TDEE * 0.075);
printf("Masz niedowage w stosunku do prawidlowej masy ciala\n Zwieksz dzienne zapotrzebowanie kaloryczne TDEE do %f kcal\n", TDEE);
printf("Wroc za 2 tygodnie by sprawdzic swoje postepy\n Pamietaj ze zdrowe tempo zmiany wagi to roznica 0,5 kg na tydzien");
}
if (BMI >= 25)
{
TDEE = TDEE - (TDEE * 0.075);
printf("Masz nadwage w stosunku do prawidlowej masy ciala\n Zmniejsz dzienne zapotrzebowanie kaloryczne TDEE do %f kcal\n", TDEE);
printf("Wroc za 2 tygodnie by sprawdzic swoje postepy\n Pamietaj ze zdrowe tempo zmiany wagi to roznica 0,5 kg na tydzien");
}
if (BMI >= 18.5 && BMI < 25)
{
printf("Masz poprawną masę ciała trzymaj sie aktualnego TDEE\n");
printf("Wroc za 2 tygodnie by zobaczyc czy twoje zapotrzebowanie kaloryczne musi ulec zmianie");
}
bialka = masa * 1.1;
bialkakcal = bialka * 4;
weglowodany = (TDEE / 2) / 4;
weglowodanykcal = weglowodany * 4;
tluszczekcal = TDEE - bialkakcal - weglowodanykcal;
tluszcze = tluszczekcal / 9;
printf("\nIlosc makroskladnikow jakie powinno sie dostarczac do organizmu, zakladajac ze\n 1g bialka zapewnia 4 kcal, 1g tluszczu zapewnia 9kcal, 1g weglowodanow zapewnia 4kcal:\n bialka- %f g (%f kcal)\nweglowodany- %f g (%f kcal)\ntluszcze- %f g (%f kcal)\n", bialka, bialkakcal, weglowodany, weglowodanykcal, tluszcze, tluszczekcal);
return 0;
}