• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kalkulator jednostek - problem w liczeniu (chyba z tablicą) C++

Mały hosting, OGROMNE możliwości
0 głosów
777 wizyt
pytanie zadane 28 października 2022 w C i C++ przez BUSZARD Nowicjusz (140 p.)

Cześć,

Jestem totalnie początkujący i próbuję w ramach ćwiczenia zrobić prosty kalkulator jednostek w C++.

Na razie napisałem kod tylko do przeliczania jednostek długości i tylko milimetry, centymetry, metry i kilometry.

Do przeliczania używam dwuwymiarowej tablicy, do której wstawiłem dane na zasadzie 1mm=0,1cm, 1mm=0,001m, 1mm=0,000001km

Problem pojawia się kiedy program ma przeliczyć milimetry na kilometry - dzieli podana liczbę milimetrów przez 10, zamiast pomnożyć przez zmienna z tablicy 0.000001.

Jak wpisze na chama, żeby mnożył przez 0.000001 to działa normalnie, stąd wnioskuje, że problem jest z tablicą.

Jak to rozwiązać?

Poniżej kod:

#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>

using namespace std;
char wybor;
float liczba;
float liczba2;
string jednostka;
string jednostka2;



int main()
{
    cout << "Witaj w kalkulatorze jednostek" << endl;

    cout << "------------------------------" << endl;

    cout << "Jakie jednostki chcesz przeliczyc? Podaj cyfre." <<endl;
    cout << "1. Jednostki dlugosci" << endl;
    cout << "2. Jednostki masy" << endl;
    cout << "3. Jednostki objetosci" << endl;
    cout << "4. Jednostki powierzchni" << endl;


    cin >> wybor ;

    switch (wybor)

    {
    case '1':
        {
        setprecision(1000000);
        long double przelicznik[3][3];

        przelicznik[0][0]=1;
        przelicznik[0][1]=0.1;
        przelicznik[0][2]=0.001;
        przelicznik[0][3]=0.000001;

        przelicznik[1][0]=0.1;
        przelicznik[1][1]=1;
        przelicznik[1][2]=0.01;
        przelicznik[1][3]=0.00001;

        przelicznik[2][0]=1000;
        przelicznik[2][1]=100;
        przelicznik[2][2]=1;
        przelicznik[2][3]=1000;

        przelicznik[3][0]=1000000;
        przelicznik[3][1]=100000;
        przelicznik[3][2]=1000;
        przelicznik[3][3]=1;


        cout << "Podaj liczbe do przeliczenia i jej jednostke:" << endl;

        cout << "Liczba: " << endl;

        cin >> liczba;

        cout << "Wybierz dostepna jednostke (wpisz nazwe): " << endl;

        cout << "milimetry" << endl;
        cout << "centrymetry" << endl;
        cout << "metry" << endl;
        cout << "kilometry" << endl;

        cin >> jednostka;

        cout << "Na jaka jednostke to przeliczyc (wpisz nazwe)?" << endl;

        cout << "milimetry" << endl;
        cout << "centrymetry" << endl;
        cout << "metry" << endl;
        cout << "kilometry" << endl;


        cin >> jednostka2;

        if (jednostka=="milimetry"&&(jednostka2=="centymetry"))
        {
            cout << liczba << " milimetrow = " << liczba*przelicznik[0][1];
            cout << " centymetrow";
        }
        if ((jednostka=="milimetry")&&(jednostka2=="metry"))
        {
            cout << liczba << " milimetrow = " << liczba*przelicznik[0][2];
            cout << " metrow";
        }
        if ((jednostka=="milimetry")&&(jednostka2=="kilometry"))
        {
            cout << liczba << " milimetrow = " << liczba*przelicznik[0][3];
            cout << " kilometrow";
        }
        }



        }

            }

 

Z góry dzięki za pomoc!

1 odpowiedź

0 głosów
odpowiedź 28 października 2022 przez Great Stary wyjadacz (12,660 p.)
setprecision(1000000); // ???
long double przelicznik[4][4]; 
komentarz 28 października 2022 przez BUSZARD Nowicjusz (140 p.)
Dziękuję, działa!
setprecision wpisałem bo wydawało mi się potrzebne przy dużych liczbach po przecinku

No a z tablicą myślałem, ze skoro liczy od 0 to cztery wartości o które mi chodzi będą w przedziale 0 do 3;

Czego tu nie rozumiem?
komentarz 28 października 2022 przez Great Stary wyjadacz (12,660 p.)
komentarz 28 października 2022 przez VBService Ekspert (256,580 p.)

@BUSZARD, 

  index     size  
array[0] 1
array[1] 2
array[2] 3
array[3] 4

 

Podobne pytania

0 głosów
2 odpowiedzi 619 wizyt
pytanie zadane 14 listopada 2017 w JavaScript przez NegativeAura Nowicjusz (120 p.)
+1 głos
3 odpowiedzi 896 wizyt
pytanie zadane 11 grudnia 2015 w C i C++ przez sharkus101 Początkujący (330 p.)
0 głosów
2 odpowiedzi 4,587 wizyt
pytanie zadane 6 lipca 2015 w C i C++ przez Masa Nowicjusz (220 p.)

93,718 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,265 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...