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

question-closed C++ prosty programik

Object Storage Arubacloud
0 głosów
592 wizyt
pytanie zadane 24 kwietnia 2016 w C i C++ przez MrSqoobany Początkujący (460 p.)
zamknięte 28 kwietnia 2016 przez draghan

Witam, jestem tu nowy i piszę z prośbą o pomoc w programie. Otóż stworzyłem prosty programik "wielozadaniowy", lecz po uruchomieniu opcji 2 (Kalkulator) robi się bałagan (liczy dobrze, lecz po obliczeniu nie robi tego co chcę tj. zamyka się). Czy mógłby mnie ktoś naprowadzić jak powinno to wyglądać? Oraz chciałbym dowiedzieć się w jaki sposób wrócić do początku programu (do wyboru). Pozdrawiam.

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
	int wybor;
	double a, przelicznik;
	std::cout << "Witaj znow, co bys chcial?\n";
	std::cout << "1.Przelicznik z metrow na centymetry\n";
	std::cout << "2.Kalkulator\n";
	std::cout << "3.Pierwiastki funkcji kwadratowej\n";
	std::cout << "4.Wyjscie\n";
	std::cout << "Wybierz numer od 1 do 4 :) ";
	std::cin >> wybor;

	switch (wybor)
	{
	case 1:
		{
			std::cout << "Podaj dlugosc w metrach, ktora ma byc przeliczona na centymetry\n";
			std::cin >> a;
			if (a <= 0)
			{
				std::cout << "Podaj liczbe wieksza od zera!\n";
			}
			else
			{
				przelicznik = a * 100;
				std::cout << "\nDlugosc wynosi " << przelicznik << " centymetrow.\n";
			}
		}
	break;
	case 2:
	{
		float x, y;
		int wybor2;
		std::cout << "Podaj pierwsza liczbe: ";
		std::cin >> x;
		std::cout << "\nPodaj druga liczbe: ";
		std::cin >> y;
		std::cout << "KALKULATOR:\n";
		std::cout << "5.Dodawanie\n";
		std::cout << "6.Odejmowanie\n";
		std::cout << "7.Mnozenie\n";
		std::cout << "8.Dzielenie\n";
		std::cout << "Co chcesz zrobic? Wybierz liczbe od 5 do 8: ";
		std::cin >> wybor2;
		switch (wybor2)
		{
		case 5:
		{
			std::cout << "Suma wynosi: " << x + y;
		}
		break;
		case 6:
		{
			std::cout << "Roznica wynosi: " << x - y;
		}
		break;
		case 7:
		{
			std::cout << "Mnozenie wynosi: " << x*y;
		}
		break;
		case 8:
		{
			std::cout << "Dzielenie wynosi: " << x / y;
		}
		break;
		default:
		{
			system("pause");
		}
		}
	}
	case 3:
	{
		float ax2, bx, c, delta, pierw1, pierw2, pierw0;
		std::cout << "Podaj wspolczynniki funkcji kwadratowej: \n";
		std::cout << "a= ";
		std::cin >> ax2;
		std::cout << "\nb= ";
		std::cin >> bx;
		std::cout << "\nc= ";
		std::cin >> c;
		delta = bx*bx - 4 * ax2*c;
		if (delta > 0)
		{
			pierw1 = (-bx - sqrt(delta) / 2 * ax2);
			pierw2 = (-bx + sqrt(delta) / 2 * ax2);
			std::cout << "Pierwszy pierwiastek wynosi: " << pierw1;
			std::cout << "\nDrugi pierwiastek wynosi: " << pierw2;
		}
		else if (delta = 0)
		{
			pierw0 = -bx / 2 * ax2;
			std::cout << "Pierwiastek wspolny wynosi: " << pierw0;
		}
		else(delta < 0);
		{
			std::cout << "Nie ma pierwiastkow rownania :<";
		}
	}
	break;
	case 4:
	{
		return 0;
	}
	break;
	default:
		std::cout << "Nie ma takiego numeru na liscie! ";
		}
	system("pause");
	}

 

komentarz zamknięcia: Problem rozwiązany.

2 odpowiedzi

+2 głosów
odpowiedź 24 kwietnia 2016 przez Dash Nałogowiec (29,650 p.)
wybrane 28 kwietnia 2016 przez draghan
 
Najlepsza
Po case2 w "menu" programu nie dałeś break. To chyba to może być powodem. Jeżeli chcesz żeby całość po skończonej operacji wracała na ekran główny, otocz wszystko pętlą while. Po zakończeniu programu, zamiast wykonać return, przeskoczy na samą góre i zacznie od nowa. Możesz ewentualnie użyć sterowania goto:, ale nie radzę, łeb Ci inni programiści ukręcą.
komentarz 24 kwietnia 2016 przez MrSqoobany Początkujący (460 p.)
Dzięki wielkie za pomoc ! :)
+1 głos
odpowiedź 24 kwietnia 2016 przez adas94 Nałogowiec (29,200 p.)
Użyj do-while, na końcu w while dajesz while(wybor!=4), więc nawet nie musisz w case 4 mieć returna, bo program sam Ci wyjdzie z pętli jak będzie 4.

Dodatkowo każdego case'a którego stworzyłeś zrób w osobnych funkcjach, a pod samym case'm dajesz np dodawanie();

W ten sposób stworzysz przejrzystszy kod i poćwiczysz funkcje.
komentarz 24 kwietnia 2016 przez adas94 Nałogowiec (29,200 p.)
edycja 24 kwietnia 2016 przez adas94

Na prośbę o pomoc w tym co to funkcje i jak się ich używa : 

 

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

using namespace std;


void metryNaCm ()
{
    int dlugosc;
    cout << "Podaj dlugosc w metrach" << endl;
    cin >> dlugosc;
    cout << "dlugosc wynosi " << dlugosc*100 << "cm" << endl;
}

void kalkulator ()
{
    float x,y;
    int wybor;

    cout << "Podaj 1 liczbe " ;
    cin >> x;
    cout <<"\nPodaj 2 liczbe ";
    cin >> y;

    cout << "\n 1. Dodawanie" << endl;
    cout << "2.Odejmowanie" << endl;
    cin >> wybor;
    switch (wybor)
    {
        case 1:
            cout << "Suma wynosi " << x+y;
            break;
        case 2:
            cout << "Roznica wynosi " << x-y;
            break;
    }
}

void pierwFunkcji ()
{
    float a,b,c,delta;
    cout << "Podaj wspolczynniki funkcji :" <<endl;
    cout << "a: ";
    cin >> a;
    cout << "b: ";
    cin >> b;
    cout << "c: ";
    cin >> c;
    if (a==0)
        cout << "To nie jest funkcja kwadratowa ";

    delta = b*b - (4*a*c);
    if (delta > 0)
    {
        float p1,p2;
        p1 = (-b - sqrt(delta)/(2*a));
        p2 = (-b + sqrt(delta)/(2*a));

        cout << "P1 = " << p1;
        cout << "P2 = " << p2;

    } else if (delta == 0)
    {
        float p1;
        p1 = -b/ (2*a);
        cout << "P1 = " << p1;
    } else
    {
        cout << "Delta mniejsza od 0, brak rozwiazan w zbiorze liczb rzeczywistych";
    }

}

int main()
{
     int wybor;

     do {
        cout << "\nWitaj w menu" << endl;
        cout << "1.Przelicznik z metrow na centymetry" << endl;
        cout << "2. Kalkulator" << endl;
        cout << "3. Pierwiastki funkcji kwadratowej"<< endl;
        cout << "4. Wyjscie\n";

        cin >> wybor;

        switch (wybor)
        {
            case 1:
                metryNaCm();
                break;
            case 2:
                kalkulator();
                break;
            case 3:
                pierwFunkcji();
                break;
            default:
                break;
        }
     } while (wybor<4);  // przy okazji zabezpieczenie zeby wychodzil jesli wieksze niz 4





    return 0;
}

 

Podobne pytania

+1 głos
1 odpowiedź 301 wizyt
0 głosów
3 odpowiedzi 651 wizyt
pytanie zadane 15 sierpnia 2018 w Inne języki przez Misiek Mądrala (5,300 p.)
0 głosów
3 odpowiedzi 413 wizyt
pytanie zadane 22 kwietnia 2016 w C i C++ przez marcin8352 Nowicjusz (230 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!

...