Pomoc w programie C++

Pomoc w programie C++

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

RU
  • Rejestracja:około 5 lat
  • Ostatnio:około 5 lat
  • 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;
}
edytowany 3x, ostatnio: Rutex
AK
Błagam Cię, chociaż to zrób sam
RU
@AnyKtokolwiek no od 30 min próbuje i nie wychodzi do ch##a, robię ciągle if (a < 0) i nie działa, daj jakaś radę
AK
Bez pokazania co robisz, i ewentualnie jakie masz błedy, nie da się
RU
  • Rejestracja:około 5 lat
  • Ostatnio:około 5 lat
  • 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:prawie 7 lat
  • Ostatnio:około miesiąc
  • 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 {

   ....
}

Bo C to najlepszy język, każdy uczeń ci to powie
enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:2 dni
  • Postów:1027
1

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

RA
  • Rejestracja:ponad 9 lat
  • Ostatnio:3 miesiące
  • 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 ;) " ;

Samouk. Początkujący. C++, C#.NET.
edytowany 2x, ostatnio: Radziu
RA
ps. jeszcze pozostaje kwestia jak ktoś wpisze zero.

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.