• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zabezpieczenie liczby ujemnej

Object Storage Arubacloud
0 głosów
1,273 wizyt
pytanie zadane 10 listopada 2018 w C i C++ przez KonDZIKs Bywalec (2,770 p.)

Witam :)
Mam pytanie zrobiłem program na obliczenie objętości i chciałem zabezpieczyć boki przez wpisywaniem liczb ujemnych. Wymyśliłem coś takiego lecz to nie zdaje egzaminu nie wiem zbytnio dlaczego. Chciałem zrobić cos w stylu ,że jeżeli sprawdzi ,że bok a ma wartosc dodatnia to przechodzi do boku b i analogicznie cały program. Lecz wyświetla tylko "Podaj bok b trapezu" po czym "Objetosc graniastoslupa o podstawie trapezu jest rowna: -0".

Kod:

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <cstdlib>

using namespace std;

int main()
{
    for(;;)
   {
    double a,b,boka,bokb,wysg,wyst,v;
    int a1,b1,wybor;


    cout <<"-----Wybierz dzialanie-----" << "\n";
    cout <<"1.Dzielenie" << "\n";
    cout <<"2.Potegowanie" << "\n";
    cout <<"3.Wartosc bezwzgledna" << "\n";
    cout <<"4.Podzielnosc liczb" << "\n";
    cout <<"5.Objetosc graniastoslupa" << "\n";
    cout <<"6.Zakoncz" << "\n";

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


        switch(wybor)
        {
            case 1:
                {
                    cout << "Podaj liczbe: ";
                    cin >> a;
                    cout << "Podaj liczbe: ";
                    cin >> b;
                    if (b==0)
                        cout <<"Nie dziel przez 0";
                        else
                        cout <<"Wynik dzielenia: " << a/b;
                }
            break;

            case 2:
                {
                cout << "Podaj liczbe: ";
                cin >> a;
                   cout <<"Wynik potegowania: " << pow(a,2);
                }
            break;

            case 3:
                {
                    cout <<"Podaj liczbe: ";
                    cin >>a;
                    cout <<"Wynik wartosci bezwzglednej: " << fabs(a);
                }
            break;

            case 4:
                {
                    cout <<"Podaj liczbe: ";
                    cin >>a1;
                    cout <<"Podaj liczbe: ";
                    cin >>b1;
                    if(a1%b1 == 0)
                        cout << "\nLiczby sa podzielne przez siebie.";
                        else
                        cout << "Liczby nie sa podzielne przez siebie";
                }
            break;

            case 5:
                {
                    if(boka >=0){
                    cout <<"Podaj bok a trapezu: ";
                    cin >> boka;
                    }
                    else if (bokb >=0){
                    cout <<"Podaj bok b trapezu: ";
                    cin >> bokb;
                    }
                    else if (wyst >=0){
                    cout <<"Podaj wysokosc trapezu: ";
                    cin >> wyst;
                    }
                    else if (wysg >=0){
                    cout <<"Podaj wysokosc graniastoslupa: ";
                    cin >> wysg;
                    }
                    else cout <<"Bok nie moze byc ujemny";
                    v=((boka+bokb)/2)*wyst*wysg;
                    cout <<"Objetosc graniastoslupa o podstawie trapezu jest rowna: " << v;

                }
            break;

            case 6:
                {
                    exit(0);
                }
            break;

            default: cout <<"Nie ma takiej opcji.";
        }
        getchar();getchar();
        system("cls");
    }




}

 

1 odpowiedź

0 głosów
odpowiedź 10 listopada 2018 przez Maciej Złotorowicz Gaduła (4,230 p.)
wybrane 12 listopada 2018 przez KonDZIKs
 
Najlepsza

To co robisz (if-else) oznacza że gdy boka jest >= 0 to zapytasz obok trapezu a następnie wczytasz boka. Warunek powinieneś sprawdzać później. dodatkowo użycie if-else działa tak ze w wypadku gdy 1 warunek jest false to sprawdzi 2 itd prawidłowym rozwiązaniem jest 

do {
				cout << "Podaj bok a trapezu: ";
				cin >> boka;
			} while (boka < 0);

Musisz wstawić to zamiast if'a działa to tak że wykonuje zapytanie do czasu aż nie poda się liczby >= 0. 

komentarz 12 listopada 2018 przez KonDZIKs Bywalec (2,770 p.)
edycja 12 listopada 2018 przez KonDZIKs
Dziękuję za wytłumaczenie :D

A jeszcze pytanie jak dodać napis (gdy wartosc jest ujemna): Wartosc nie może być ujemna.
komentarz 13 listopada 2018 przez Maciej Złotorowicz Gaduła (4,230 p.)
Można dodać odpowiedni warunek w ifie między while a cin

Podobne pytania

0 głosów
1 odpowiedź 817 wizyt
pytanie zadane 16 stycznia 2020 w C i C++ przez PaaaV Nowicjusz (140 p.)
0 głosów
0 odpowiedzi 181 wizyt
pytanie zadane 21 czerwca 2018 w C i C++ przez FaloY Bywalec (2,180 p.)
0 głosów
3 odpowiedzi 656 wizyt
pytanie zadane 26 marca 2018 w C i C++ przez kracjan122 Początkujący (370 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...