Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Potęgowanie z funkcją i pętlą

Ostatnio zmodyfikowano 2015-10-19 16:13
Autor Wiadomość
fifa7
Temat założony przez niniejszego użytkownika
Potęgowanie z funkcją i pętlą
» 2015-10-13 15:47:13
Witam, jestem (bardzo) początkującym programistą i chciałbym się dowiedzieć dlaczego mój kod potęgujący liczby nie działa i otrzymać ewentualne wskazówki jak zrobić żeby wszystko działało. Co do kodu: p-podstawa w-wykładnik a-powiedzmy... liczba pomocnicza

C/C++
#include <iostream>

using namespace std;

int p, w, a;

int potega( int p, int w )
{
    a = p;
    while( w, w == 0, w-- )
    {
        cout << "p*a   " << p * a << endl;
        cout << "p   " << p << endl;
        cout << "w   " << w << endl;
    }
    return p;
}

int main()
{
    cin >> p;
    cin >> w;
   
    potega( p, w );
    cout << "main   " << p << endl;
}
P-138508
michal11
» 2015-10-13 15:57:55
Masa błędów.
1. niepotrzebne zmienne globalne.
2. argumenty twojej funkcji potega() zakrywają zmienne globalne, czyli działasz na zmiennych lokalnych.
3. Kod w pętli while(która swoja droga ma jakąś dziwna konstrukcję, pewnie pomyliło ci się z for) niż konkretnego oprócz wypisywania nie robi.
4. Jak już wywołujesz funkcję która coś zwraca to wypadałoby gdzieś ta wartość zapisać ( do zmiennej)

Najlepiej napisz ten program od początku, przeczytaj kurs na tej stronie dot. pętli, funkcji i operacji matematycznych.
W twojej funkcji main() powinna być deklaracja 3 zmiennych p , i wynik. Wczytujesz dane do zmiennych p i w. Następnie do zmiennej wynik przypisujesz wartość z funkcji potega()
int wynik = potega( p, w );
. Na koniec możesz sobie ten wynik wypisać.
Funkcja potega() jest zadeklarowana poprawnie. W środku zadeklaruj sobie jakąś zmienna pomocnicza na wynik, następnie skorzystaj z pętli for która w razy będzie mnożyła wynik przez p, coś takiego
wynikPom = wynikPom * p;
 (Nie zapomnij o przypisaniu na początku zmiennej wynik wartości 1), i z tej funkcji potega musisz zwrócić zmienną wynikPom.
P-138509
fifa7
Temat założony przez niniejszego użytkownika
» 2015-10-13 16:40:20
Widzę że brakuje mi wiedzy. Dużo wiedzy. Przejdę kurs z tej strony od początku. Wcześniej uczyłem się z YT, z kursu C++ Pana Mirosława Zelenta, ale szybciej i lepiej nauczę się z tekstu. Dzięki za pomoc.
P-138513
mateczek
» 2015-10-13 18:53:53
Jako podstawowy etap nauki polecam debuger !!!
np w google wpisać "youtube debuger codeblock". lub zamiast codeblock inne środowisko którego używasz !!!

C/C++
#include <iostream>
using namespace std;

int potega( int liczba, int wykladnik ) {
    int wynik = 1;
    for( int i = 1; i <= wykladnik; i++ ) {
        //w pierwszej iteracji wynik będzie równy 1
        wynik = wynik * liczba; // tutaj mnożymy wynik przez liczbę. A wartość mnożenia zapisujemy z powrotem do zmiennej wynik
    } //pętla wykona się tyle razy ile wskazuje wykładnik
    return wynik;
}
int main()
{
    cout << potega( 3, 4 ) << endl;
}

Choć do nauki zawsze przyda się jakiś przykład. Gdy się już posiedziało nad materiałem naprawdę warto zobaczyć jak inni to robią !!!
P-138521
C-Objective
» 2015-10-19 16:13:52
Zapraszam do lektury na http://opensource.apple.com​/source/Libm/Libm-315/Source​/ARM/powf.c, to może zobaczysz na co się tak naprawdę porywasz.
P-138883
« 1 »
  Strona 1 z 1