CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com

# Thread: 0 isn't 0 in C++ math

1. Junior Member
Join Date
Oct 2011
Posts
13

## 0 isn't 0 in C++ math

OK, i have a script, which calculate Y=1/(C-A). C is input, A is intetrval [Ap;Ag] with step Az;
And i have one problem, when c=2, A[-1.5;2.5] with step 0.1, when i want to say that 0 isn't possible in 1/0, the program colculate me: Y = -2.1e+06 . Programm is not English language, sorry. Problem in answer line 36.

Code:
```/*
*/
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
int main ()
{
float y, c, ap, az, ag;

cout << "Iveskite kintamojo C reiksme.\n";
cin >> c; //įvedame C reikšmę
do {
cin >> ap >> ag; //įvedame intervalo pradžią ir galą
} while (ap == ag); //išsireikalaujame, kad intervalo pradžia ir galas nesutaptų
do {
cout << "Iveskite intervalo kitimo zingsni, kuris nelygus 0.\n";
cin >> az; //įvedame intervalo kitimo žingsnį
} while (az == 0.0); //išsireikalaujame, kad intervalo kitimo ˛ingsnis būtų nelygus 0
if (ag > ap && az > 0.0) { //jei intervalas didėjantis IR žingsnis DIDESNIS už 0, skaičiuojame
cout << setfill('-') << setw(58) << "-" << endl;
cout << setfill(' ') << setw(8)<<"Sprendinio nr. " <<"|  "<<"Atsakymas\n";
cout << setfill('-') << setw(58) << "-" << setfill(' ') <<endl;
for (float z = 1.0, a = ap; a <= ag; a += az) {
if (a == c) { //jei vardiklis lygus 0
cout << setfill(' ') << setw(14) << z << ".  ";
cout << "Kai A = " << a <<", o " << c << " - " << a <<" = 0, apskaiciuoti\nnegalima, nes dalyba is 0 negalima.\n";
}
else {
y = 1.0 / (c - a); //skaičiuojame
cout << setfill(' ') << setw(14) << z << ".  " << "Y = "  << setprecision(3) << y << endl;
}
z++; //prisideame vienetuką prie sprendinio nr.
}

}
if (ag < ap && az < 0.0) { //jei intervalas mažėjantis IR žingsnis MAŽESNIS uz 0
cout << setfill('-') << setw(58) << "-" << endl;
cout << setfill(' ') << setw(8)<<"Sprendinio nr. " <<"|  "<<"Atsakymas\n";
cout << setfill('-') << setw(58) << "-" << setfill(' ') <<endl;
for (float z = 1.0, a = ap; a >= ag; a += az) {
if (a == c) { //jei vardiklis lygus 0
cout << setfill(' ') << setw(14) << z << ".  ";
cout << "Kai A = " << a <<", o " << c << " - " << a <<" = 0, apskaiciuoti\nnegalima, nes dalyba is 0 negalima.\n";
}
else {
y = 1.0 / (c - a); //skaičiuojame
cout << setfill(' ') << setw(14) << z << ".  " << "Y = "  << setprecision(3) << y << endl;
}
z++; //prisideame vienetuką prie sprendinio nr.
}

}
if (ag > ap && az < 0.0) { //jei intervalas didėjantis IR žingsnis MAŽESNIS uz 0
cout << setfill('-') << setw(58) << "-" << endl;
cout << "Apskaiciuoti negalime,\nnes intervalas didejantis,\no zingsnis mazejantis.\n";
}
if (ag < ap && az > 0.0) { //jei intervalas mažejantis IR žingsnis DIDESNIS už 0
cout << setfill('-') << setw(58) << "-" << endl;
cout << "Apskaiciuoti negalime,\nnes intervalas mazejantis,\no zingsnis didejantis.\n";
}
cout << setfill('-') << setw(58) << "-" << setfill(' ') <<endl;
system ("pause");
return 0;
}```
Code:
```Iveskite kintamojo C reiksme.
2
-1.5
2.5
Iveskite intervalo kitimo zingsni, kuris nelygus 0.
0.1
----------------------------------------------------------
Sprendinio nr. |  Atsakymas
----------------------------------------------------------
1.  Y = 0.286
2.  Y = 0.294
3.  Y = 0.303
4.  Y = 0.313
5.  Y = 0.323
6.  Y = 0.333
7.  Y = 0.345
8.  Y = 0.357
9.  Y = 0.37
10.  Y = 0.385
11.  Y = 0.4
12.  Y = 0.417
13.  Y = 0.435
14.  Y = 0.455
15.  Y = 0.476
16.  Y = 0.5
17.  Y = 0.526
18.  Y = 0.556
19.  Y = 0.588
20.  Y = 0.625
21.  Y = 0.667
22.  Y = 0.714
23.  Y = 0.769
24.  Y = 0.833
25.  Y = 0.909
26.  Y = 1
27.  Y = 1.11
28.  Y = 1.25
29.  Y = 1.43
30.  Y = 1.67
31.  Y = 2
32.  Y = 2.5
33.  Y = 3.33
34.  Y = 5
35.  Y = 10
36.  Y = -2.1e+06
37.  Y = -10
38.  Y = -5
39.  Y = -3.33
40.  Y = -2.5
41.  Y = -2
----------------------------------------------------------```
Last edited by justutiz; May 19th, 2013 at 01:05 PM.

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•