Program liczący silnie - błąd

0
#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

0

Po pierwsze.

   obiekt.oblicz(obiekt.n);

metoda oblicz nie przyjmuje zadnych wartosci.
po drugie :

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

metoda oblicz nie zwraca zadnych wartosci.

po trzecie : pole n jest prywatne.

0
#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!

0

Ten kod jest bez sensu...

Spojrz

    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.

0

Możesz pomóc?

0

Mogę. A w czym konkretnie?

0

Co mam poprawić w kodzie :)

0
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.

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