C - problem z małym kalkulatorem

0

Witam. Jestem bardzo początkującym programistą i napisałem program w C, który chciałbym, żeby miał 2 opcje:
1-Równanie kwadratowe (pierwiastki, delta itp)
2-Zwyczajne działania na a i b

Jeśli chodzi o pierwszą opcję wszystko działa okej, lecz w tej drugiej zaczynają się problemy takie jak:
-coś pewnie popieryłem z funkcją if, bo na dobrą sprawę moge tylko wybrać opcję pierwszą, jak wybieram opcję 2 to nie mogę nic specjalnego tam wpisać. Problem polega na tym że jak wybieram funkcje 1 czyli równanie kwadratowe i skończę je obliczać to automatycznie załącza się opcja 2, gdzie należy wpisać a i b oraz wybraż działanie. Nie potrafie sobie z tym poradzić a siedze dosyć długo dlatego jestem zmuszony poprosić Was o pomoc. Chcę oczywiście, aby po wykonaniu funkcji kwadratowej program się wyłączył ( nie od razu), i żeby działała opcja numer dwa.

Poniżej wklejam mój kod:

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

int wybor;
float a, b, c, delta, pierwiastek, x, x1, x2;

int main(void)
{
printf("Wybierz opcje:\n1-Funkcja kwadratowa\n2-Dzialania z dwoma operandami\n") ;
scanf("%d", &wybor);

if(wybor==1)

printf("Podaj a: ");
scanf("%f", &a);
printf("Podaj b: ");
scanf("%f", &b);
printf("Podaj c: ");
scanf("%f", &c);

x =-b/(2*a);
delta = (b*b)-4*a*c;
pierwiastek = sqrt(delta);
printf("Delta tej funkcji kwadratowej wynosi %f\n", delta);

		if(delta < 0) printf ("Rownanie kwadratowe nie posiada pierwiastkow\n");

        else if(delta == 0) {

                printf("Pierwiastek z delty tej funkcji kwadratowej wynosi %f\n", pierwiastek);
                printf("Jedyny pierwiastek tej funkcji kwadratowej wynosi %f\n", x);
        }
        else if(delta > 1) {

                x1=(-b-pierwiastek)/(2*a);
                x2=(-b+pierwiastek)/(2*a);
                printf("Pierwiastek z delty tej funkcji kwadratowej wynosi %f\n", pierwiastek);
                printf("Pierwszy pierwiastek x1 tej funkcji kwadratowej wynosi %f\n\n", x1 );
                printf("Drugi pierwiastek x2 tej funkcji kwadratowej wynosi %f\n\n", x2);
        }




if(wybor==2) ;

printf("Podaj a: ");
scanf("%f", &a);
printf("Podaj b: ");
scanf("%f", &b);

printf("Wybierz dzialanie:\n1-Dodawanie\n2-Odejmowanie\n3-Mnozenie\n4-Dzielenie\n5-Kwadrat liczby a\n6-Kwadrat liczby b\n7-Szescian liczby a\n8-Szescian liczby b\n");
scanf("%d", &wybor);

		if(wybor==1) printf("Suma a(%f) i b(%f) wynosi %f", a, b, a+b);
		if(wybor==2) printf("Roznica a(%f) i b(%f) wynosi %f", a, b, a-b);
		if(wybor==3) printf("Iloczyn a(%f) i b(%f) wynosi %f", a, b, a*b);
		if(wybor==4) printf("Iloraz a(%f) i b(%f) wynosi %f", a, b, a/b);
		if(wybor==5) printf("Kwadrat a(%f) wynosi %f", a, a*a) ;
		if(wybor==6) printf("Kwadrat b(%f) wynosi %f", b, b*b) ;
		if(wybor==7) printf("Szescian a(%f) wynosi %f", a, a*a*a) ;
		if(wybor==8) printf("Szescian b(%f) wynosi %f", b, b*b*b) ;

return 0;
} 

Bardzo proszę o pomoc i z góry dziękuję

0

z funkcją if

if nie jest funkcją, a konstrukcją języka.

if(wybor==1)
 
printf("Podaj a: ");
scanf("%f", &a);
printf("Podaj b: ");
scanf("%f", &b);
printf("Podaj c: ");
scanf("%f", &c);

Ten kod jest równoważny temu:

if (wybor == 1)
{
 printf("Podaj a: ");
}

scanf("%f", &a);
printf("Podaj b: ");
scanf("%f", &b);
printf("Podaj c: ");
scanf("%f", &c);

To samo tutaj:

if(wybor==2) ;
 
printf("Podaj a: ");
scanf("%f", &a);
printf("Podaj b: ");
scanf("%f", &b);

==

if (wybor == 2)
{
 ;
}

printf("Podaj a: ");
scanf("%f", &a);
printf("Podaj b: ");
scanf("%f", &b);
0

Na pierwszy rzut mojego niedoświadczonego oka:

  1. To, co masz pomiędzy
if(wybor==1)

... a if(wybor==2)

 nie powinno być w nawiasach klamrowych? Pierwsza opcja Tobie chodzi, bo pierwszy warunek "zadziała" tylko na linijkę <code class="c">printf("Podaj a: ");

, a dalej program idzie, czy wybór będzie 1, czy 10.
2) Tak samo od

if(wybor==2)

(przy okazji - zaplątał Ci się chyba niepotrzebny średnik na końcu tej linii) do chyba return 0

.
0

Dodałem nawiasy klamrowe i dokonałem kilku poprawek, wszystko niby działa :) jedyny problem jaki wciąż mam to to, że i po 1 i po 2 wykonanym działaniu program natychmiastowo się wyłącza, nie zdązy się nawet odczytać wyników, wiecie, jak wyeliminować taki problem?
Dziękuję za poprzednie podpowiedzi

0

Skorzystaj z normalnego środowiska podtrzymującego konsolę lub uruchamiaj te programy osobno z konsoli.

0

A czy jest możliwość, aby użyć getch() ? Właśnie po to żeby się od razu nie wylączał program? Próbowałem ją gdzieś wcisnąć ale nic nie wyszło, więc może wy mi doradzicie.

edit: już rozkminiłem, jeszcze raz wielkie dzięki za pomoc :)

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