Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C++ Instrukcja Wyboru


Rekomendowane odpowiedzi

Opublikowano

#include <iostream>
#include <cmath>
using namespace std;


int main()
  {
   while(true)
     {
      cout<<"Wpisz dlugosc promienia kola: ";
      double r;
      if(cin>>r)
        {
         cout<<"Pole kola wynosi: "<<M_PI*r*r<<endl;
         cout<<"Obwod kola wynosi: "<<2*M_PI*r<<endl<<endl;
         break;
        }
      else
        {
         cin.clear();
         if(cin.get()=='!') return 0;
         cout<<"To nie sa liczby"<<endl<<endl;
        }
      while(cin.get()!='\n')
      {
       if (r<0)
       cout <<"Liczba ujemna"<<endl;
      }
     }
  }

Witam, muszę napisać program, który oblicza pole i obwód koła, co widać wyżej, program musi reagować na na liczby ujemne, jednak w moim kodzie nie reaguje, ponieważ za każdym razem, kiedy próbuje to zrobić przestaje działać odporność na wyrazy. Program także musi pytać czy chcę wpisać liczbę ponownie, itp.

Opublikowano
int main()
{
    const double M_PI = 3.14159;
    float r;
    while(cin >> r)
    {
         if( 0 > r)
            cout << "liczba ujemna" << endl;

        else
        {
            cout << "Pole kola wynosi: " << M_PI*r*r << endl;
            cout << "Obwod kola wynosi: "<< 2*M_PI*r<<endl<<endl;

        }
    }
    return 0;
}

petla while sama w sobie teraz wczytuje tylko liczby, jak dasz napis to petla zostanie pominieta i kolejna instrukcja wykonana czyli w tym przypadku return 0

 

ja sam stworzylem M_PI bo jakos nie chce mi jej czytac nawet z biblioteka cmath ale jak tobie dziala to usun sobie ta zmienna

Opublikowano
#include <iostream>
#include <iomanip>
#include <cmath>
#include <math.h>
#include <conio.h>
using namespace std;
int main()
{
float r;
int do_switcha;
cout<<"Wpisz dlugosc promienia kola: ";
    while(cin>>r)
    {
        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;
				}	
		}
        else
        {
            cout << "Pole kola wynosi: " << M_PI*r*r << endl;
            cout << "Obwod kola wynosi: "<< 2*M_PI*r<<endl<<endl;
			break;
        }
    }
    return 0;
}

 

Dalej to samo,  jeśli raz wpiszę liczbę ujemną i zapyta mnie czy wpisać po raz następny i wpiszę liczbę ujemną to kończy program.

Opublikowano
    {
         	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;
			}
		
        	else

Czemu wyskakuje mi błąd że brakuje ifa przed else? Pomysł jak to rozwiązać?

 

bo w złym miejscu jest else. po ifie dałes switcha,  więc nie zadziała. zacznij formatować kod to będziesz wiedział czemu nie działa.

Opublikowano

jeżeli tak bardzo chcesz mieć tego switcha, to wstaw go do tego ifa co sprawdzasz czy ujemna i przy 1 tylko wypisz komunikat, nie wczytuj liczby bo petla nie zostanie przerwana

 

 

 float r;
    int do_switcha;
    const double M_PI = 3.14159;
    cout<<"Wpisz dlugosc promienia kola: ";
    while(cin>>r)
    {
        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;
                    break;
                }

        }
        else
        {
            cout << "Pole kola wynosi: " << M_PI*r*r << endl;
            cout << "Obwod kola wynosi: "<< 2*M_PI*r<<endl<<endl;
            break;
        }
    }
Opublikowano

Jak mam to zastosować, przepraszam za tak bezsensowne pytania, jednak nigdy wcześniej tego nie robiłem

ale chcesz żeby mógł powtórzyć jeżeli nie jest liczba? jeżeli tak to musisz dodać warunek:

 

 if(!cin.good())
        {
            cin.clear();
            cin.sync();
            cout << "Wpisz dlugosc promienia kola: ";
            continue;
        }

 

najlepiej na poczatku pętli.

 

a jeżeli ma wyjść z programu to nic nie trzeba zmieniać

Opublikowano


#include <iostream>

#include <iomanip>

#include <cmath>

#include <math.h>

#include <conio.h>

using namespace std;

int main()

{

float r;

int do_switcha;

cout << setw(57) << setfill(' ') <<"Program Liczacy Pole i Obwod Kola\n\n"<<endl;

cout<<"Wpisz dlugosc promienia kola: ";

while(cin>>r)

{

if(!cin.good())

{

cin.clear();

cin.sync();

cout << "Wpisz dlugosc promienia kola: ";

continue;

}

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;

break;

}

}

else

{

cout << "Pole kola wynosi: " << M_PI*r*r << endl;

cout << "Obwod kola wynosi: "<< 2*M_PI*r<<endl<<endl;

break;

}

}

cout<<"Zakoncz wciskajac dowolny przycisk"<<endl;

getch();

return 0;

}

Opublikowano
#include <iostream>
#include <iomanip>
#include <cmath>
#include <math.h>
#include <conio.h>
using namespace std;
int main()
{
float r;
    int do_switcha;
    cout << setw(57) << setfill(' ') <<"Program Liczacy Pole i Obwod Kola\n\n"<<endl;
    cout<<"Wpisz dlugosc promienia kola: ";
    while(cin>>r)
    {
    	if(!cin.good())
        	{
	            cin.clear();
	            cin.sync();
	            cout << "Wpisz dlugosc promienia kola: ";
	            continue;
        	}
	        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;
	                    break;
	                }
				}
	        else
	        {
	            cout << "Pole kola wynosi: " << M_PI*r*r << endl;
	            cout << "Obwod kola wynosi: "<< 2*M_PI*r<<endl<<endl;
	            break;
	        }
    }
    cout<<"Zakoncz wciskajac dowolny przycisk"<<endl;
getch();
return 0;
}

k, cos mi dzis myslenie nie idzie.

 

zamien

while(cin >>r)
na 
while(true)

pod tym

 

cin >> r

i ten warunek.

 

wygląda to tak:

 

 while(true)
    {
    cin >> r;
        if(!cin.good())
           {
               cin.clear();
               cin.sync();
                cout << "Wpisz dlugosc promienia kola: ";
                continue;
           }

        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;
                break;
            }

        }
        else
        {
            cout << "Pole kola wynosi: " << M_PI*r*r << endl;
            cout << "Obwod kola wynosi: "<< 2*M_PI*r<<endl<<endl;
            break;
        }
    }
Opublikowano

Przepraszam, że znowu pytam, jednak mam problem, jeśli wpiszę liczbę ujemną, i chcę zakończyć program (wciskając 0) nic się nie dzieje, mógłbym tak w nieskończoność, według mojego mózgu wszystko jest okej, a jednak nie jest :/ 

#include <iostream>
#include <iomanip>
#include <cmath>
#include <math.h>
#include <conio.h>
using namespace std;

int main()
{
float r;
    int do_switcha;
    cout << setw(57) << setfill(' ') <<"Program Liczący Pole i Obwód Koła\n\n"<<endl;
    cout<<"Wpisz długość promienia koła: ";
    while(true)
    {
    	cin>>r;
    		if(!cin.good())
        		{
	            	cin.clear();
	            	cin.sync();
	            	cout <<"To nie jest liczba! "<<endl;
	            	cout <<"Czy chcesz wpisać tę liczbę jeszcze raz? 0 - Nie chcę, 1 - Chcę\n";
	            	cin>>do_switcha;
	                switch(do_switcha)
	                {
	                case 0:
	                    break;
	                case 1:
	                    cout<<"Wpisz długość promienia koła"<<endl;
	                    break;
	                }
	            	continue;
        		}
	        if (r<0)
	        	{
	                cout<<"Liczba ujemna"<<endl;
	                cout <<"Czy chcesz wpisać tę liczbę jeszcze raz? 0 - Nie chcę, 1 - Chcę" << endl;
	                cin>>do_switcha;
	                switch(do_switcha)
	                {
	                case 0:
	                    break;
	                case 1:
	                    cout<<"Wpisz długość promienia koła"<<endl;
	                    break;
	                }
				}
	        else
	        {
	            cout <<"Pole koła wynosi: "<< M_PI*r*r << endl;
	            cout <<"Obwód koła wynosi: "<< 2*M_PI*r<<endl<<endl;
	            break;
	        }
    }
    cout<<"Zakończ wciskając dowolny przycisk"<<endl;
getch();
return 0;
}

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...