• 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.

Object Storage Arubacloud
+1 głos
1,371 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,824 wizyt
0 głosów
4 odpowiedzi 3,945 wizyt
pytanie zadane 14 października 2015 w C i C++ przez spvce Początkujący (260 p.)
0 głosów
2 odpowiedzi 371 wizyt
pytanie zadane 21 czerwca 2015 w C i C++ przez caramelleandamour Użytkownik (550 p.)

92,568 zapytań

141,422 odpowiedzi

319,641 komentarzy

61,957 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!

...