Avatar
anub.w
Člen
Avatar
anub.w:

***Bych potřeboval poradit je to takový test z knihy ***
má spočítat index BMI tak že budu počítat s jinými jednotkami jen nevím jestli je to správně

#include<iostream>
using namespace std;                              //stopa = 0.305 metru
int main()
{
        int VyskaVPalcich, VyskaVeStopach, VahaVLibrach;// Vyska v palcich * 0.0254, = vyska v metrech;
                                                        // vaha v librach / 2.2 = vaha v kilogramech;
                                                        // vaha v kilogramech / ctverec vahy v metrech = BMI
        cout << "INDEX BMI PREVOD" << "\n";
        cout << "Enter any key";
        cin.ignore();
        cin.get();
        system("cls");

        cout << "Npiste svoji vysku ve stopach 1 stopa je 0.305 metru" << endl;
        cin >> VyskaVeStopach;
        float StopaNaMetr = VyskaVeStopach * 0.305;
        VyskaVPalcich = StopaNaMetr / 0.0254;
        cout << "Vase vyska v Metrech je" << StopaNaMetr << "\n" << "Vase vyska v Palcich je" << VyskaVPalcich << "\n";
        cout << "Ted napiste svou vahu v librach 1 libra je 2.2 kg" << "\n";
        cin >> VahaVLibrach;
        float VahaNaKilogram = VahaVLibrach / 2.2;
        cout << "Vase vahav kilogramech je" << VahaNaKilogram << "\n";
        cout << "Vas index BMI s prevodem z metru a kilogramu: " << StopaNaMetr / VahaNaKilogram << "\n";
        cout << "vas index BMI s prevodem ze stopy a palce:" << VyskaVeStopach / VahaVLibrach;



        return 0;
}
Odpovědět 10.3.2015 15:08
jakej jazyk?? No ten Kterej baví
Avatar
Odpovídá na anub.w
Libor Šimo (libcosenior):

Pokiaľ to má byť program pre čechoslováka, nechápem prečo používaš cudzie merné jednotky, používaj metre a kg.
Pokiaľ chceš, aby bol program multiregionálny, daj v úvode užívateľovi vybrať jazyk a merné jednotky. Výpočet je jednoduchý - váha v kg / (výška v m)^2. Pre iné merné jednotky použiješ prepočet.

Nahoru Odpovědět  ±0 11.3.2015 8:13
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
anub.w
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
anub.w:

No ono jde hlavně o to že je to úkol z jedné knížky... Takto znělo zadání sorry za okopírování" Napište krátký program který se zeptá na výšku ve stopách a palcích a váhu v librách" pak použít tři proměnné má vypsat BMI (index tělesné hmotnosti) pro výpočet BMI je zapotřebí nejprve konvertovat výšku v palcích na výšku v metrech násobením 0.0254. Poté konvertovat váhu v librách na váhu v Kg dělením 2.2. Konečně spošítat to vysněné BMI dělením váhy v Kg "čtvercem" váhy v metrech . Mám použít symbolické konstanty na vytvoření různých konverzních faktorů takže to mám blbě .
PS nechápu to dělení váhy v Kg čtvercem váhy v metrech .. Boha co to má znamenat :-) nechápu
PSS měl jsem tam též problémy s přetipováním VS hlásilo chybu v tomto kodu jinak kod tgé chyby už nemám sorry

Nahoru Odpovědět 11.3.2015 20:47
jakej jazyk?? No ten Kterej baví
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na anub.w
Jan Vargovský:

Není vzorec na BMI náhodou váha / výška2 ?

 
Nahoru Odpovědět 11.3.2015 22:45
Avatar
Odpovídá na anub.w
Libor Šimo (libcosenior):

Najpr si musíš uvedomiť, že výška sa (asi v anglicku) môže udávať v stopách a palcoch. Jedna stopa má 12 palcov. Napríklad výška je 17 stôp a 6 palcov.
Symbolické konštanty sú makrá bez parametrov a definujú sa pod hlavičkovými súbormi nasledovne:

#include <.....>

#define STOPA 3,281
#define PALEC 39,37
#define LIBRA 2,205

using namespace std;

int main()

Použitie:

cout << "Npiste svoji vysku ve stopach a palcich" << endl;
cin >> VyskaVeStopach;
float MeterStopa = VyskaVeStopach / STOPA;
cout << "Npiste svoji vysku v palcich" << endl;
cin >> VyskaVPalcich;
float MeterPalec = VyskavPalcich / PALEC;
float VyskaVMetroch = MeterStopa + MeterPalec;
....
Editováno 12.3.2015 7:43
Nahoru Odpovědět  +1 12.3.2015 7:42
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
anub.w
Člen
Avatar
anub.w:

Použil jsem většinu kodu ze zdejších tutoriálů tak buďte prosím shovívaví

#include<iostream>
#include<sstream>
#include<conio.h>
#include<locale>
#include <stdexcept>
#include<math.h>

#ifdef __unix__
#define CZ "cs_CZ.utf8"
#else
#define CZ "cs-CZ"
#endif
#define STOPA 3.281
#define PALEC 29.37
#define LIBRA 2.205
using namespace std;

// Vyska v palcich * 0.0254, = vyska v metrech;
// vaha v librach / 2.2 = vaha v kilogramech;
// vaha v kilogramech / ctverec vahy v metrech = BMI
// 1 libra = 0,454 kilogramů
// 1 palec = 2,54 centimetrů   0,025 metrů
// 1 stopa = 30,48 centimetrů  0,305 metrů
double BMI(double Vyska, double Vaha);
double PrevodVyska(double Vyska);
double PrevodVaha(double Vaha);
int main()
{
        try
        {
                locale cz(CZ);
                locale::global(cz);
        }
        catch (std::runtime_error)
        {
                cerr << "Nepodarilo se nastavit ceske prostredi..." << endl;
                return 1;
        }
        cout << "INDEX BMI PREVOD" << "\n";

        bool pokracovat = true;

        while (pokracovat)
        {
                string str;
                stringstream *stream = 0;
                char c;
                double Vyska, Vaha;
                do
                {
                        delete stream;
                        cout << "Napište svou výšku ve stopách a palcich nebo v metrech a centimetrech" << endl;
                        cin >> str;
                        stream = new stringstream(str);
                        *stream >> Vyska;
                }
                while (stream->fail() || stream->get(c));
                do
                {
                        delete stream;
                        cout << "Napište svou váhu v librách nebo v kilogramech" << endl;
                        cin >> str;
                        stream = new stringstream(str);
                        *stream >> Vaha;
                }
                while (stream->fail() || stream->get(c));
                delete stream;
                //volba prevodu (+typ BMI)        i
                cout << "Vyberte jednu z nasledujících možností:" << endl;
                cout << "1 - Výsledek BMI z anglických měrných jednotek" << endl;
                cout << "2 - Výsledek BMI z klasických měrných jednotek" << endl;
                int volba = _getch();
                if (volba == 224)
                        _getch();
                double vysledek = 0;
                bool platnaVolba = true;
                switch (volba)
                {                                                                                                                //váha kg nebo libra / (výška )^2.
                        case '1':
                                vysledek = PrevodVaha(Vaha) / pow(PrevodVyska(Vyska),2);

                                cout << "Vaše výška ve stopách je: " << Vyska <<  endl;
                                cout << "Vaše výška v palcích je: " << Vyska * PALEC << endl;
                                cout << "vaše váha v Librách je: " << Vaha << endl;
                                cout << "Vaše výška v Metrech je: " << PrevodVyska(Vyska) << endl;
                        cout << "vaše váha v kilogramech je: " << PrevodVaha(Vaha) << endl;
                                break;
                        case '2':
                                vysledek = BMI(Vaha, Vyska);
                                cout << "Vaše výška je: " << Vyska << endl;
                                cout << "Vaše váha je: " << Vaha << endl;
                                break;
                        default:
                                platnaVolba = false;
                                break;
                }
                if (platnaVolba)
                {
                        cout << "Výsledek BMI : " << vysledek << endl;

                }

                else
                        cout << "Neplatná volba" << endl;
                // dotaz na pokračování
                cout << "Přejete si zadat další příklad? [a/n]" << endl;
                platnaVolba = false;
                while (!platnaVolba)
                {
                        switch (tolower(_getch()))
                        {
                                case 'a':
                                        pokracovat = true;
                                        platnaVolba = true;
                                        break;
                                case 'n':
                                        pokracovat = false;
                                        platnaVolba = true;
                                        break;
                                case 224:
                                        _getch();
                                default:
                                        cout << "Neplatná volba, zadejte prosím a/n" << endl;
                                        break;
                        }
                }
        }
        cout << "Děkuji za použití kalkulačky, aplikaci ukončíte libovolnou klávesou." << endl;
        _getch();
        return 0;
}
double BMI(double Vyska, double Vaha)
{
        double vysledek;

        vysledek = Vaha / pow(Vyska, 2);
        return vysledek;
}
// PrevodVaha(Vaha) / pow(Vyska,PrevodVyska(Vyska));
double PrevodVyska(double Vyska)
{
        double VyskaStopa;
        double VyskaPalec;
        double VyskaVMetrech;
        VyskaStopa = Vyska / STOPA;
        VyskaPalec = Vyska / PALEC;
        VyskaVMetrech = VyskaStopa + VyskaPalec;
        return VyskaVMetrech;
}
double PrevodVaha(double Vaha)
{
        double VahaKg;
        VahaKg = Vaha / LIBRA;
        return VahaKg;
}

PS: Doufám že teď je to už dobře, jinak chtěl jsem tam prsknout i fce

Nahoru Odpovědět 12.3.2015 19:02
jakej jazyk?? No ten Kterej baví
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.