CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 15 of 23

Threaded View

  1. #1
    Join Date
    Oct 2011
    Posts
    13

    Angry 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 {
    		cout << "Iveskite intervalo pradzia ir gala.\nPradzia ir galas sutapti negali!\n";
    	    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
    Iveskite intervalo pradzia ir gala.
    Pradzia ir galas sutapti negali!
    -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.

Tags for this Thread

Posting Permissions

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





Click Here to Expand Forum to Full Width

Featured