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

Borland c++ builder

Object Storage Arubacloud
0 głosów
564 wizyt
pytanie zadane 23 lutego 2016 w C i C++ przez kogigogi3 Nowicjusz (210 p.)

Witam,

to mój pierwszy post na forum i proszę o wyrozumiałość ;)

Chciałem napisać aplikację "kalkulator bmi".

lecz napotykam problem:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
float waga;
float wzrost;
float x;
float bmi;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
x = wzrost*wzrost;
bmi = waga / x;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
      Label1->Caption = FloatToStr(bmi); 
}
/

w linijce "bmi = waga / x;" wyskakuje mi błąd "Project raised exception class EInvalidOp with massage "Invalid floating point operation" Process stoped. Use Step or Run to continue"

W czym tkwi problem? ( Proszę bez hejtów mam tylko 12 lat ;D )

1 odpowiedź

+1 głos
odpowiedź 23 lutego 2016 przez Mirosław Zelent Nałogowiec (34,750 p.)

Te linijki:

x = wzrost*wzrost;
bmi = waga / x;

umieść np. w obsłudze zdarzenia onClick, bo umieszczone są teraz w konstruktorze i wykonują się już w momencie tworzenia pierwszego okna. A to jest problem, bo zmienna x jest mianownikiem dzielenia (a przez zero nie dzielimy w przestrzeni liczb rzeczywistych). Polecam Ci kurs Obiektowy C++ na kanale, od odcinka 8.

1
komentarz 23 lutego 2016 przez MetGang Nałogowiec (34,360 p.)

Ta tylko dodam od siebie, że wzrost oraz x są zmiennymi globalnymi, czyli są inicjalizowane domyślnym konstruktorem (czyli "zerowane") w momencie odpalenia programu i, jak Pan Mirosław powiedział, występuje dzielenie przez 0.

komentarz 24 lutego 2016 przez kogigogi3 Nowicjusz (210 p.)

Dziękuje bardzo smiley

Podobne pytania

0 głosów
1 odpowiedź 504 wizyt
0 głosów
1 odpowiedź 305 wizyt
pytanie zadane 2 lutego 2016 w C i C++ przez Arek Sob Początkujący (410 p.)
0 głosów
1 odpowiedź 277 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...