Wątek przeniesiony 2020-03-18 14:15 z Ogłoszenia drobne przez kq.

Pomoc w programie C++

0

Witam! Chciał bym dodać do tego programu zabezpieczenie przed wpisywaniem liczb ujemnych, można prosić o pomoc? Próbowałem z ifem ale coś nie wychodzi

#include <iostream>
#include <cstdlib>

using namespace std;
int wybor;
double a, b, c;

int main()
{
    for (;;) {
    cout << "1. Obliczanie pola trojkata" << endl;
    cout << "2. Obliczanie pola prostokata" << endl;
    cout << "3. Obliczanie pola kwadratu" << endl;

    cout << "Wybor: ";
    cin >> wybor;

    switch (wybor) {
        case 1: {
            cout << "Bok a: ";
            cin >> a;
            cout << "Bok h: ";
            cin >> b;
            std::system("cls");
            cout << (a * b) / 2 << endl;
            

        break;
        }
        case 2: {
            cout << "Bok a: ";
            cin >> a;
            cout << "Bok b: ";
            cin >> b;
            std::system("cls");
            cout << a * b << endl;
            

            break;
        }
        case 3: {
            cout << "Bok a: ";
            cin >> a;
            std::system("cls");
            cout << a * a << endl;
            
            break;
        }
        
    }
    
}

    return 0;
}
0

@AnyKtokolwiek: Masz tu program z moimi próbami

#include <iostream>
#include <cstdlib>

using namespace std;
int wybor;
double a, b;

int main()



{
    for (;;) {
    cout << "1. Obliczanie pola trojkata" << endl;
    cout << "2. Obliczanie pola prostokata" << endl;
    cout << "3. Obliczanie pola kwadratu" << endl;

    cout << "Wybor: ";
    cin >> wybor;
    
    
    switch (wybor) {
        case 1: {
            cout << "Bok a: ";
            cin >> a;
            cout << "Bok h: ";
            cin >> b;
            std::system("cls");
            cout << (a * b) / 2 << endl;
            
            if (a||b < 0 )
{
	cout << "Nie można dodać liczb ujemnych";
}
        break;
        }
        case 2: {
            cout << "Bok a: ";
            cin >> a;
            cout << "Bok b: ";
            cin >> b;
            std::system("cls");
            cout << a * b << endl;
            
            if (a||b < 0 )
{
	cout << "Nie można dodać liczb ujemnych";
}
			

            break;
        }
        case 3: {
            cout << "Bok a: ";
            cin >> a;
            std::system("cls");
            cout << a * a << endl;
			
            break;
        }
	
	
	}
}

    return 0;
}
0
  1. wyrażenie logiczne nie działą tak, jak wymyśliłeś
    2 Proponuję tak, tzn nie drukować wyniku, gdy nie ma sensu
if(a>=0 && b>=0)
{
   cout << (a * b) / 2 << endl;
}
else {

   ....
}
1

Jak piszesz a||b < 0, to odpowiada to konstrukcji a || (b < 0), czyli w domyśle (a != 0) || (b < 0).

0

Ja bym za linijką

cin >> a 

wpisał

if (a < 0) a = - a

i masz załatwione, że jak ktoś wpisze -5 to wartość a będzie 5.
Wtedy możesz sobie darować komunikaty o ujemnych bokach, ale jak już musisz to:

if (a < 0 || b < 0) cout << "Halo, kolego nie ma ujemnych odcinków ;) " ;

1 użytkowników online, w tym zalogowanych: 0, gości: 1