Program liczący silnie - błąd

Program liczący silnie - błąd
P2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 138
0
Kopiuj
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
class Silnia
{
      private:
              int n;
      public:
             void wstawn(int);
             int pokazn();
             void oblicz();
             
            
};
void Silnia::wstawn(int x)
{
n=x;     
}
int Silnia::pokazn()
{
    return n;
}
void Silnia::oblicz()
{
    int suma=1;
    for(int i=1;i<=n;i++)
    {
            suma=suma*i;
    }
}
int main(void)
{
    
    int dodaj;
    Silnia obiekt;
    obiekt.oblicz();
    cout<<"Wprowadz silnie do policzenia"<<endl;
    cin>>dodaj;
    obiekt.wstawn(dodaj);
    int n=obiekt.pokazn();
    obiekt.oblicz(obiekt.n);
    cout<<"Twoj wynik to:"<<obiekt.oblicz()<<endl;
}

 

Gdzie jest błąd

CC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
0

Po pierwsze.

Kopiuj
   obiekt.oblicz(obiekt.n);

metoda oblicz nie przyjmuje zadnych wartosci.
po drugie :

Kopiuj
   cout<<"Twoj wynik to:"<<obiekt.oblicz()<<endl;

metoda oblicz nie zwraca zadnych wartosci.

po trzecie : pole n jest prywatne.

P2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 138
0
Kopiuj
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
class Silnia
{
      private:
              int n;
      public:
             void wstawn(int);
             int pokazn();
             int oblicz(int);
       
             
            
};
void Silnia::wstawn(int x)
{
n=x;     
}
int Silnia::pokazn()
{
    return n;
}
int Silnia::oblicz(int n)
{
    int suma=1;
    for(int i=1;i<=n;i++)
    {
            suma=suma*i;
    }
    return suma;
}

int main(void)
{
    
    int dodaj;
    Silnia obiekt;
    cout<<"Wprowadz silnie do policzenia"<<endl;
    cin>>dodaj;
    obiekt.wstawn(dodaj);
    int n=obiekt.pokazn();
    
    
   
} 

Teraz już lepiej, teraz kwestia wyświetlenia wyniku...

Pozdrawiam!

CC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
0

Ten kod jest bez sensu...

Spojrz

Kopiuj
    int dodaj; // tworzysz zmienna dodaj
    Silnia obiekt; // tworzysz obiekt
    cout<<"Wprowadz silnie do policzenia"<<endl;
    cin>>dodaj; // przypisujesz wartosc do zmiennej dodaj
    obiekt.wstawn(dodaj); // przypisujesz wartosc do pola n
    int n=obiekt.pokazn(); // // przypisujesz wartosc n z obiektu do innej zmiennej

Jaki w tym sens? A nie wyspisuje wyniku bo tam nigdzie nie ma zeby wypisalo.

P2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 138
0

Możesz pomóc?

CC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
0

Mogę. A w czym konkretnie?

P2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 138
0

Co mam poprawić w kodzie :)

CC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
0
Kopiuj
Ma to byc klasa?

#include <conio.h>
#include <iostream.h>
class Silnia
{
      private:
              int n;
      public:
             void wstawn(int);
             int pokazn();
             int oblicz(int);
       
             
            
};
void Silnia::wstawn(int x)
{
n=x;     

}
int Silnia::pokazn()
{
    return n;
}
int Silnia::oblicz()
{
    int suma=1;
    for(int i=1;i<=this.n;i++)
    {
            suma=suma*i;
    }
    return suma;
}

int main(void)
{
    
    int dodaj;
    Silnia obiekt;
    cout<<"Wprowadz silnie do policzenia"<<endl;
    cin>>dodaj;

    obiekt.wstawn(dodaj);
cout<<obiekt.oblicz();
    
    
    
   }

Tak by to wyglalo. Uzywanie klasy w tym przypatku jest zupelnie zbędne i bezcelowe. I zdecydowanie za duzo masz metod, ktore nie sa ci raczej potrzebne.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.