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

Kompilator podaje mi na jednym komputerze poprawny wynik za to na innym błędny

Object Storage Arubacloud
+1 głos
302 wizyt
pytanie zadane 10 maja 2017 w C i C++ przez Bish0p Obywatel (1,940 p.)
edycja 10 maja 2017 przez Bish0p
#include <iostream>
#include <math.h>
using namespace std;
int liczba,potega ;
int wartosc_potegi(int wartosc)
{
   wartosc=pow(liczba,potega);
  return wartosc;
}
int main()
{
  cout <<"Podaj liczbe ktora bedziesz chcial potegowac ";
   cin >>liczba ;
  cout <<"Podaj wartosc potegi ";
   cin >>potega ;
  cout<<wartosc_potegi(potega) ;


    return 0;

Jeden program dwa komputery i dwa rożne wyniki i taka sytuacja zdażyła mi sie już drugi raz i jestem ciekaw czy czegoś nie uwzględniłem w programie czy błąd leży gdzieś indziej 

Z góry dziękuje

 

komentarz 10 maja 2017 przez Bish0p Obywatel (1,940 p.)
przeniesione 10 maja 2017 przez draghan
Mało widać na tych screenach wiec powiem ze działanie 5^3 dla jednego komputera to 125 a dla drugiego 124

2 odpowiedzi

+1 głos
odpowiedź 10 maja 2017 przez RobertGardzinski Bywalec (2,460 p.)
wybrane 16 maja 2017 przez Bish0p
 
Najlepsza

http://www.cplusplus.com/reference/cmath/pow/

Wychodzi na to, że niezależnie od wersji C++ pow zwraca wynik typu zmiennoprzecinkowego. Komputer od wyniku 124 może obcinać wynik tej funkcji np. 124,999999 rzutuje na int 124. Spróbuj może zaokrąglić wynik 

// tę linijkę
wartosc=pow(liczba,potega);
// zmień np. na:
wartosc=round(pow(liczba,potega));

Poza tym oczy mi krwawią jak czytam Twój kod. 

Szybki refactor:
 

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

int main()
{
    cout <<"Podaj liczbe ktora bedziesz chcial potegowac ";
    cin >>liczba;
    cout <<"Podaj wartosc potegi ";
    cin >>potega;
    cout<<round(pow(liczba, potega));
 
 
    return 0;
}

 

0 głosów
odpowiedź 12 maja 2017 przez andrut Użytkownik (870 p.)
A może używasz dwóch różnych kompilatorów? Musiałbyś sobie sprawdzić ich wersje...
Ja tak miałem, że na jednym komputerze otrzymywałem różne wyniki w zależności do tego czy kompilowałem w CodeBlocks czy w Sublime Text z podpiętym MinGW.

Oba komputery są na Windowsie?
komentarz 16 maja 2017 przez Bish0p Obywatel (1,940 p.)
Tak oba są na windowsie

Podobne pytania

0 głosów
1 odpowiedź 345 wizyt
pytanie zadane 30 marca 2016 w C i C++ przez Chajol Początkujący (290 p.)
0 głosów
0 odpowiedzi 502 wizyt
0 głosów
1 odpowiedź 217 wizyt
pytanie zadane 25 grudnia 2018 w C i C++ przez Karol098 Nowicjusz (140 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

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

...