• 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++

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
516 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,320 p.)

@BUSZARD, 

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

 

Podobne pytania

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

93,174 zapytań

142,185 odpowiedzi

321,976 komentarzy

62,503 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1389p. - dia-Chann
  2. 1368p. - Łukasz Piwowar
  3. 1360p. - Łukasz Eckert
  4. 1360p. - CC PL
  5. 1344p. - Tomasz Bielak
  6. 1117p. - ssynowiec
  7. 1104p. - Michal Drewniak
  8. 1083p. - Marcin Putra
  9. 1078p. - rucin93
  10. 1071p. - rafalszastok
  11. 1054p. - Adrian Wieprzkowicz
  12. 1047p. - Piotr Aleksandrowicz
  13. 1037p. - Michał Telesz
  14. 1023p. - Mariusz Fornal
  15. 1017p. - Mikbac
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...