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

Pierwiastek stopnia "n" a funkcja pow.

VPS Starter Arubacloud
+1 głos
1,562 wizyt
pytanie zadane 21 kwietnia 2016 w C i C++ przez Mick_SQ6IYV Obywatel (1,020 p.)

Witam!

Szukałem na forum odpowiedzi na moje pytanie, ale jakoś nie znalazłem satysfakcjonującej odpowiedzi. Zaznaczam, że jestem początkującym programistą, więc proszę o cierpliwość i zrozumienie.

Postanowiłem napisać kalkulator, który ma obliczać cztery podstawowe działania, podnosić do potęgi, liczyć pierwiastki stopnia "n", rozwiązywać układ równań 2x2 i wyznaczać miejsca zerowe funkcji kwadratowej. Wszystko działa bardzo ładnie, poza jednym fragmentem. Kiedy użytkownik wpisuje liczbę pierwiastkowaną i stopień pierwiastka, to komputer podaje wynik... 1. Poniżej wspomniany fragment kodu:

 

double a, k;
int pomocnicza;
cout << "Z jakiej liczby wyciagamy pierwiastek: ";
cin >> a;
cout << "Jakiego stopnia jest pierwiastek: ";
cin >> pomocnicza;
k=(1/pomocnicza);
cout << "Pierwiastek stopnia " << pomocnicza << " z liczby " << a << " wynosi " << pow(a,k) << "." << endl;

Czy ktoś ma pomysł z czego wynika taki stan rzeczy? Dziękujęsmiley

3 odpowiedzi

0 głosów
odpowiedź 21 kwietnia 2016 przez criss Mędrzec (172,590 p.)
wybrane 26 kwietnia 2016 przez Mick_SQ6IYV
 
Najlepsza

A jak wpiszesz do pomocniczej 1, to wypisuje to, co wpisałeś do a, prawda? :P Wypisuje dobrze, bo podnosisz do potęgi 0.

1 to obiekt tymczasowy typu int. Zamień tą jedynke na 1.0 (double), albo 1.f (float) i powinno dzielić "normalnie".

0 głosów
odpowiedź 21 kwietnia 2016 przez falauthy Stary wyjadacz (11,550 p.)
int pomocnicza;

jest wartością całkowitą. Wysuń z tego wniosek.

komentarz 21 kwietnia 2016 przez Mick_SQ6IYV Obywatel (1,020 p.)
Typ int odpowiada za liczby całkowite, stopień pierwiastka jest liczbą naturalną, więc wydaje mi się, że to powinno być ok. Czy dobrze rozumiem, że w tym przypadku zmienna pomocnicza powinna mieć też typ double?
komentarz 21 kwietnia 2016 przez falauthy Stary wyjadacz (11,550 p.)
Domyślnie kompilator dla wszystkich zmiennych przyjmuje wartość int. Gdy spotkają się dwa typy danych, to kompilator zawsze wyciąga int. Zmień na double i zobacz jaki wyjdzie wynik.
komentarz 21 kwietnia 2016 przez draghan VIP (106,230 p.)

Domyślnie kompilator dla wszystkich zmiennych przyjmuje wartość int. Gdy spotkają się dwa typy danych, to kompilator zawsze wyciąga int. Zmień na double i zobacz jaki wyjdzie wynik.

...?

0 głosów
odpowiedź 22 kwietnia 2016 przez Mick_SQ6IYV Obywatel (1,020 p.)

Po zmianie z typu int na double wyskoczył mi taki błąd:

[Error] invalid operands of types 'double' and int to binary 'operator%'

Wynika on stąd, że kawałek wcześniej sprawdzam, czy aby ktoś nie próbuje mi wyciągać pierwiastka stopnia parzystego z liczby ujemnej. Całość kodu odpowiedzialna za pierwiastkowanie wygląda tak:

	int pomocnicza;
    			cout << "Z jakiej liczby wyciagamy pierwiastek: ";
    			cin >> a;
    			cout << "Jakiego stopnia jest pierwiastek? (JEZELI KWADRATOWY, TO WPISZ  2  ): ";
    			cin >> pomocnicza;
    			if((a<=0)&&(pomocnicza%2==0))
				{
					cout << "Probujesz policzyc pierwiastek z liczby ujemnej !!!" << endl << endl << endl;
				}
				else
				{
					double c=(1.0/pomocnicza);
					double pierwiastek = pow(a,c);
					cout << "Pierwiastek stopnia " << pomocnicza << " z " << a << " = " << pierwiastek << endl << endl << endl;
				}
				break;


Po powrocie do int pomocnicza i wstawieniu 1.0 zamiast 1 w zmiennej c program powiedział, że pierwiastek 3 stopnia ze 125 to 5 (uffflaugh) a nie 1 (o zgrozo...wink ).

 

Teraz będę musiał zapanować nad wyciąganiem pierwiastków nieparzystego stopnia z liczb ujemnych, bo to kuleje... Dziękuję za pomoc smiley

Podobne pytania

0 głosów
1 odpowiedź 7,961 wizyt
0 głosów
4 odpowiedzi 4,127 wizyt
pytanie zadane 14 października 2015 w C i C++ przez spvce Początkujący (260 p.)
0 głosów
2 odpowiedzi 460 wizyt
pytanie zadane 21 czerwca 2015 w C i C++ przez caramelleandamour Użytkownik (550 p.)

92,950 zapytań

141,909 odpowiedzi

321,131 komentarzy

62,284 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...