Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Czy ten program jest w miarę poprawny?


Rekomendowane odpowiedzi

Opublikowano

Cześć. Niedawno zacząłem uczyć się C++ i zrobiłem taki mini-kalkulator konsolowy, który przelicza jednostki powierzchni i objętośći.

Chciałbym się dowiedzieć, czy jest on dobry i czy dało się to rozwiązać w jakiś bardziej skompresowany sposób oraz jakiej powinienem użyć tutaj pętli, aby na końcu była opcja powrotu do początku? Nie chcę gotowego rozwiązania, proszę tylko o jakieś sugestie, żebym sam to zrobił :)

#include <iostream>
#include <cstdlib>

using namespace std;
int main()
{

 int kalk;
 int jednostka1 , jednostka2;
 int w;

 float liczba , wynik , ilosc;

  {


    cout << " " << endl;
    cout << "Co chcesz przeliczac?" << endl;
    cout << "Wpisz:" << endl;
    cout << "1 - jezeli chcesz przeliczac jednostki powierzchni" << endl;
    cout << "2 - jezeli chcesz przeliczac jednostki pojemnosci" << endl;
    cout << "Twoj wybor: ";
    cin >> kalk;

    if(kalk==1)
        {


            cout << " " << endl;
            cout << "Przelicznik miar powirzchni" << endl;
            cout << " " << endl;
            cout <<"Wpisz i zatwierdz enterem:" << endl;
            cout << "1 - zeby przeliczyc z milimetrow kwadratowych...  [mm2]" << endl;
            cout << "2 - zeby przeliczyc z centymetrow kwadratowych... [cm2]" << endl;
            cout << "3 - zeby przeliczyc z decymetrow kwadratowych...  [dm2]"<< endl;
            cout << "4 - zeby przeliczyc z metrow kwadratowych...      [m2]"<< endl;
            cout << "5 - zeby przeliczyc z arow...                     [a]" << endl;
            cout << "6 - zeby przeliczyc z hektarow...                 [ha]" << endl;
            cout << "Wybrana jednostka: ";
            cin >> jednostka1;
            cout << " " << endl;
            cout << "Wpisz ilosc (bez jednostki): ";
            cin >> liczba ;
            cout << " " << endl;
            cout << "Wpisz:" << endl;
            cout << "1 - ...na milimetry kwadratowe    [mm2]" << endl;
            cout << "2 - ...na centymetry kwadratowe   [cm2]" << endl;
            cout << "3 - ...na decymetry kwadratowe    [dm2]" << endl;
            cout << "4 - ...na metry kwadratowe        [m2]" << endl;
            cout << "5 - ...na ary                     [a]" << endl;
            cout << "6 - ...na hektary                 [ha]" << endl;
            cout << "Wybrana jednostka: ";
            cin >> jednostka2;
            cout << " " << endl;

            if(jednostka1==1) //milimetry2
            {
                switch (jednostka2)
                {
                    case 1:
                        cout << "Chcesz przeliczac milimetry na milimetry?" << endl;
                        break;
                    case 2:
                        {float wynik = liczba * 0.01;
                        cout << liczba << " mm2 to " << wynik << " cm2." << endl;
                        break;}
                    case 3:
                        {float wynik = liczba * 0.001;
                        cout << liczba << " mm2 to " << wynik << " dm2." << endl;
                        break;}
                    case 4:
                        {float wynik = liczba *  0.000001;
                        cout << liczba << " mm2 to " << wynik << " m2." << endl;
                        break;}
                    case 5:
                        {
                            float wynik = liczba * 0.000000001;
                            cout << liczba << " mm2 to " << wynik << " arow." << endl;
                            break;
                        }
                    case 6:
                        {
                            cout << "Mind blow. Po co przeliczac mm2 na hektary?  " << endl;
                            break;
                        }
                    default:
                        cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
                        break;
                }
            }

            if(jednostka1==2)
            {
                switch (jednostka2)
                {
                    case 1:
                        {int wynik = liczba * 100;
                        cout << liczba << " cm2 to " << wynik << " mm2." << endl;
                        break;}
                    case 2:
                        cout << "Chcesz przeliczac centymetry na centymetry?" << endl;
                        break;
                    case 3:
                        {float wynik = liczba * 0.01;
                        cout << liczba << " cm2 to " << wynik << " dm2." << endl;
                        break;}
                    case 4:
                        {float wynik = liczba *  0.0001;
                        cout << liczba << " cm2 to " << wynik << " m2." << endl;
                        break;}
                    case 5:
                        {float wynik = liczba * 0.000001;
                            cout << liczba << " cm2 to " << wynik << " arow." << endl;
                            break;}
                    case 6:
                        {float wynik = liczba * 0.00000001;
                            cout << liczba << " cm2 to " << wynik << " hektarow." << endl;
                            break;}
                    default:
                        cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
                        break;

                }

            }

            if(jednostka1==3)
            {
                switch (jednostka2)
                {
                    case 1:
                        {unsigned int wynik = liczba * 1000;
                        cout << liczba << " dm2 to " << wynik << " mm2." << endl;
                        break;}
                    case 3:
                        cout << "Chcesz przeliczac decymetry na decymetry?" << endl;
                        break;
                    case 2:
                        {unsigned int wynik = liczba * 100;
                        cout << liczba << " dm2 to " << wynik << " cm2." << endl;
                        break;}
                    case 4:
                        {float wynik = liczba *  0.01;
                        cout << liczba << " dm2 to " << wynik << " m2." << endl;
                        break;}
                    case 5:
                        {
                            float wynik = liczba * 0.0001;
                            cout << liczba << " dm2 to " << wynik << " arow." << endl;
                            break;
                        }
                    case 6:
                        {
                            float wynik = liczba * 0.000001;
                            cout << liczba << " dm2 to " << wynik << " hektarow." << endl;
                            break;
                        }
                    default:
                        cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
                        break;
                }
            }



            if(jednostka1==4)
            {
                switch (jednostka2)
                {
                    case 1:
                        {unsigned int wynik = liczba * 1000000;
                        cout << liczba << " m2 to: " << wynik << " mm2." << endl;
                        break;}
                    case 4:
                        cout << "Chcesz przeliczac metry na metry?" << endl;
                        break;
                    case 2:
                        {unsigned int wynik = liczba * 10000;
                        cout << liczba << " m2 to: " << wynik << " cm2." << endl;
                        break;}
                    case 3:
                        {unsigned int wynik = liczba *  100;
                        cout << liczba << " m2 to: " << wynik << " dm2." << endl;
                        break;}
                    case 5:
                        {
                            float wynik = liczba * 0.01;
                            cout << liczba << " m2 to " << wynik << " arow." << endl;
                            break;
                        }
                    case 6:
                        {
                            float wynik = liczba * 0.0001;
                            cout << liczba << " m2 to " << wynik << " hektarow." << endl;
                            break;
                        }
                    default:
                        cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
                        break;

                }
            }

            if(jednostka1==5)
            {
                switch (jednostka2)
                {
                    case 1:
                        {unsigned int wynik = liczba * 100000000;
                        cout << liczba << " arow to: " << wynik << " mm2." << endl;
                        break;}
                    case 4:
                        {unsigned int wynik = liczba * 100;
                        cout << liczba << " arow to: " << wynik << " m2." << endl;
                        break;}
                    case 2:
                        {unsigned int wynik = liczba * 1000000;
                        cout << liczba << " arow to: " << wynik << " cm2." << endl;
                        break;}
                    case 3:
                        {unsigned int wynik = liczba *  10000;
                        cout << liczba << " arow to: " << wynik << " dm2." << endl;
                        break;}
                    case 5:
                        {
                            float wynik = liczba * 1;
                            cout << liczba << " arow to " << wynik << " arow." << endl;
                            break;
                        }
                    case 6:
                        {
                            float wynik = liczba * 0.01;
                            cout << liczba << " arow to " << wynik << " hektarow." << endl;
                            break;
                        }
                    default:
                        cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
                        break;

                }
            }

            if(jednostka1==6)
            {
                switch (jednostka2)
                {
                    case 1:
                        {unsigned int wynik = liczba * 10000000000;
                        cout << liczba << " hektarow to: " << wynik << " mm2." << endl;
                        break;}
                    case 4:
                        {unsigned int wynik = liczba * 10000;
                        cout << liczba << " hektarow to: " << wynik << " m2." << endl;
                        break;}
                    case 2:
                        {unsigned int wynik = liczba * 100000000;
                        cout << liczba << " hektarow to: " << wynik << " cm2." << endl;
                        break;}
                    case 3:
                        {unsigned int wynik = liczba *  1000000;
                        cout << liczba << " hektarow to: " << wynik << " dm2." << endl;
                        break;}
                    case 5:
                        {
                            unsigned int wynik = liczba * 100;
                            cout << liczba << " hektarow to " << wynik << " arow." << endl;
                            break;
                        }
                    case 6:
                        {
                            float wynik = liczba * 1;
                            cout << liczba << " hektarow to " << wynik << " hektarow." << endl;
                            break;
                        }
                    default:
                        cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
                        break;

                }
            }

        if(jednostka1>=7)
            {
                cout << "Wybrales cos zle. Sprobuj ponownie." << endl;
                cout << " ";
            }

        }

    if(kalk==2)
    {
        float liczba , wynik , ilosc;
        int jednostka1;
        int jednostka2;

        cout << " " << endl;
        cout << "Przelicznik miar pojemnosci" << endl;
        cout << " " << endl;
        cout <<"Wpisz:" << endl;
        cout << "1 - zeby przeliczyc z milimetrow szesciennych... [mm3] " << endl;
        cout << "2 - zeby przeliczyc z centymetrow szesciennych...[cm3] " << endl;
        cout << "3 - zeby przeliczyc z decymetrow szesciennych... [dm3]" << endl;
        cout << "4 - zeby przeliczyc z metrow szesciennych...     [m3]" << endl;
        cout << "5 - zeby przeliczyc z mililitrow...              [ml]" << endl;
        cout << "6 - zeby przeliczyc z litrow...                  [l]"<< endl;
        cout << "Wybrana jednostka: ";
        cin >> jednostka1;
        cout << " " << endl;
        cout << "Wpisz ilosc (bez jednostki): ";
        cin >> liczba ;
        cout << " " << endl;
        cout << "Wpisz:" << endl;
        cout << "1 - ...na milimetry szescienne  [mm3] " << endl;
        cout << "2 - ...na centymetry szescienne [cm3] " << endl;
        cout << "3 - ...na decymetry szescienne  [dm3]" << endl;
        cout << "4 - ...na metry szescienne      [m3]" << endl;
        cout << "5 - ...na mililitry             [ml]" << endl;
        cout << "6 - ...na litry                 [l]" << endl;
        cout << "Wybrana jednostka: ";
        cin >> jednostka2;
        cout << " " << endl;

        if(jednostka1==1)
        {
            switch (jednostka2)
            {
                case 1:
                    cout << "Chcesz przeliczac milimetry na milimetry?" << endl;
                    break;
                case 2:
                    {float wynik = liczba * 0.001;
                    cout << liczba << " mm3 to " << wynik << " cm3." << endl;
                    break;}
                case 3:
                    {float wynik = liczba * 0.000001;
                    cout << liczba << " mm3 to " << wynik << " dm3." << endl;
                    break;}
                case 4:
                    {double wynik = liczba *  0.000000001;
                    cout << liczba << " mm3 to " << wynik << " m3." << endl;
                    break;}
                case 5:
                    {unsigned int wynik = liczba * 0.001;
                    cout << liczba << "mm3 to " << wynik << " ml." << endl;
                    break;}
                case 6:
                    {float wynik = liczba *  0.000001;
                    cout << liczba << "mm3 to " << wynik << " l." << endl;
                    break;}
                default:
                    cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
                    break;
            }
        }

        if(jednostka1==2)
        {
            switch (jednostka2)
            {
                case 1:
                    {int wynik = liczba * 1000;
                    cout << liczba << " cm3 to " << wynik << " mm3." << endl;
                    break;}
                case 2:
                    cout << "Chcesz przeliczac centymetry na centymetry?" << endl;
                    break;
                case 3:
                    {float wynik = liczba * 0.001;
                    cout << liczba << " cm3 to " << wynik << " dm3." << endl;
                    break;}
                case 4:
                    {float wynik = liczba *  0.000001;
                    cout << liczba << " cm3 to " << wynik << " m3." << endl;
                    break;}
                case 5:
                    {unsigned int wynik = liczba * 1;
                    cout << liczba << "cm3 to " << wynik << " ml." << endl;
                    break;}
                case 6:
                    {float wynik = liczba *  0.001;
                    cout << liczba << "cm3 to " << wynik << " l." << endl;
                    break;}
                default:
                    cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
                    break;

            }

        }

        if (jednostka1==3)
        {
            switch (jednostka2)
            {
                case 1:
                    {unsigned int wynik = liczba * 1000000;
                    cout << liczba << " dm3 to " << wynik << " mm3." << endl;
                    break;}
                case 3:
                    {unsigned int wynik = liczba * 1;
                    cout << liczba << " dm3 to " << wynik << " dm3." << endl;
                    break;}
                case 2:
                    {unsigned int wynik = liczba * 1000;
                    cout << liczba << " dm3 to " << wynik << " cm3." << endl;
                    break;}
                case 4:
                    {float wynik = liczba *  0.0001;
                    cout << liczba << " dm3 to " << wynik << " m3." << endl;
                    break;}
                case 5:
                    {unsigned int wynik = liczba * 1000;
                    cout << liczba << "dm3 to " << wynik << " ml." << endl;
                    break;}
                case 6:
                    {float wynik = liczba *  1;
                    cout << liczba << "dm3 to " << wynik << " l." << endl;
                    break;}
                default:
                    cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
                    break;

            }

        }

        if(jednostka1==4)
        {
            switch (jednostka2)
            {
                case 1:
                    {unsigned int wynik = liczba * 100000000;
                    cout << liczba << " m3 to: " << wynik << " mm3." << endl;
                    break;}
                case 4:
                    cout << "Chcesz przeliczac metry na metry?" << endl;
                    break;
                case 2:
                    {unsigned int wynik = liczba * 100000;
                    cout << liczba << " m3 to: " << wynik << " cm3." << endl;
                    break;}
                case 3:
                    {unsigned int wynik = liczba *  1000;
                    cout << liczba << " m3 to: " << wynik << " dm3." << endl;
                    break;}
                case 5:
                    {unsigned int wynik = liczba * 100000;
                    cout << liczba << "m3 to " << wynik << " ml." << endl;
                    break;}
                case 6:
                    {float wynik = liczba *  1000;
                    cout << liczba << "m3 to " << wynik << " l." << endl;
                    break;}
                default:
                    cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
                    break;

            }
        }
        if(jednostka1==5)
        {
            switch (jednostka2)
            {
                case 1:
                    {int wynik = liczba * 1000;
                    cout << liczba << " cm3 to " << wynik << " mm3." << endl;
                    break;}
                case 2:
                    {int wynik = liczba * 1;
                    cout << liczba << " ml to " << wynik << " cm3." << endl;
                    break;}
                case 3:
                    {float wynik = liczba * 0.001;
                    cout << liczba << " ml to " << wynik << " dm3." << endl;
                    break;}
                case 4:
                    {float wynik = liczba *  0.000001;
                    cout << liczba << "ml to " << wynik << " m3." << endl;
                    break;}
                case 5:
                    {unsigned int wynik = liczba * 1;
                    cout << liczba << "ml to " << wynik << " ml." << endl;
                    break;}
                case 6:
                    {float wynik = liczba *  0.001;
                    cout << liczba << "ml to " << wynik << " l." << endl;
                    break;}
                default:
                    cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
                    break;
            }
        }

        if (jednostka1==6)
        {
            switch (jednostka2)
            {
                case 1:
                    {unsigned int wynik = liczba * 100000;
                    cout << liczba << " l to " << wynik << " mm3." << endl;
                    break;}
                case 2:
                    {unsigned int wynik = liczba * 1000;
                    cout << liczba << " l to " << wynik << " cm3." << endl;
                    break;}
                case 3:
                    {unsigned int wynik = liczba * 1;
                    cout << liczba << "l to " << wynik << "dm3." << endl;
                    break;}
                case 4:
                    {float wynik = liczba *  0.0001;
                    cout << liczba << "l to " << wynik << "m3." << endl;
                    break;}
                case 5:
                    {unsigned int wynik = liczba *  1000;
                    cout << liczba << "l to " << wynik << "ml." << endl;
                    break;}
                case 6:
                    {unsigned int wynik = liczba *  1;
                    cout << liczba << "l to " << wynik << "l." << endl;
                    break;}
                default:
                    cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
                    break;

            }
        }
        if (jednostka1>=7)
        {
            cout << "Wybrales cos zle. Sprobuj jeszcze raz.";
        }

    }

        //cout << "Wpisz 1 jesli chcesz cos jeszcze przeliczyc lub 2 by wyjsc" << endl;
        //cin >> w;
    }
        system("PAUSE");
        return 0;
}




Muminki Cię widzą, Muminki Cię śledzą, Muminki Cię znajdą, zabiją i zjedzą :ninja:

Dobry post? Nie żałuj "lubię to" :)

Opublikowano

Możesz ująć cały program w pętlę for( ; ; ) i przy wyborze opcji wyjścia postawić instrukcję break;.

Da się to bardziej "skompresować", później wstawię swój kod.

ㅈㅈ.

Opublikowano
#include <iostream>

using namespace std;
int main()
{
    int kalk;
    int jednostka1 , jednostka2;
    double liczba , wynik , ilosc;
    {
        cout << "Co chcesz przeliczac?" << '\n';
        cout << "Wpisz:" << '\n';
        cout << "1 - jezeli chcesz przeliczac jednostki powierzchni" << '\n';
        cout << "2 - jezeli chcesz przeliczac jednostki pojemnosci" << '\n';
        cout << "Twoj wybor: ";
        cin >> kalk;
        if(kalk == 1)
        {
            double przeliczniki[] = {1, 0.01, 1.0e-4, 1.0e-6, 1.0e-8, 1.0e-10, 1.0e-12};
            string nazwy[] = {"mm2", "cm2", "dm2", "m2", "a", "ha", "km2"};
            int iloscWyborow = sizeof(przeliczniki) / sizeof(przeliczniki[0]);
            cout << "\nPrzelicznik miar powirzchni" << '\n';
            cout << "\nWpisz i zatwierdz enterem:" << '\n';
            for(int i = 1; i <= iloscWyborow; ++i) cout << i << " - zeby przliczyc z " << nazwy[i - 1] << '\n';
            cout << "Wybrana jednostka: ";
            cin >> jednostka1;
            cout << "\nWpisz ilosc (bez jednostki): ";
            cin >> liczba;
            cout << "\nWpisz:" << '\n';
            for(int i = 1; i <= iloscWyborow; ++i) cout << i << " - na " << nazwy[i - 1] << '\n';
            cout << "Wybrana jednostka: ";
            cin >> jednostka2;
            cout << '\n' << liczba << ' ' << nazwy[jednostka1 - 1] << " to " << liczba*(przeliczniki[jednostka2 - 1] / przeliczniki[jednostka1 - 1]) << ' ' << nazwy[jednostka2 - 1];
        }
        else if(kalk == 2)
        {
            double przeliczniki[] = {1, 0.001, 0.00001, 1.0e-6, 1.0e-15};
            string nazwy[] = {"ml", "l", "hl", "m3", "km3"};
            int iloscWyborow = sizeof(przeliczniki) / sizeof(przeliczniki[0]);
            cout << "\nPrzelicznik miar objetosci" << '\n';
            cout << "\nWpisz i zatwierdz enterem:" << '\n';
            for(int i = 1; i <= iloscWyborow; ++i) cout << i << " - zeby przliczyc z " << nazwy[i - 1] << '\n';
            cout << "Wybrana jednostka: ";
            cin >> jednostka1;
            cout << "\nWpisz ilosc (bez jednostki): ";
            cin >> liczba ;
            cout << "\nWpisz:" << '\n';
            for(int i = 1; i <= iloscWyborow; ++i) cout << i << " - na " << nazwy[i - 1] << '\n';
            cout << "Wybrana jednostka: ";
            cin >> jednostka2;
            cout << '\n' << liczba << ' ' << nazwy[jednostka1 - 1] << " to " << liczba*(przeliczniki[jednostka2 - 1] / przeliczniki[jednostka1 - 1]) << ' ' << nazwy[jednostka2 - 1];
        }
    }
    return 0;
}

Aby dodać nową jednostkę wystarczy dopisać do tablicy wartość względem pierwszej jednostki (np 1 milimetr2 to 1 milimetr2, 1 milimetr2 to 1.0e-4 cm2) i nazwę.

Opublikowano

Jak wspomniałem, c++ uczę się krótko, tablic jeszcze nie ruszałem :) Dzięki :)

Muminki Cię widzą, Muminki Cię śledzą, Muminki Cię znajdą, zabiją i zjedzą :ninja:

Dobry post? Nie żałuj "lubię to" :)

Opublikowano

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...