Avatar
Zbyňa
Člen
Avatar
Zbyňa:10.3.2015 15:08

***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
čistý kód
Avatar
Odpovídá na Zbyňa
Libor Šimo (libcosenior):11.3.2015 8:13

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
Zbyňa
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
Zbyňa:11.3.2015 20:47

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
čistý kód
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Zbyňa
Jan Vargovský:11.3.2015 22:45

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

 
Nahoru Odpovědět 11.3.2015 22:45
Avatar
Odpovídá na Zbyňa
Libor Šimo (libcosenior):12.3.2015 7:42

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
Zbyňa
Člen
Avatar
Zbyňa:12.3.2015 19:02

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
čistý kód
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.