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

Prosty programik, potegi liczb.

Mały hosting, OGROMNE możliwości
0 głosów
785 wizyt
pytanie zadane 22 kwietnia 2016 w C i C++ przez marcin8352 Nowicjusz (230 p.)

Witam, rozpoczynam swoja przygode z programowaniem i chcialem napisac programik ktory podnosi dowolna liczbe do dowolnej potegi. Programik zawsze zwraca wartosc zero, domyslam sie ze blad moze byc w 2giej funkcji albo w wywolaniu. Prosze o pomoc. Pozdrawiam.

 

#include <iostream>

using namespace std;

int potegowanie(int liczba)          // podniesienie do kwadratu
{
    int wynik;
    wynik=liczba*liczba;
    return wynik;
}

int ilosc_poteg(int liczba1,int liczba)   // wielokrotne uzycie funkcji potegowanie
{
    int odp;
        for(int i=0;i<liczba1; i++)
    {
          potegowanie(liczba);
    }
    return odp;
}

int main()
{
    int a,b;
    cout<<"Podaj liczbe ktora chcesz potegowac."<<endl;
    cin>>a;
    cout<<"Podaj do ktorej potegi chcesz ja podniesc."<<endl;
    cin>>b;

    cout<<ilosc_poteg(b,a);

    return 0;
}

 

3 odpowiedzi

+2 głosów
odpowiedź 22 kwietnia 2016 przez Boshi VIP (100,240 p.)
inicjujesz zmienną lokalną odp i ją zwracasz bez żadnych operacji na  niej.
0 głosów
odpowiedź 23 kwietnia 2016 przez pakopaw Użytkownik (820 p.)

No i nigdzie nie przechwytuje wartości zwracanej przez funkcję potegowanie(). Szczerze to nie rozumiem zamysły tego kodu, w jaki sposób chcesz np. policzyć sześcian jakiejś liczby wykorzystując przy tym kwadrat tej liczby. Chyba najlepiej zrobić pętlę z mnożeniem przez tą liczbę (przy potędze 0 nie wejdzie w tą pętlę i zwróci wynik 1):

int ilosc_poteg(int liczba1,int liczba)
{
	int odp = 1;
	for(int i=0;i<liczba1; i++)
	{
		odp *= liczba;
	}
	return odp;
}


A naprawdę jest na to gotowiec:

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

int main()
{
    int a,b;
    cout<<"Podaj liczbe ktora chcesz potegowac."<<endl;
    cin>>a;
    cout<<"Podaj do ktorej potegi chcesz ja podniesc."<<endl;
    cin>>b;
 
    cout<<pow(a,b);
 
    return 0;
}

(lepszy byłby typ zmiennoprzecinkowy)

0 głosów
odpowiedź 23 kwietnia 2016 przez adas94 Nałogowiec (29,200 p.)

Pierwsza i podstawowa sprawa jest taka, że zbudowałeś funkcję potegowanie, która ma zwracać inta, a kiedy jej używasz to nie jest do żadnego przypisana.  Masz tam w powietrzu potegowanie(liczba) zamiast odp = potegowanie(liczba).

Sprawa druga jest taka, że Twój program dobrze policzy wynik tylko dla kwadratu liczb, ponieważ źle zbudowałeś funkcję potegowanie.

 

Przerobiłem Twój kod na poprawny 

#include <iostream>

using namespace std;


int potega(int a,int b)
{
    int wynik =1;
    for (;b>0;b--) {
        wynik *= a;
    }
    return wynik;
}

int main()
{
    int a,b;
    cout<<"Podaj liczbe ktora chcesz potegowac."<<endl;
    cin>>a;
    cout<<"Podaj do ktorej potegi chcesz ja podniesc."<<endl;
    cin>>b;

    int wynik = potega(a,b);

    cout<< wynik << endl;

    return 0;
}

 

Podobne pytania

+1 głos
2 odpowiedzi 442 wizyt
+1 głos
1 odpowiedź 533 wizyt
0 głosów
1 odpowiedź 598 wizyt
pytanie zadane 9 sierpnia 2018 w Java przez DedenN Początkujący (400 p.)

93,715 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,258 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...