Instrukcja wielokrotnego wyboru

0
#include <iostream>
#include <iomanip>
#include <cmath>
#include <math.h>
#include <conio.h>


using namespace std;

int main()
{
int do_switcha;
double p,l,r;
cout<<"Wpisz dlugosc promienia kola: ";
cin >> r;
	if (r>0)
		{
			p=M_PI*(r*r );
    		l=2*(M_PI*r); 
        	cout << "Pole kola wynosi: " << p <<endl;
        	cout << "Obwod kola wynosi: " << l <<endl;
    	}
    if(r<0)
    {
    	cout<<"Liczba ujemna"<<endl;
        cout << "Czy chcesz wpisac te liczbe jeszcze raz? 0 - Nie chce, 1 - Chce" << endl;
        cin >> do_switcha;
       
        switch(do_switcha)
        {
        	case(0):
          	  break;
			case(1): 
			cout<<"Wpisz liczbe"<<endl;
            cin >> r;
        	if(r>0)
        	{
        		p=M_PI*(r*r );
    			l=2*(M_PI*r); 
				cout << "Pole kola wynosi: " << p <<endl;
        		cout << "Obwod kola wynosi: " << l <<endl;
          			break;
    		}
        }
    }
    if(r==0) 
    {
        cout << "Nie sa to liczby wieksze od 0" << endl;
        cout << "Czy chcesz wpisac te liczbe jeszcze raz? 0 - Nie chce, 1 - Chce" << endl;
        cin >> do_switcha;
        switch(do_switcha)
        {
        case(0):
            break;
        case(1):
        	cout<<"Wpisz liczbe"<<endl;
            cin >>r;
            p=M_PI*(r*r );
    		l=2*(M_PI*r); 
			cout << "Pole kola wynosi: " << p <<endl;
        	cout << "Obwod kola wynosi: " << l <<endl;
            break;
        }
    }
getch();
return 0;
}

		
	

Witam, napisałem taki oto programik, działa jak należy, poza jednym małym wyjątkiem, kiedy wpisze np. "ala ma kota" program się pyta czy chce wpisać jeszcze raz, wciskam 1, a następnie kończy działanie co nie powinno mieć miejsca, ma ktoś pomysł jak to naprawić?

0

If wykonuje się raz, może pętla ?

(fajny nick mi się wylosował)

1

Google ci się zepsuł?
Zabezpieczenie przed wpisywaniem liter

Zobacz jak krótko da się zapisać przy znacznie wygodniejszym dla użytkownika korzystaniu:

#include <iostream>
#include <cmath>
using namespace std;
 
int main()
  {
   while(true)
     {
      cout<<"Wpisz dlugosc promienia kola (!-Koniec): ";
      double r;
      if(cin>>r)
        {
         cout<<"Pole kola wynosi: "<<M_PI*r*r<<endl;
         cout<<"Obwod kola wynosi: "<<2*M_PI*r<<endl<<endl;
        }
      else
        {
         cin.clear();
         if(cin.get()=='!') return 0;
         cout<<"Niepoprawne wprowadzenie"<<endl<<endl;
        }
      while(cin.get()!='\n') {}
     }
  }
0

Nie mam bladego pojęcia, jak zastosować pętlę while, przy kodzie który napisałem, aby działał poprawnie

0

No to przeczytaj post wyżej i będziesz miał blade pojęcie. Dalej jakiś kursik przeczytać i będzie lepiej.

0

Ostatnie pytanie, to co napisałeś, wszystko działa, lecz jak teraz do tego "podpiąć" to, aby liczby ujemne także uwzględniano w programie

0
  1. Nie powinieneś nic uwzględniać wszystko zostanie policzone poprawnie (ujemny promień też ma pewien sens)
  2. Jeżeli twoja wiedza matematyczna nie dopuszcza ujemnych wartości obwodu to możesz użyć funkcji fabs
  3. Zawsze możesz dodać instrukcje if - ale to naprawdę bez sensu, ponieważ jeżeli użytkownik wpisał tego minusa to znaczy że coś miał na myśli.
0

Nie w liceum, tu wszystko musi być dodatnie, nauczyciel zastrzegł sobie, że program musi być na liczby ujemne (jeśli ją wpisze, program powinien zapytać czy chce wpisać ponownie). Tak samo jeśli wpisze słowo. W tym kodzie co napisałeś, nie ważne co JA napisze, zawsze wykonuje Twój kod, dlaczego i jakbym mógł zrobić, aby wykonywało to co ja napiszę?

0

Jakiego słowa nie zrozumiałeś w pkt 3?

0

Po prostu chciałbym, aby liczby ujemne były zakwalifikowane jako te, złe, dla których nie ma pola i obwodu, a nie wiem jak zrobić to w tym kodzie, który Ty napisałeś, przyjąłem, że ten pierwotny, który napisałem w pierwszym poście jest po prostu zły i z niego nie korzystam.

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