Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Coś nie rozumiem czy o co chodzi ? O.o problem z potęgowaniem


Ziomalxxz

Rekomendowane odpowiedzi

Opublikowano

Witam mam problem jeśli wpisze na przykład 625  to program potęgując 10 do 2 potęgi da mi wynik 99 ? Co jest nie tak ?

/*ZADANIE 14
Napisz program stwierdzajšcy, czy liczba koñczy siê swoim pierwiastkiem?*/

#include<iostream>
#include<cstdio>
#include<cmath>
 using namespace std;
 int main(){
    int n,cyfra,dlugosc=0,pozorny_pierwistek,wartosc_dlugosci=0;
    cout<<"Podaj liczbe: ";
    cin>>n;
    cout<<endl;
    int pierwiastek;
    cyfra=n%10;
    pierwiastek=sqrt( n );
    cout<<"Pierwiastek wynosi: "<<pierwiastek<<endl;
    int zapas=pierwiastek;
    while(zapas>0){
        zapas/=10;
        dlugosc++;
    }
    wartosc_dlugosci=pow(10, dlugosc);
    cout<<wartosc_dlugosci<<" wartosc dlugosci "<<dlugosc<<"<--- testy"<<endl;;
    pozorny_pierwistek=n%wartosc_dlugosci;
    cout<<pozorny_pierwistek<<" <--- test"<<endl;
    if(pozorny_pierwistek==pierwiastek)
        cout<<"liczba konczy sie swoim pierwiastkiem";
    else
        cout<<"liczba nie konczy sie swoim pierwiastkiem";
 	getchar();
 	getchar();
 	return 0;
 }

Opublikowano

Problemem jest to, że w standardzie C++ nie ma funkcji std::pow przyjmującej dwa całkowitoliczbowe argumenty.

Czyli std::pow zwraca w tym przypadku double.

Jeśli chcesz mieć dokładne wyniki to musisz taką napisać samemu.

 

Jedyne czego nie rozumiem to to, że po wypisaniu std::pow(10, 2) jako double (czyli oryginalny zwracany typ) wartość wynosi dokładnie 100. Jednak podczas zaokrąglania pojawia się jakiś problem i liczba jest zaokrąglana do 99.

Nawet std::floor na tej liczbie daje 100.

 

tego np nie rozumiem

#include<iostream>
#include<cmath>

int main()
{
    std::cout << std::pow(10, 2) << '\n';
    std::cout << (int)std::pow(10, 2) << '\n';
    std::cout << std::floor(std::pow(10, 2)) << '\n';
    std::cout << (int)std::floor(std::pow(10, 2)) << '\n';
}

Opublikowano

@Sopelek997

W VS Twój kod daje 4x100, jakiego kompilatora używasz?

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

gcc 4.7.2 bodajże

Dziwne, że daje inne wyniki.

 

Nie miałem wtedy czasu, żeby to dokładnie przeanalizować, potem jeszcze może siądę do tego.

Opublikowano

W Twoim programie nie wykrywa 625 jako pierwiastka. Nie rozumiem tego algorytmu, więc go nie naprawię. Takie coś wyskrobałem, powinno być ok.

#include<iostream>
#include<cstdio>
#include<cmath>
 using namespace std;
 int main(){
    int n, pierwiastek, pomoc, dlugosc=0;
    cout<<"Podaj liczbe: ";
    cin>>n;
    pierwiastek=sqrt( n );
    pomoc = n - pierwiastek;
    do
    {
        pierwiastek = pierwiastek/10;
        dlugosc++;
    } while (pierwiastek>0);
    if (pomoc%dzielnik==0)
        cout<< "Liczba konczy sie swoim pierwiastkiem.";
    else cout<< "Liczba nie konczy sie swoim pierwiastkiem.";

    //cout<< endl <<"Dlugosc pierwiastka: "<<pow(10,dlugosc);
  getchar();
  getchar();
  return 0;
 }

 

1517585546.png

 

Daj + za internet :D

Opublikowano

Możesz używać też powf i wtedy nie musisz dodawać (float).

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...