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

Zabezpieczenie liczby ujemnej

VPS Starter Arubacloud
0 głosów
1,261 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ź 784 wizyt
pytanie zadane 16 stycznia 2020 w C i C++ przez PaaaV Nowicjusz (140 p.)
0 głosów
0 odpowiedzi 175 wizyt
pytanie zadane 21 czerwca 2018 w C i C++ przez FaloY Bywalec (2,180 p.)
0 głosów
3 odpowiedzi 625 wizyt
pytanie zadane 26 marca 2018 w C i C++ przez kracjan122 Początkujący (370 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...