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

Błąd w programie, zły wynik

0 głosów
411 wizyt
pytanie zadane 6 sierpnia 2020 w C i C++ przez ewelinqq Nowicjusz (120 p.)

Gdzie jest błąd w tym programie i na czym polega? Otrzymywany wynik nie jest poprawny. 

Treść zadania: Napisz program, który wczytuje dwie liczby a, b i oblicza wartość wyrażenia (a+b)/(a-b). Program powinien sprawdzać poprawność wprowadzonych danych (mianownik != 0)

 

 

Dziękuję za pomoc.

#include <iostream>

using namespace std;

int main()
{
    cout<<"Podaj a i b"<<endl;
    int a, b, wynik;
    cin>>a>>b;
    if ((a-b)==0)
        cout<<"Nie można dzielić przez 0"<<endl;
    else
        wynik=(a+b)/(a-b);
        cout<<"Wynik wynosi: "<<wynik<<endl;

return 0;
}

 

3 odpowiedzi

0 głosów
odpowiedź 6 sierpnia 2020 przez Michałełe Nałogowiec (25,600 p.)
Domyślam się, że wynik nie jest poprawny bo używasz typu int do liczb całkowitych - zmień go na double / float'y.

W dodatku w if'ie / else'ie można pominąć klamry tylko dla jednej linijki - także musisz je dodać przy else'ie
komentarz 6 sierpnia 2020 przez DragonCoder Nałogowiec (36,500 p.)

1. Up typ danych

2. Klamry naljlepiej zawsze, nawet dla jednej linijki:

if () {

} else {

}

Telretycznie dochodzi jednak linijka kodu na calego ifa

0 głosów
odpowiedź 6 sierpnia 2020 przez Clip180 Obywatel (1,460 p.)
edycja 7 sierpnia 2020 przez Clip180

Spruboj tak

 

#include <iostream>

using namespace std;

int main()
{
    cout << "Podaj a i b" << endl;
    float a, b , wynik;
    cin >> a >> b;
    if ((a - b) == 0)
        cout << "Nie można dzielić przez 0" << endl;
    else {
        wynik = (a + b) / (a - b);
        cout << "Wynik wynosi: " << wynik << endl;
    }
    return 0;
}

 

0 głosów
odpowiedź 7 sierpnia 2020 przez VBService Ekspert (256,580 p.)
edycja 7 sierpnia 2020 przez VBService

Typ int gdzie mamy dzielenie raczej się nie sprawdza, bo często wynik nie jest liczbą całkowitą.

Difference Between float and double

#include <iostream>
#include <iomanip>
 
using namespace std;
 
int main()
{
  float a, b, wynik;

  cout<<"Podaj a i b"<<endl;  
  cin>>a>>b;

  if ((a-b)==0) {
     cout<<"Nie można dzielić przez 0"<<endl;
  }  else {
     wynik=(a+b)/(a-b);
     cout<<"Wynik wynosi: "<<setprecision(2)<<wynik<<endl;
  }
 
  return 0;
}

C++ float and double ]

Podobne pytania

0 głosów
1 odpowiedź 393 wizyt
pytanie zadane 13 sierpnia 2019 w C i C++ przez martin1724 Użytkownik (690 p.)
0 głosów
3 odpowiedzi 998 wizyt
pytanie zadane 25 lipca 2019 w C i C++ przez martin1724 Użytkownik (690 p.)
0 głosów
1 odpowiedź 683 wizyt
pytanie zadane 30 lipca 2019 w C i C++ przez martin1724 Użytkownik (690 p.)

93,731 zapytań

142,668 odpowiedzi

323,286 komentarzy

63,289 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.

...