Potęgowanie liczby wprowadzonej z klawiatury

Odpowiedz Nowy wątek
2018-11-08 22:15
0

Za pomoc będę bardzo wdzięczny

Napisz funkcję, która dostaje jako argumenty nieujemne liczby całkowite n i m, z których co najmniej jedna jest różna od zera, i zwraca jako wartość n^m. Jeżeli drugi z argumentów nie zostanie podany, funkcja powinna zwrócić wartość n^2

int power(int m, int n = 2) 
{
    if ((m > 0 && n > 0 ) && (m != 0 || n !=0))
    {
        return pow(n, m);
    }
}
int main(void)
{
    int n,m,wynik;
    cout<<"Napisać n:";
    cin>>n;
    cout<<"Napisać m:";
    cin>>m;
    wynik=power(n,m);
    cout<<"wynik:"<<wynik;
}
edytowany 4x, ostatnio: furious programming, 2018-11-08 22:36

Pozostało 580 znaków

2018-11-08 22:26
0

1.W definicji parametrów funkcji oraz dla m i n użyj uint zamiast int, wówczas w power() wystarczy ci warunek na != 0
2.W mainie wywołując power() chyba pomyliłeś kolejność argumentów.
3.W przypadku kiedy oba parametry power są zerami funkcja mimo wsio powinna coś zwrócić, albo cisnąć wyjątkiem.
4.Popraw formatowanie nim twój post dorwie @furious programming :]


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 1x, ostatnio: MasterBLB, 2018-11-08 22:27

Pozostało 580 znaków

2018-11-08 22:31
0

zrobiłem, ale to nie działa. czy możesz mi w tym pomóc? Jeżeli drugi z argumentów nie zostanie podany, funkcja powinna zwrócić wartość n^2

unsigned int pot(int n, int m = 2) 
{
    int p=1;
    if(n==0)
    return 0;
    for(int i=1;i<=m;i++)
    p*=n;
    return p;
}
int main(void)
{
    int n,m,wynik;
    cout<<"Napisać n:";
    cin>>n;
    cout<<"Napisać m:";
    cin>>m;
    wynik=pot(n,m);
    cout<<"wynik:"<<wynik;
}
edytowany 2x, ostatnio: furious programming, 2018-11-08 22:35
Wrzucaj kod w znaczniki kolorujące składnię – ```cpp przed kodem, a po kodzie samo ``` - furious programming 2018-11-08 22:35

Pozostało 580 znaków

2018-11-08 22:44
0

Wstępna wersja była całkiem OK, wymagała tylko drobnych przeróbek

int power(uint n, uint m = 2) 
{
    if (m != 0 || n !=0) // dzięki użyciu uint a nie int liczby te są traktowane zawsze jako dodatnie, więc warunek można uprościć
    {
        return pow(n, m);// to jest całkiem dobra funkcja biblioteczna robiąca potęgowanie. Użycie domyślnej wartości dla parametru m funkcji power powoduje, że w przypadku wywołania power(3) dostaniesz to, co chcesz.
    }
    //coś wypada zwrócić jak oba parametry są zerami, np -1 aby oznaczyć błąd
    return -1;
}

jeśli jednak nie możesz skorzystać z gotowego pow() to czeka się nauka działania pętli for(;;)


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]

Pozostało 580 znaków

2018-11-08 22:51
0

Kumam to
co powinienem napisać na int main ()

Pozostało 580 znaków

2018-11-08 23:01
0

Generalnie wywołać power(parametr1, parametr2). Ten szkielet main() co masz jest znośny, ale jako ćwiczenie się zmodyfikuj go tak, aby po podaniu podstawy wpierw się pytał, czy chcesz podać wykładnik, czy ma użyć domyślnie kwadratu. Jeśli użytkownik odpowie że chce, to wywołujesz power(m, n); i wypisujesz wynik, jeśli nie to dajesz power(m); a n samo się przerobi na 2


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]

Pozostało 580 znaków

2018-11-08 23:04
0

czy możesz mi wyjaśnić kod?

Pozostało 580 znaków

2018-11-08 23:05
0

Zrobiłem to wcześniej, ale to nie działa

Pozostało 580 znaków

2018-11-08 23:06
0

A co kokretnie wymaga wyjaśnień?


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]

Pozostało 580 znaków

2018-11-08 23:12
0
int main(void)
{
    int n,m,wynik;
    cout<<"Napisać n:";
    cin>>n;
    cout<<"Napisać m:";
    cin>>m;
if(m!=''CR"){
    wynik=power(n);
    cout<<"wynik:"<<wynik;
}else {
 wynik=power(n,m);
    cout<<"wynik:"<<wynik;
}
 
}
edytowany 1x, ostatnio: furious programming, 2018-11-08 23:32
@furious programming: zbesztaj go! Ino nie każ mu parametrów z argc i argv pobierać :P - MasterBLB 2018-11-08 23:28
Niektórym można 100x zwracać uwagę, a i tak będą robić swoje. PS: bardzo śmieszne. :P - furious programming 2018-11-08 23:32
Przy okazji wyszło, że zamiast cudzysłowu użył dwóch apostrofów. - furious programming 2018-11-08 23:32

Pozostało 580 znaków

2018-11-08 23:24

No już prawie. Po lekkiej korekcie będzie:

#include <iostream>
#include <cmath>
 
using namespace std;
 
int power(unsigned int n, unsigned int m = 2) 
{
    if (m != 0 || n !=0) // dzięki użyciu unsigned int a nie int liczby te są traktowane zawsze jako dodatnie, więc warunek można uprościć
    {
        return pow(n, m);// to jest całkiem dobra funkcja biblioteczna robiąca potęgowanie. Użycie domyślnej wartości dla parametru m funkcji power powoduje, że w przypadku wywołania power(3) dostaniesz to, co chcesz.
    }
    //coś wypada zwrócić jak oba parametry są zerami, np -1 aby oznaczyć błąd
    return -1;
}
 
int main()
{
 
    int n,m,wynik;
 
    cout<<"Podaj podstawę potęgi:";
    cin>>n;
 
    char addExp;
    cout<<"Czy chcesz podać wykładnik?(t/n):";
    cin >> addExp;
    if(addExp = 'n')
    {
        wynik=power(n);
    }
    else
    {
        cout << "Podaj wykładnik potęgi:";
        cin>>m;
        wynik=power(n,m);
    }
 
    cout<<"Wynik:"<< wynik;
 
    return 0;
}

https://onlinegdb.com/SJTjPVzam


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 1x, ostatnio: MasterBLB, 2018-11-08 23:38

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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