Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Lekcja 15] Kalkulator - ukryty błąd

Ostatnio zmodyfikowano 2013-03-03 12:24
Autor Wiadomość
Frish
Temat założony przez niniejszego użytkownika
[Lekcja 15] Kalkulator - ukryty błąd
» 2013-03-02 14:52:09
C/C++
#include <iostream>

int main()
{
    std::cout << std::endl << std::endl << "\t\t ____________" << std::endl;
    std::cout << "\t\t  KALKULATOR " << std::endl << std::endl << std::endl;
    std::cout << "[+] Dodawanie" << std::endl;
    std::cout << "[-] Odejmowanie" << std::endl;
    std::cout << "[*] Mnozenie" << std::endl;
    std::cout << "[/] Dzielenie" << std::endl;
   
   
    float a;
    float b;
    int ile;
   
   
    char znak;
   
   
    std::cout << "\t______________" << std::endl;
    std::cout << "\t OKNO DZIALAN" << std::endl;
    std::cout << "_______________________________" << std::endl << std::endl;
   
   
    std::cin >> a;
   
   
    do
    {
       
        std::cin >> znak;
        std::cin >> b;
       
       
        if( znak == '+' )
        {
           
            znak = a + b;
            a += b;
            std::cout << a << std::endl;
           
        }
        if( znak == '-' )
        {
            znak = a - b;
            a -= b;
            std::cout << a << std::endl;
           
           
        }
        if( znak == '*' )
        {
            znak = a * b;
            a *= b;
            std::cout << a << std::endl;
           
           
        }
        if( znak == '/' )
        {
            znak = a / b;
            a /= b;
            std::cout << a << std::endl;
           
           
        }
    } while( ile != 0 );
   
    return 0;
   
}


napisałem kalkulator i wystapił dziwny błąd pod tytułem między innymi kiedy dodaje cały czas 5 i startuje od 5 to w momencie gdy mam 40 + 5 w wyniku ukazuja sie dwie liczby a w innych przypadkach raczej dobrze podaje wyniki. Nie wiem dlaczego tak jest, gdzie popełniłem błąd, proszę o pomoc.

P-77463
pekfos
» 2013-03-02 15:08:45
Modyfikujesz zmienną
znak
.
P-77466
Frish
Temat założony przez niniejszego użytkownika
» 2013-03-02 15:16:09
Już właśnie poprawiłem to, ale nadal nie rozumiem jak to sie dzieje że gdy dodaje przez kilka kolejek to jest dobrze i ogolnie większośc równań wykonuje to jest dobrze a tu gdy powtarzam równanie wielokrotnie pojawia sie błąd który wcześniej nie występował. Nie powinno być tak że ten błąd wyskakuje zaraz przy drugim bądz trzecim równaniu?

pozdrawiam
P-77472
melon
» 2013-03-02 15:38:20
zadeklarowałeś zmienna "ile" , lecz pozniej nigdzie ona nie wystepuje, wiec while nie daje efektu, tyle ze jest
P-77478
Frish
Temat założony przez niniejszego użytkownika
» 2013-03-02 18:56:19
ale ta zmienna nie ma wplywu na przeprowadzane obliczenia...chodzi mi o to ze dlaczego zmienna 'znak' ktora zostala dodatkowo niepotrzebnie deklarowana powoduje bledne obliczenia dopiero po wielu kolejkach dodawania i to liczby 5...a wszystkie inne liczby raczej dobrze sa obliczane...dlaczego tak sie dzieje ze dodajac caly czas 5 w momencie gdy wystepuje 40+5 to zaczynaja sie bledne obliczenia i wyskakuje blad...a wczesniej to sie nie dzieje i w przypadku innych obliczen blad nie wystepuje...ten blad zwiazany jest z liczba 45...prosze o jakies wyjasnienie tego faktu...przeciez ten blad powinien ujawniac sie juz wczesniej gdyby tu chodzilo tylko o niepotrzebne zadeklarowanie 'znak = a + b'...
P-77500
SeaMonster131
» 2013-03-02 19:06:52
Jeżeli usunąłeś te modyfikacje zmiennej "znak" podczas obliczeń, to przecież wszystko dobrze działa?
P-77501
Frish
Temat założony przez niniejszego użytkownika
» 2013-03-02 21:19:32
owszem dziala dobrze, ale ja chce wiedziec jaka jest przyczyna tego ze z ta zmienna dziala tez prawidlowo tylko blad wystepuje przy dodawaniu 40+5 i w zasadzie przy kazdym dodawaniu gdzie wynikiem jest liczba 42 45 i 47 w kazdym innym przypadku ten program dziala poprawnie...dlaczego akurat w tych przypadkach jego dzialanie jest niewlasciwe a w innych jest wszystko wporzadku...
P-77506
Monika90
» 2013-03-02 21:23:21
Przypisujesz zmiennej
znak
 wynik jakiejś operacji (np. dodawania), a potem sprawdzasz np. czy
znak == '/'
. Może się zdarzyć, że wynik operacji będzie równy kodowi znaku
'/'
. Dla przykładu kod ASCII
'/'
 to 47.
P-77507
« 1 » 2
  Strona 1 z 2 Następna strona