Pomoc w programie C++

Pomoc w programie C++

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

RU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
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

Kopiuj
#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;
}
RU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

@AnyKtokolwiek: Masz tu program z moimi próbami

Kopiuj
#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;
}
AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
0
  1. wyrażenie logiczne nie działą tak, jak wymyśliłeś
    2 Proponuję tak, tzn nie drukować wyniku, gdy nie ma sensu
Kopiuj
if(a>=0 && b>=0)
{
   cout << (a * b) / 2 << endl;
}
else {

   ....
}
enedil
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1028
1

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

RA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 48
0

Ja bym za linijką

Kopiuj
cin >> a 

wpisał

Kopiuj
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:

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.