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

Prosty programik, potegi liczb.

Object Storage Arubacloud
0 głosów
412 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 216 wizyt
+1 głos
1 odpowiedź 301 wizyt
0 głosów
1 odpowiedź 285 wizyt
pytanie zadane 9 sierpnia 2018 w Java przez DedenN Początkujący (400 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!

...